[AI] Yolo v4를 이용한 강아지 인식 인공지능

당당·2023년 4월 20일
0

AI

목록 보기
2/3

📆개발 시기

2022.05.23.-2022.06.02.


📝개발 목적

본 프로젝트는 YOLO v4를 사용하여 강아지 데이터를 학습하여 강아지를 검출하는 프로젝트이다.

본 프로젝트는 yolo-mark를 사용하여 직접 라벨링 과정을 거쳐 학습 데이터 4000장, 테스트 데이터 1000장으로 데이터셋을 구축하였고 15000번의 학습을 진행하였다.


📕준비

CUDAcuDNN은 학습을 CPU가 아닌 GPU를 사용하여 실행하기 위한 프로그램이다.
Darknet Yolov4 프로젝트는 다음 주소에서 공유되는 오픈 소스를 다운 받는다.

https://github.com/AlexeyAB/darknet

이후, darknet에서 자신의 개발환경에 맞게 수정한다.

여기서 말하는 개발환경은 OpenCVCUDA, cuDNN에 대한 경로를 설정해주는 과정을 말한다.

여러 과정을 거치면 YOLO를 실행할 수 있는 세팅을 마칠 수 있다.


🔍실험 환경

OS : Windows 10
CPU : Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz 3.40 GHz
RAM : 16GB
GPU : RTX 2060
CUDA : 10.1
cuDnn : 7.6.4
opencv : 3.4.8
Visual Studio 2017
라벨링 도구 : Yolo-mark
학습 모델 : Yolo v4

📃실험 셋팅

학습 데이터 4000장 이미지

Yolo-mark를 이용하여 이미지에 객체를 인식시켜 학습 데이터를 만드는 방법은 다음과 같다.
img 폴더에는 우리가 학습시킬 이미지 4천장이 들어있는 파일이다.
학습과 트레이닝 데이터를 정의하는 data파일
obj.namesclasses의 종류가 담긴 네임파일이다.우리가 검출할 classes의 이름은 dog로 설정한다. (obj.names)
obj.data

classes : 비행기, 자동차, 강아지, 고양이 등을 감지할 데이터 종류의 수이다.
우리는 강아지를 검출하기 위해 classes의 값을 1로 작성하였다.
train : 학습할 이미지의 경로가 담긴 리스트 파일이다.
names : 클래스 이름이 들어있는 리스트 파일이다.
backup : 학습된 가중치 파일인 weights 파일이 저장되는 폴더이다.

💻라벨링

train.txt
라벨링하는 과정

yolo-mark.cmd를 실행하여 강아지 객체를 직접 라벨링하면 된다.
dog1.txt
이렇게 라벨링하면 라벨링 좌표가 txt 파일에 작성이 되어 저장된다.

dog1.txt에 들어있는 내용이 강아지 객체를 라벨링한 좌표값에 대한 내용이다.


📌학습

cmd에서 영상을 입력하여 출력결과를 확인할 수 있는 명령어는 다음과 같다.

//첫 학습
darknet.exe detector train data\obj.data testcfg\yolov4-custom.cfg data\yolov4.conv.137 -gpu 0 
//이어서 학습
darknet.exe detector train data\obj.data testcfg\yolov4-custom.cfg backup\yolov4-custom_2000.weights -gpu 0 
//테스트
darknet.exe detector test data\obj.data testcfg\yolov4-custom.cfg backup\yolov4-custom_final.weights -i 0 data\testimg\dog.4001.jpg
//성능확인
darknet.exe detector map data\obj.data testcfg\yolov4-custom.cfg backup\yolov4-custom_final.weights

위의 명령어들은 YOLO를 학습시키기 위한 내용이다.

학습에 필요한 파일은 obj.data, yolov4-custom.cfg, 다크넷인 yolov4.conv.137 가 필요하다.

우리는 총 4천장의 데이터를 15000번 학습을 진행시켰고,
가중치 파일.weights파일은 1000장 단위로 저장되게 했다.
chart yolov4_custom
학습의 손실율을 나타내는 그래프이다.

학습을 진행할수록 손실율이 안정되는 것을 확인할 수 있다.

cmax_batches 는 학습횟수를 의미하므로 15000이라 써져있는 것을 확인할 수 있다.


📰출력 결과


🎯성능

데이터셋 성능
위의 명령어를 실행하면 우리가 학습시킨 모델이 데이터셋의 성능을 파악할 수 있다.

우리는 학습 데이터셋과 테스트 데이터셋의 성능을 비교해 보았다.


📂고찰

15000번을 학습한 결과 정확도 87%의 결과를 보여주며
테스트 데이터가 아닌 확인 데이터를 넣어본 결과 인식하는 것 확인 가능


🧸담당 역할

  • Darknet Windows 10 환경 구축
  • Yolo v4 학습 전 obj.data, obj.names 수정
  • 4000장의 사진을 Yolo-mark로 라벨링
  • 정확도를 위하여 15000번 학습

📚참고문헌

[1] https://ultrakid.tistory.com/25
//CUDA 버전 및 cuDNN 버전 확인
[2] https://jjjhong.tistory.com/24
//darknet 빌드를 위한 visual studio 환경변수 세팅
[3] https://github.com/AlexeyAB/darknet
//다크넷 다운 및 yolov4 기본 테스트 용 yolov4.weights 다운, 인공지능 학습을 위해 사전 훈련된 가중치 파일 yolov4.conv.137 다운
[4] https://jjeamin.github.io/darknet_book/part1_paper/yolov4.html
//Yolov4 논문 리뷰

0개의 댓글