[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장 이미지학습 데이터 4000장 이미지

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

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

💻라벨링

train.txttrain.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_customchart 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 논문 리뷰

profile
MySQL DBA 신입

0개의 댓글

관련 채용 정보