[yolo11] 🚗 YOLO를 활용한 차량 분류 시스템 개발기 (1) - YOLO란 무엇인가? + labelme 사용법
블랙박스 영상에는 단순히 사고 장면을 담는 것 이상의 수많은 정보가 들어 있다. 차량의 움직임, 주변 상호, 도로 표시, 다른 차량 정보까지 — 이것들은 모두 범죄 수사, 보험 분쟁, 운전 패턴 분석 등 다양한 분야에서 활용될 수 있다.
이번 프로젝트에서는 이러한 영상 정보들을 좀 더 정형화된 데이터로 추출하여 분석하기 위해 여러 기능들을 구현하려고 한다.
그중 첫 번째는 가장 기본적이면서도 강력한 기능, 바로 차량 분류 시스템이다.
🔍 차량 분류 시스템이란?
예를 들어, 내가 주차 중 누군가의 차량에 의해 긁히는 뺑소니를 당했는데, 블랙박스 영상에는 차량의 외형만 찍혔다고 가정해본다.
이럴 경우, 차량 종류(승용차, SUV, 트럭 등) 만 알아도 용의 차량을 좁히는 데 큰 도움이 될거로 추정된다.
이 기능을 구현하기 위해 선택한 기술이 바로 YOLO (You Only Look Once)이다.
🤖 YOLO란 무엇인가?
YOLO(You Only Look Once)는 객체 탐지(Object Detection) 분야에서 가장 널리 쓰이는 딥러닝 모델 중 하나이다.
기존의 이미지 분류 모델과 달리, YOLO는 이미지 안에 있는 객체들의 위치와 종류를 한 번에 예측한다.
YOLO를 사용해보기 전에 블랙박스 영상의 샘플을 구해, 5분짜리 영상에서 1초 간격으로 총 300개의 이미지를 만들었다.
영상을 이미지로 만드는 것은 ffmpeg를 사용해 영상 -> 이미지로 변환하였다.
ffmpeg -i input.mp4 -vf fps=1 output_%04d.jpg
이제 만들어진 이미지에 객체를 학습하기 위해서 labelme 도구를 사용한다. 설치 방법과 실행은 다음과 같다.
Labelme는 이미지에 객체의 경계 박스를 그리거나 폴리곤 형태로 라벨링할 수 있는 Python 기반의 시각적 어노테이션 툴이다.
설치 방법과 실행은 다음과 같다.
pip install labelme
또는 가상환경을 사용하는 경우
conda create --name labelme_env python=3.8
conda activate labelme_env
pip install labelme
설치가 완료되면 단순히 터미널에서 다음과 같이 실행하면, labelme가 실행된다.
labelme
labelme가 실행되면 좌측 상단에서 이미지 샘플들을 불러올 수 있다. 단일 파일의 경우 Open File, 디렉터리에 있는 모든 이미지를 가져오려면 Open Dir을 클릭하면 된다.
필자 같은 경우는 sample 폴더를 선택해, 300장의 이미지를 모두 탑재했다.
위 사진은 이미 Polygon을 생성한 상태이고, Create Polygon 기능을 통해서 원하는 위치에 객체를 인식시킨다.
위와 같이 원하는 영역에 Polygon을 생성하고, 최초 점 위치를 클릭하면 다음과 같이 라벨링을 지정할 수 있는 창이 확인된다.
지금은 도로 내 점선을 인식시켰기 때문에, road_dotted_line으로 이름을 붙여주었다.
다음 사진으로 넘어가기 위해서는 키보드에서 A 나 D를 통해서 이전, 다음 이미지로 넘어 갈 수 있다. 또는 아래 버튼을 클릭 하면 이전, 다음 이미지로 넘어갈 수 있다.
300장의 이미지에서 일부 필요한 정보를 추출하여 노가다를 진행한다.
노가다가 완료 되면, 샘플 이미지 파일 및 아까 마스킹 한 json 파일이 잘 저장되었는지 확인한다.
labelme 같은 경우는 json으로 반환해주는데, yolo에서 필요한 정보는 txt파일 형태로 되어 있어야 하기에, labelme2yolo를 통해서 yolo가 인식 할 수 있도록 변환해 주어야 한다.
pip install labelme2yolo
pental@pentalui-MacBookAir BLACKBOX % labelme2yolo --json_dir sample --val_size 0.15 --test_size 0.15
내가 사용한 명령줄은 위와 같으며, 실행 시키면 다음과 같이 진행되는것을 확인 할 수 있다.
지정한 경로에서 YOLODataset 폴더가 생성된 것을 확인 할 수 있고, 해당 폴더는 아래 사진과 같은 구조를 가지고 있다.
위와 같이 json에서 txt로 변환 된 것을 확인 할 수 있다.
다음편에서는 생성한 마스킹 정보를 바탕으로 yolo 학습 및 예측을 포스팅 할 예정이다.
'이것저것' 카테고리의 다른 글
[Reversing.kr] Easy Crack (2) | 2025.07.12 |
---|---|
[25년 1회차] 정보보안기사 동회차 합격 후기 (필기 & 실기) (2) | 2025.05.12 |
[CentOS7] CentOS7에 APM 설치하기 & PHP 로그인 (0) | 2022.06.08 |
Deepfake Tutorial - 자신만의 딥페이크를 만들어 보자 (0부터 100까지) (3) | 2021.12.16 |
[Python] Pyinstaller Decompile (암호화되어 있는 바이너리 디컴파일) (9) | 2021.11.02 |
댓글
이 글 공유하기
다른 글
-
[Reversing.kr] Easy Crack
[Reversing.kr] Easy Crack
2025.07.12 -
[25년 1회차] 정보보안기사 동회차 합격 후기 (필기 & 실기)
[25년 1회차] 정보보안기사 동회차 합격 후기 (필기 & 실기)
2025.05.12 -
[CentOS7] CentOS7에 APM 설치하기 & PHP 로그인
[CentOS7] CentOS7에 APM 설치하기 & PHP 로그인
2022.06.08 -
Deepfake Tutorial - 자신만의 딥페이크를 만들어 보자 (0부터 100까지)
Deepfake Tutorial - 자신만의 딥페이크를 만들어 보자 (0부터 100까지)
2021.12.16