[yolo11] 🚗 YOLO를 활용한 차량 분류 시스템 개발기 (2) - Yolo를 통해 객체 인식하기
[yolo11] 🚗 YOLO를 활용한 차량 분류 시스템 개발기 (1) - YOLO란 무엇인가? + labelme 사용법
블랙박스 영상에는 단순히 사고 장면을 담는 것 이상의 수많은 정보가 들어 있다. 차량의 움직임, 주변 상호, 도로 표시, 다른 차량 정보까지 — 이것들은 모두 범죄 수사, 보험 분쟁, 운전 패턴
blog.system32.kr
기존글에서는 YOLO를 활용한 차량 분류 시스템 개발 - YOLO가 무엇인지, 그리고 Labelme를 사용해서 Yolo에 적합한 타임의 Dataset으로 변환하는 과정에 관해서 작성했었다.
본 게시물에서는 [yolo11] 🚗 YOLO를 활용한 차량 분류 시스템 개발기 (1) - YOLO란 무엇인가? + labelme 사용법 에서 다뤘던 데이터들로 학습을 진행한다.
만들어 두었던 YOLODataset 폴더를 그대로 사용할 것이며, 필자의 환경은 Apple M2, MPS를 사용해서 진행하며, Python 3.9.6 버전을 사용하고 있다.
일단 진행전 가상 환경을 구축하고 진행한다.
pental@pentalui-MacBookAir ultralytics % python3 -m venv yolovenv
pental@pentalui-MacBookAir ultralytics % source yolovenv/bin/activate
pip install ultralytics
먼저 python pip를 통해서 ultralytics를 설치한다. 설치에는 꽤나 많은 시간이 소요된다.
import ultralytics
ultralytics.checks()
제대로 설치되었는지 확인하기 위해서 위와 같은 코드를 사용하면 아래와 같이 어떤 버전을 사용하고 있으며 CPU 상태 등을 확인 할 수 있다.
학습은 간단하다. 미리 알아둔 Dataset 경로만 있으면 자동으로 필요한 파일은 다운받고, 학습까지 진행해준다.
yolo train model=yolo11n.pt data=/Users/pental/Desktop/YOLODataset/dataset.yaml epochs=100 imgsz=640
학습 중간중간에, runs 폴더 내 train 폴더에서 어떻게 학습이 되고 있는지 확인 할 수 있다.
학습이 완료되면, runs 폴더 아래 train의 마지막 폴더에 weights 폴더가 존재한다.
해당 폴더안에는 best.pt와 last.pt가 존재하며, 여기서 우리가 사용할 것은 best.pt이다.
이제 예측을 진행해야 한다. 예측은 다음과 같은 커맨드 라인으로 진행 할 수 있다.
yolo predict model=best.pt source=input.mp4
해당 작업이 완료되면, runs 폴더 아래 predict 폴더가 생성된다. 해당 파일은 아까 학습시킨 모델로 예측이 진행된 결과물이 들어있다.
예측 결과가 나오긴 했지만, 아직은 아쉬운 점이 많았다.
실제로 테스트해본 결과, 오탐(false positive)도 많고, 미탐(false negative)도 상당히 많아 개선이 필요해 보였다. 특히 비슷한 차량 외형 간 구분이 제대로 되지 않거나, 일부 프레임에서는 객체를 전혀 인식하지 못하는 경우도 발생했다..
이 문제를 해결하기 위해선 다음과 같은 부분에 대한 추가 고민이 필요할 것 같다.
끝날 때까지 끝난 게 아니다.
YOLO 프로젝트는 계속됩니다...