보행 가능 구역 인식 모델
소개
- 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

- 데이터셋 구조를 아래와 같이 설정하여야 합니다.
├── 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