AI데이터 구축 일자리 참여 바로가기

보행 가능 구역 인식 모델

소개
  • Semantic Segmentation을 사용하여 인도와 차도 영역 등을 구분해 내는 시각 장애인을 위한 보행자 구역 감지 프로토타입 모델입니다. 
  • 자전거도로, 주의구역, 횡단보도, 점자블록, 차도, 인도까지 총 6개 구역을 구분해 낼 수 있으며 각각 주황색, 빨간색, 보라색, 노란색, 파란색, 초록색으로 나타납니다.
  • 40,000장의 train set, 2,000장의 validation set을 사용하였으며, 2day학습으로 mIoU 77.29%에 도달하였습니다.
  • 시각장애인 안내 AI를 만들어 화제가 된 고등학생 개발자 가 데이터 획득의 어려움을 인도보행영상 데이터 구축사업을 통해 해소하였습니다.
필요성
  • 장애인은 인도위에서 많은 위험에 노출되어 있다. 시각 장애인의 경우 이동체, 계단, 인도의 단절 등을 시각으로 인지하지 못합니다.
    지체 장애인의 경우 불법 적치물 및 파손된 노면에 의해 이동에 어려움을 겪고는 합니다.
    해당 서비스를 통해 보행 장해 요소 및 보행 가능 구역을 파악해 안내한다면 그 위험을 획기적으로 감소 시킬 수 있습니다.
     
원본 데이터
  • 보행 가능 구역 인식 모델은 AI 학습데이터 구축 사업 중 인도보행영상 데이터를 사용하였습니다.
  • 인도보행영상 데이터는 90만장의 인도보행사진 데이터를 Bounding Box, Polygon, Surface Masking, Depth Prediction 등 4가지 형태로 가공하여 만들어졌습니다. 
  • 해당 서비스는 그 중 Surface Masking 데이터를 이용하였으며 Surface Masking 데이터는 총 5만장 존재하고, 인도의 노면이 총 21가지 종류로 분류 및 가공되었습니다.
  • (alley@crosswalk, alley@damaged, alley@normal, 
    alley@speed_bump, bike_lane,
    braille_guide_blocks@damaged, braille_guide_blocks@normal,
    caution_zone@grating, caution_zone@manhole,
    caution_zone@repair_zone, caution_zone@stairs,
    caution_zone@tree_zone, roadway@crosswalk, 
    roadway@normal, sidewalk@asphalt, sidewalk@blocks
    sidewalk@cement, sidewalk@damaged, sidewalk@other
    sidewalk@soil_stone, sidewalk@urethane)
  • 너무 많은 종류를 모두 학습시키기에는 프로토타입 개발에 어려움이 있어 자전거도로, 주의구역, 횡단보도, 점자블록, 차도, 인도까지 총 6가지 종류로 태깅을 통합 및 제외하여 학습에 이용하였습니다.
     
사용 방법
  •  코드 실행을 통해 마스킹 된 이미지를 만들 수 있습니다.
    - modules/utils/surface_dataset_tools/surface_polygon.py
    - modules/utils/surface_dataset_tools/split_dataset.py
image
  • 데이터셋 구조를 아래와 같이 설정하여야 합니다.

├── annotations

│   ├── *.xml

├── images

│   ├── *.jpg

├── masks

│   ├── *.png

├── train.txt

└── valid.txt
  • python package를 설치하고 settings.py를 일부 변경 합니다.

Install Anaconda3 [https://www.anaconda.com/distribution/]
conda create ml
conda activate ml
conda install conda
conda install pytorch torchvision cudatoolkit=10.1 -c pytorch
pip install tensorboardx, matplotlib

 

  • settings.py
Designate dataset directory

...

elif dataset == 'surface':

    root_dir = '/home/super/Projects/dataset/surface6'

...
  • train.py를 실행합니다. - On Windows: python train.py
    - On Linux: python3 train.py
    - On multi-gpu: 
      CUDA_VISIBLE_DEVICES=0,1,2,3 python3 train.py