Projects

[Computer Vision] Yolov5 모델을 기반으로 한 CCTV 이미지 객체 검지

테드리 2024. 2. 20. 04:47

경기도 자율주행센터: 빅데이터를 활용한 AI 모델 경진대회

기간: 2023.10 ~ 2023.12

주제: CCTV 2D 이미지 객체 검지(Object Detection)

목적: 자동차, 버스, 트럭, 오토바이, 자전거, 보행자 총 6종의 객체를 검지하는 것

결과: 은상

 

 

1. 문제 정의

판교제로 시티 운영을 및 디지털화를 통한 지속 가능한 자율주행 산업 생태계 조성

1. 자율주행 기술 발전 중요성: 실시간 모니터링 및 위험 감지
2. 도로 객체 검지 프로젝트 목표: 자율주행 소프트웨어 AI 인식 능력 향상
3. 제로시티 자율주행 산업 생태계 조성: 도로 상황 모니터링 시스템 개발

 


 

2. 모델 선정

주제에 적합한 모델을 선정하기 위해 우선 우리가 사용할 yolo모델을 버전별로 검토하였다.

 

▶ YOLOv5 선정

  • 경량 및 최적화
  • 주어진 데이터와 유사한 pretrained 데이터 (코코 데이터 사용)
  • 실시간 객체 검출

 

▶ Model Size: Small

YOLOv5는 small, medium, large, xlarge 4종류 크기의 모델을 지원하는데 우리는 small 모델을 선택했다

  • 빠른 추론 속도
  • 비교적 적은 컴퓨팅 자원
  • 간단한 객체 탐지에 용이

3. 데이터 전처리

데이터를 전처리하기에 앞서, 1920 x 1080 짜리 이미지는 용량을 많이 차지할 뿐만 아니라 학습하는데 너무 많은 시간이 소요되어서 이미지 크기를 640 x 640 으로 변경하였다.

 

1. Annotation 파일 (json) 을 txt로 변경

 

 

2. 데이터 라벨(Label) 값 변경

 

 

★YOLO 모델은 클래스를 인식할 때, 라벨이 0부터 시작하는 연속된 값이 아니면 인식을 하지 못하기 때문에 라벨 index값을 사전에 변경해주는 작업이 필요했다.

 


4. 모델링 및 성능 개선 방안

4.1.  객체 크기 불균형 → Anchor Box 최적화

 

 

버스와 트럭의 바운딩 박스의 크기가 다른 객체들에 비해 월등히 큰 것으로 나타났다. 이는 모델이 보행자나 자전거와 같은 소형 객체를 탐지하는 데 있어 성능 저하를 야기할 수 있다.

 

따라서 위와 같이 바운딩 박스들의 너비와 높이별로 분포를 따로 추출한 후,

 

k = 4일 때, 최적의 결과

 

 

K-means Clustering 기법을 이용해, 최적의 바운딩 박스 개수를 구하였다.

결과적으로, $k = 4$일 때, 즉, 객체 별로 4개의 바운딩 박스를 씌웠을 때, 최적의 해를 도출해낼 수 있다는 결과가 나왔다.

 

 

4.2.  객체별 개수 불균형 → 데이터 증강(Augmentation)

 

 

아무래도 CCTV상 이미지이다 보니까 승용차나 보행자 등의 객체들이 오토바이나 자전거에 비해 상대적으로 많이 등장하게 된다. 이는 데이터 증강 기법을 통해 해결하였다.

 

 

밝기 변경, 이미지 압축, 채도 변경, 회전 등의 증강 기법들을 사용한 결과,

 

 

증강 후가 전보다 성능이 더 향상되었다.

 

또한, 추가적으로 소형 객체 탐지 모델에 특화된 HIC-YOLOv5 모델도 실험 삼아 사용해 보았는데, 무슨 이유인지 더 성능이 낮게 나왔다...

 

 

4.3. 앙상블

 

좋은 성능을 내는 모델을 만들기 위해 앙상블 기법을 사용했다.

 

첫째, NMS 객체 탐지 알고리즘에서 같은 객체에 대해 여러 개의 바운딩 박스가 생성되었을 , 가장 정확하다고 생각되는 하나의 박스를 선택한.  중복된 탐지를 효과적으로 제거하여 객체 탐지의 정확도를 높일 있다.

 

, WBF 겹치는 바운딩 박스들을 단순히 제거하는 대신, 이들을 통합하여 새로운 평균 바운딩 박스를 생성한다.

탐지 결과의 신뢰도를 고려하므로, 신뢰성 있는 탐지 결과를 얻을 있다는 장점이 있다.


5. 실험 및 성능 평가

 

여러 가지 모델들을 종합하여 여러 번의 실험과정을 거친 결과, 기본모델과 증강모델 두 개를 앙상블 시킨 모델이 가장 우수한 성능을 보였다.

 


6. 전체 프로세스

 

프로젝트 진행과정을 한 번 더 정리하자면,

  1. 데이터 크기 변경
  2. 데이터 전처리 (json to txt & 레이블 값 재설정)
  3. 앵커박스 최적화 및 데이터 증강
  4. 기본 모델과 증강 데이터 모델 앙상블

7. 시연 영상

 

 

CCTV 이미지 객체 검지.pdf
6.77MB

 

8. 참고 문헌

 

 

소스코드 링크 " target="_blank" title="소스코드 링크" rel="noopener" data-mce-href="http:// 소스코드 링크 ">http:// 소스코드 링크

 

GitHub - taekyounglee1224/KyungGI-Self-Driving-Car-AI-Contest: 경기도 자율주행 AI 경진대회에서 내가 기여한 부

경기도 자율주행 AI 경진대회에서 내가 기여한 부분들. Contribute to taekyounglee1224/KyungGI-Self-Driving-Car-AI-Contest development by creating an account on GitHub.

github.com