/Image-Segmentation-Auto-Labeling

for Autonomous Driving and Real-time Object Detection

Primary LanguageJupyter Notebook

KETI Project (20230309~202308)

Image-Segmentation, Auto Labeling

for Autonomous Driving and Real-time Object Detection

  • 한국통신학회 투고, accepted
    • PanopticFCN 모델 기반 스크래치 학습과 전이 학습 비교 및 성능 분석
    • 실외 공장 이미지 데이터셋을 이용한 PanopticFCN 모델의 성능 분석

Image_segmentation_process

OneFormer: One Transformer to Rule Universal Image Segmentation

Panoptic Segmentation on Cityscapes

keti1 keti2 keti3

Use RectLabel(macOS) Segmentation Tool

image

Oneformer panoptic task ouput image


Install

CUDA 11.1 + Torch 1.9

pip install torch==1.9.0+cu111 torchvision==0.10.0+cu111 torchaudio==0.9.0 -f https://download.pytorch.org/whl/torch_stable.html

Install detectron2

https://dl.fbaipublicfiles.com/detectron2/wheels/cu111/torch1.9/index.html

Install natten

pip3 install natten==0.14.2 -f https://shi-labs.com/natten/wheels/cu111/torch1.9/index.html


구현 완료

  • Pre-segmentation using SOTA
    • detectron2, oneformer 모델 구현
    • oneformer 기반 pre-labeling json 파일 출력 코딩 완료
  • RectLabel Modification
    • oneformer json output interaction 구현 완료 (coco dataset format)
    • RectLabel Tool 사용법 공부
    • RectLabel에서 "import coco json file"으로 Import Json 가능
    • json 파일 자동으로 전체 이미지 파일에 대해 매칭하는 부분 구현 완료
  • Labeling Guideline
    • 현재 가이드라인 작성 완료
    • 프로그램 동작하면서 error/노하우 정리 추가 에정
  • PanopticFCN input json/images 생성
    • PanopticFCN DeepLab 모델 코드 분석
    • input json/images 형태로 변환 코드 작성 (Python)
    • InstanceIds.png / color.png / labelIds.png 생성
    • InstanceIds.png ->
      RectLabel에서 Export한 all_objects.png (indexed color mask images using class ID) + coco.json (annotations/counts 정보)
    • color.png 생성 완료
    • labelIds.png 생성 완료
  • 자동화 스크립트 생성
    • main.py 완료
    • instance_pixel_all_object_multi.py 수정 -> instance.py 완료
    • Screenshots png + polygon.json -> create_RGBA.py 완료
      • Screenshots은 원본 이미지의 RGB값을 가져옴, 레이블링한 이미지의 RGB값으로 매칭필요
  • Unlabeled 매핑
    • 중복으로 labeling된 부분은 어떻게 처리? -> 둘 중 한 개의 객체로 자동 labeling됨
  • 외부 업체 레이블링 요청
    • 훈련 맞춤 파일 이름 변경 -> rename.py 완료

1. Pre-segmentation using OneFormer Model

  • (input) sample img -> (output) OneFormer_coco

    run oneformer_convert_coco_json.ipynb

    • RectLabel import할 coco json 생성
    • OneFormer 모델 (Panoptic Segmentation 높은 정확도)

2. Panoptic FCN input img & json

  • (input) Polygon json -> (output) Color

    run create_RGBA_multi.py (X)

    run Main/create_RGBA.py

    • gtFine_color.png 생성
    • 투명도 포험, 파일 이름 변경
  • (input) All objects & RectLabel_coco json -> (output) InstanceIds

    run instance_pixel_all_object_multi.py

    run Main/instanceIds.py

    • gtFine_instanceIds.png 생성
    • 사람, 자동차 등 (인스턴스 구분 가능한) 객체들 카테고리 ID 입력
  • (input) All objects -> (output) LabelIds

    run rename.py

    run Main/main.py

    • gtFine_labelIds.png 생성
    • 파일 이름 변경
  • (input) Labelme json -> (output) Polygon json

    run create_FCN_json.ipynb & run check_polygons_error.py

    run Main/main.py

    • gtFine_polygons.json 생성

Main 실행

  • python instanceIds.py <이미지 폴더 경로> <JSON 파일 경로>
  • python main.py <이미지 폴더 경로>
  • python create_RGBA.py <Polygon 폴더 경로>
  • python rename.py <날짜>