본문 바로가기
  • think normal
새로워지기/사이드 프로젝트

시각 지능 | 신호등 신호 분류기( feat. yolo v8, roboflow 데이터 증강)

by 청춘만화 2023. 10. 3.

벌써 두 달? 지난 프로젝트를 연휴를 빌어 이제야 포스팅해 본다.. 

 

서울 ICT이노베이션스퀘어는 매년 수많은 온오프라인 강의를 제공해주고 있다. 덕분에 무료로 다양하고 양질의 교육들을 수강할 수 있었다. 특히 퇴근하며, 퇴근해서 온라인으로 들을 수 있다는 점이 매우 매력적이다. 전에도 인공지능 수업을 들었던 적이 있었던 터라 이번엔 최종 프로젝트가 포함한 시각지능 고급과정을 신청했다. 개발 분야가 다 그렇겠지만 인공지능 쪽은 유난히 빨리 바뀌고 있어서, 경쟁률이 많아서 혹시나 했는데.. 다행히 수강할 수 있는 기회를 얻을 수 있어서 좋은 배움이 되었다. 

 

이번 과정에서는 세 분의 강사님(, 개인적으로는 교수님이라 부른다)의 강의를 들을 수 있었다. 첫번째 교수님의 Artificial - intelligence에 대한 기본적인 개념, 파이썬 기본, open CV에 대한 실습을 시작으로 Image Classification, Object Detection, RNN에 대한 이론과 예제를 실습했다.

이전에도 많은 도움이 되었지만( 특히 지난 수업에는 그동안 발행되었던 시대별 인공지능 논문들에 대해 매우 상세한 리뷰를 진행해 주셨었다! 완전 귀한 시간! -> 당시 정리했던 노션 노트), 

 

paper AI

study NOTE

www.notion.so

이번에는 데이터 수집부터 라벨링, 모델 학습 및 서비스 배포까지 할 수 있어서 너무 유익했다!!!

이번 수업의 최종 프로젝트는 신호등의 신호 분류기었다. 이미지 업로드는 90% 이상의 인식률을 보였지만 실시간 인식은 50% 정도였다. 비록 완전한 배포 버전으로 완성하지는 못했지만 열흘 남짓, 퇴근 후 두 명으로 진행했던 프로젝트치곤 나름- 개인적으로는 ㅎㅎㅎ 만족스러운 결과였다. 

데이터 수집, 라벨링, 데이터 증강, 모델학습은 내가 담당하고 함께 해주신 분께서는 모델 적용 웹 배포, 실시간 모바일 웹 배포 및 결과 영상촬영 등을 담당해주셨다. 사실상 개발자셨던 팀원 분께 숟가락을 얹은 느낌적인 느낌 ^ ^/  그렇게 진행된 일부 내용과 결과물 링크를 남겨본다.

 


프로젝트 진행은 보편적인  ML-WorkFlow로 진행되었다. 

1. Topic selection

신호등 이미지의 신호 인식

신호등 신호 분류기 Ideation sketch
 
 
 
2. Problem Definition
( 사회) 시각 장애인들을 위한 신호 안내 시스템 대부분이 유명무실한 상황이하고 한다( 뉴스 검색).

( 기술) AI분야, 대부분의 데이터셋들이 자동차의 시점으로 수집, 학습, 활용되고 있어 정작 도보를 이용하는 사람의 시각에서 수집되고 있는 데이터의 수가 매우 적다. 

 

3. Data Collection
(공공 데이터) 리서치 : AI hub01, ETRI 데이터셋, AI hub02 
(직접 촬영) 동일 지점에 대해 밤(400장)  과 낮(300장) 시간 촬영, 녹색/ 빨강 각각 한 벌로 촬영(밤에는 빛 번짐이 있어서 100장 정도 추가로 학습 진행)

 

4. Data Preprocessing 
처음 레이블링은 수업시간 실습했던 label studio( 오프라인-로컬 구 버전: https://github.com/HumanSignal/labelImg) 로 진행함. 당시 yolo v5로 학습했는데 결과가 만족스럽지 않아 데이터 증강을 해야 할 필요성을 느낌. 관련 내용을 찾던 중 roboflow을 알게 됨. 이미 다른 툴로 라벨링했던 데이터도 활용가능하다는 점과 데이터 증강을 정말 빠르고 쉽고 무료로 할 수 있다는 것이 매우 매우 좋았음. 덕분에 700장의 데이터를 x3배 증강할 수 있었고 추가적으로 다양한 이미지 변형을 줄 수 있었음. 

 

GitHub - HumanSignal/labelImg: LabelImg is now part of the Label Studio community. The popular image annotation tool created by

LabelImg is now part of the Label Studio community. The popular image annotation tool created by Tzutalin is no longer actively being developed, but you can check out Label Studio, the open source ...

github.com

 

Open Source Data Labeling | Label Studio

A flexible data labeling tool for all data types. Prepare training data for computer vision, natural language processing, speech, voice, and video models.

labelstud.io

 

Roboflow: Give your software the power to see objects in images and video

With just a few dozen example images, you can train a working, state-of-the-art computer vision model in less than 24 hours.

roboflow.com

 

5. Modeling & Evaluation
일단 관련 레퍼런스를 리서치해봄.
결과적으로 yolo를 채택. 처음엔 로컬 기반으로 진행함. 캐라스를 사용할 수 있는 yolo v3을 기반으로 진행하다가 v3에서는 신호등은 인식을 잘하는데 신호 인식이 낮은 것 같아서 모델 학습에 대한 개발 환경을 코랩( T4 GPU)으로 옮기고 yolo v5 yolo v8를 테스트해봄. epoch 80~100 수준으로 진행함. | 트레이닝 코드(코랩)

 

yolov8 data train 3.ipynb

Colaboratory notebook

colab.research.google.com

 

6. Deployment
사진 촬영하고 라벨링하는 동안 함께 해주신 능력자 팀원 분이 다 해주심! | 깃헙 코드 

 

GitHub - BGHyeon/traffic_sign

Contribute to BGHyeon/traffic_sign development by creating an account on GitHub.

github.com

 

7. Testing & Monitoring

사진을 브라우저에 업로드해서는 현실적으로 신호등의 신호를 분류할 필요가 없지 않겠느냐 라는 내부적 물음으로, 웹소켓을 활용해 모바일 웹에서 실시간으로 감지할 수 있도록 시도함. 결과는 50점?. 욜로가 기본적으로 가지고 있는 학습 데이터를 기반으로 한 인식은 매우 높았지만, 아무래도 직접 촬영한 신호에 대한 인식률은 기대에 미치지 못함. 최종 발표자료

 

신호등 활용 분석 서비스

횡단보도 신호 감지 웹서비스 1조 - 변찬우, 백규현

docs.google.com

 

 

 

 

댓글