이 영역을 누르면 첫 페이지로 이동
포렌식 & 개발 이야기 - Forensics & Development 블로그의 첫 페이지로 이동

포렌식 & 개발 이야기 - Forensics & Development

페이지 맨 위로 올라가기

포렌식 & 개발 이야기 - Forensics & Development

Pental - Forensics / iOS / Windows / Android / Kakaotalk / Telegram / Etc

[yolo11] 🚗 YOLO를 활용한 차량 분류 시스템 개발기 (1) - YOLO란 무엇인가? + labelme 사용법

  • 2025.07.26 20:21
  • 이것저것
글 작성자: pental

블랙박스 영상에는 단순히 사고 장면을 담는 것 이상의 수많은 정보가 들어 있다. 차량의 움직임, 주변 상호, 도로 표시, 다른 차량 정보까지 — 이것들은 모두 범죄 수사, 보험 분쟁, 운전 패턴 분석 등 다양한 분야에서 활용될 수 있다.

이번 프로젝트에서는 이러한 영상 정보들을 좀 더 정형화된 데이터로 추출하여 분석하기 위해 여러 기능들을 구현하려고 한다.

그중 첫 번째는 가장 기본적이면서도 강력한 기능, 바로 차량 분류 시스템이다.

 

🔍 차량 분류 시스템이란?

예를 들어, 내가 주차 중 누군가의 차량에 의해 긁히는 뺑소니를 당했는데, 블랙박스 영상에는 차량의 외형만 찍혔다고 가정해본다.

이럴 경우, 차량 종류(승용차, 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

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [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
다른 글 더 둘러보기

정보

포렌식 & 개발 이야기 - Forensics & Development 블로그의 첫 페이지로 이동

포렌식 & 개발 이야기 - Forensics & Development

  • 포렌식 & 개발 이야기 - Forensics & Development의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

카테고리

  • Category (495) N
    • Forensics (19)
      • Magnet AXIOM (28)
      • Digital Forensics Informati.. (9)
      • Iphone Forensics (25)
      • DFC (7)
      • 디지털포렌식전문가2급 자격증 (10)
      • FTK ACE 자격증 (7)
    • 이것저것 (9) N
      • Ubuntu (6)
      • 디스코드 봇 (4)
      • Volatility GUI (2)
    • CTF (32)
      • NEWSECU (14)
      • CTF-d (5)
      • Puzzel - Network Forensics (2)
      • Security Traps (2)
      • system32.kr (5)
      • HMCTF (4)
    • Programming (300)
      • C (10)
      • Python (11)
      • 백준 (246)
      • 프로그래머스 (32)
    • 그냥 개발 및 잡담 (16)
      • Docker (2)
      • Google Cloud (3)
      • OS 개발 (3)
    • Best of Best (20)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 프로그래머스
  • Forensics
  • pental
  • 디지털포렌식
  • 백준
  • 파이썬
  • axiom
  • 포렌식
  • 전체 보기…

정보

pental의 포렌식 & 개발 이야기 - Forensics & Development

포렌식 & 개발 이야기 - Forensics & Development

pental

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © pental.

티스토리툴바