본문 바로가기
AI_Student/인공지능(AI) 실습

YOLOv3를 이용한 영상 인식 학습

by AndrewL 2020. 7. 18.

오늘은 YOlO(You only look once)라는 물체 탐지로 사용되는 알고리즘/모델을 이용하여 주행 상황 중의 물체 인식을 어떻게 하느냐에 대해서 테스트를 해보았다. 

 

먼저, 이 YOLO라는 시스템에 대해서 간단하게 알아보도록 하자.

 

*YOLO 기능?

이전의 탐지 시스템은 classifier이나 localizer을 사용해서 탐지를 수행하였다.

하지만 YOLO는 하나의 신경망을 전체 이미지에 적용하였다.

이 신경망은 이미지를 영역으로 분할하고 각 영역의 Bounding Box와 확률을 예측한다.

이런 Bounding Box는 예측된 확률에 의해 가중치가 적용된다.

수천개의 이미지가 필요한 R-CNN와 달리 하나의 네트워크 평가로 예측할 수 있다.

비교하자면, R-CNN보다는 1000배 이상 빠르고, Fast R-CNN보다는 100배 빠르다.

정리하면, YOLO는 이미지 내의 Bounding box와 class probability를 single regression problem으로 간주하여, 이미지를 한 번 보는 것으로 object의 종류와 위치를 추측한다.

 

*YOLO 장점?

-간단한 처리과정으로 속도가 매우 빠르다. 또한 기존의 다른 real time detection system들과 비교할 때, 2배 정도 높은 mAP를 보인다.

-Image전체를 한 번에 바라보는 방식으로 class에 대한 맥락적 이해도가 높다. 이로 인해 낮은 background error(False-Positive)를 보인다.

-Object에 대한 좀 더 일반화된 특징을 학습한다. 가령 natural image로 학습하고 이를 artwork에 테스트 했을 때 , 다른 Detection System들에 비해 훨씬 높은 성능을 보여준다.

 

*YOLO 단점?

-상대적으로 작은 object에 대해 낮은 정확도를 보인다.

 

그러면 이제 주행 상황에 대한 인지에 대해서 테스트를 진행해보았다.

1. 깃허브에 tensorflow2.0으로 구현된 YOLOv3를 Fork하여 로컬에서 작업을 진행하였다.

github

2. PyCharm에서 해당 video를 적용하여 detect_video.py를 Run시켰다.

detect_video에서 해당 경로는 data에 있는 비디오 파일로 수정 후 실행시켜준 이미지

3. 실행결과

detect_video_test image

4. 실제 블랙박스 영상으로 YOLO 인식 결과

주행 중 YOLO인식_이미지

-다음과 실시간으로 인식하긴 하는 모습을 볼 수 있었다. 하지만 실행환경이 CPU라서 처리 속도가 굉장히 느리고, 버퍼링 걸린 듯한 영상이 나타났다. GPU에서도 돌리면 깔끔하게 나타날까 궁금하다. colab에서 한 번 돌려 봐야겠다!

vision의 대표적인 모델인 YOLO에 대해서 학습해 보았고, 여러 영상을 테스트해보았는데 굉장히 재미있었다. 여러가지 파라미터들이 구현되어있지만 아직 인식할 수 있는 object들이 한정적이라는 것이 아쉽다. 좀 더 공부해서 object들을 더 추가해보도록 시도해 보아야겠다.

댓글