๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ํ”„๋กœ์ ํŠธ/AI

[AI] Yolo v4๋ฅผ ์ด์šฉํ•œ ๊ฐ•์•„์ง€ ์ธ์‹ ์ธ๊ณต์ง€๋Šฅ

728x90

2022.05.23.-2022.06.02.

โ€‹

โ€‹

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” YOLO v4๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ•์•„์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•™์Šตํ•˜์—ฌ ๊ฐ•์•„์ง€๋ฅผ ๊ฒ€์ถœํ•˜๋Š” ํ”„๋กœ์ ํŠธ์ด๋‹ค.

โ€‹

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” yolo-mark๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง์ ‘ ๋ผ๋ฒจ๋ง ๊ณผ์ •์„ ๊ฑฐ์ณ ํ•™์Šต ๋ฐ์ดํ„ฐ 4000์žฅ,

ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ 1000์žฅ์œผ๋กœ ๋ฐ์ดํ„ฐ์…‹์„ ๊ตฌ์ถ•ํ•˜์˜€๊ณ  15000๋ฒˆ์˜ ํ•™์Šต์„ ์ง„ํ–‰ํ•˜์˜€๋‹ค.

โ€‹


 

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

โ€‹


CUDA์™€ cuDNN์€ ํ•™์Šต์„ CPU๊ฐ€ ์•„๋‹Œ GPU๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.

โ€‹

Darknet Yolov4 ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์Œ ์ฃผ์†Œ์—์„œ ๊ณต์œ ๋˜๋Š” ์˜คํ”ˆ ์†Œ์Šค๋ฅผ ๋‹ค์šด ๋ฐ›๋Š”๋‹ค.

โ€‹

https://github.com/AlexeyAB/darknet

โ€‹

์ด ํ›„, darrknet์—์„œ ์ž์‹ ์˜ ๊ฐœ๋ฐœํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•œ๋‹ค.

โ€‹

์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ๊ฐœ๋ฐœํ™˜๊ฒฝ์€ OpenCV์™€ CUDA, cuDNN์— ๋Œ€ํ•œ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ด์ฃผ๋Š” ๊ณผ์ •์„ ๋งํ•œ๋‹ค.

โ€‹

์—ฌ๋Ÿฌ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด YOLO๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์„ธํŒ…์„ ๋งˆ์น  ์ˆ˜ ์žˆ๋‹ค.

โ€‹


ํ•™์Šต ๋ฐ์ดํ„ฐ 4000์žฅ ์ด๋ฏธ์ง€

 

 

Yolo-mark๋ฅผ ์ด์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€์— ๊ฐ์ฒด๋ฅผ ์ธ์‹์‹œ์ผœ ํ•™์Šต ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

โ€‹

Yolo-mark๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํŒŒ์ผ

 

img ํด๋”์—๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ•™์Šต์‹œํ‚ฌ ์ด๋ฏธ์ง€ 4์ฒœ์žฅ์ด ๋“ค์–ด์žˆ๋Š” ํŒŒ์ผ์ด๋‹ค.

โ€‹

๋‹ค ํ•™์Šต๊ณผ ํŠธ๋ ˆ์ด๋‹ ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•˜๋Š” dataํŒŒ์ผ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•œ๋‹ค.

โ€‹

obj.names๋Š” classes์˜ ์ข…๋ฅ˜๊ฐ€ ๋‹ด๊ธด ๋„ค์ž„ํŒŒ์ผ์ด๋‹ค.

โ€‹

์šฐ๋ฆฌ๊ฐ€ ๊ฒ€์ถœํ•  classes์˜ ์ด๋ฆ„์€ dog๋กœ ์„ค์ •ํ•œ๋‹ค.

obj.names

 

 

obj.data

 

classes : ๋น„ํ–‰๊ธฐ, ์ž๋™์ฐจ, ๊ฐ•์•„์ง€, ๊ณ ์–‘์ด ๋“ฑ์„ ๊ฐ์ง€ํ•  ๋ฐ์ดํ„ฐ ์ข…๋ฅ˜์˜ ์ˆ˜์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฐ•์•„์ง€๋ฅผ ๊ฒ€์ถœํ•˜๊ธฐ ์œ„ํ•ด classes์˜ ๊ฐ’์„ 1๋กœ ์ž‘์„ฑํ•˜์˜€๋‹ค.

โ€‹

train : ํ•™์Šตํ•  ์ด๋ฏธ์ง€์˜ ๊ฒฝ๋กœ๊ฐ€ ๋‹ด๊ธด ๋ฆฌ์ŠคํŠธ ํŒŒ์ผ์ด๋‹ค.

โ€‹

names : ํด๋ž˜์Šค ์ด๋ฆ„์ด ๋“ค์–ด์žˆ๋Š” ๋ฆฌ์ŠคํŠธ ํŒŒ์ผ์ด๋‹ค.

โ€‹

backup : ํ•™์Šต๋œ ๊ฐ€์ค‘์น˜ ํŒŒ์ผ์ธ weights ํŒŒ์ผ์ด ์ €์žฅ๋˜๋Š” ํด๋”์ด๋‹ค.

โ€‹

โ€‹

โ€‹

train.txt

 

โ€‹

๋ผ๋ฒจ๋งํ•˜๋Š” ๊ณผ์ •

 

yolo-mark.cmd๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ฐ•์•„์ง€ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ๋ผ๋ฒจ๋งํ•˜๋ฉด ๋œ๋‹ค.

โ€‹

โ€‹

dog1.txt

 

์ด๋ ‡๊ฒŒ ๋ผ๋ฒจ๋งํ•˜๋ฉด ๋ผ๋ฒจ๋ง ์ขŒํ‘œ๊ฐ€ txt ํŒŒ์ผ์— ์ž‘์„ฑ์ด ๋˜์–ด ์ €์žฅ๋œ๋‹ค.

โ€‹

dog1.txt ์— ๋“ค์–ด์žˆ๋Š” ๋‚ด์šฉ์ด ๊ฐ•์•„์ง€ ๊ฐ์ฒด๋ฅผ ๋ผ๋ฒจ๋งํ•œ ์ขŒํ‘œ๊ฐ’์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด๋‹ค.

 


โ€‹

//์ฒซ ํ•™์Šต
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์ด๋ผ ์จ์ ธ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

โ€‹

๋ฐ์ดํ„ฐ์…‹ ์„ฑ๋Šฅ

 

 

์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์šฐ๋ฆฌ๊ฐ€ ํ•™์Šต์‹œํ‚จ ๋ชจ๋ธ์ด ๋ฐ์ดํ„ฐ์…‹์˜ ์„ฑ๋Šฅ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.

โ€‹

์šฐ๋ฆฌ๋Š” ํ•™์Šต ๋ฐ์ดํ„ฐ์…‹๊ณผ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์…‹์˜ ์„ฑ๋Šฅ์„ ๋น„๊ตํ•ด ๋ณด์•˜๋‹ค.

โ€‹

โ€‹

ํ•™์Šต ๋ฐ์ดํ„ฐ์…‹ ์„ฑ๋Šฅ

 


๊ฐ•์•„์ง€ ๊ฐ์ฒด ๊ฒ€์ถœ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ

 

๊ฐ•์•„์ง€ ๊ฐ์ฒด ๊ฒ€์ถœ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ

 


https://ultrakid.tistory.com/25

//CUDA ๋ฒ„์ „ ๋ฐ cuDNN ๋ฒ„์ „ ํ™•์ธ

https://jjjhong.tistory.com/24

//darknet ๋นŒ๋“œ๋ฅผ ์œ„ํ•œ visual studio ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ธํŒ…

https://github.com/AlexeyAB/darknet

//๋‹คํฌ๋„ท ๋‹ค์šด ๋ฐ yolov4 ๊ธฐ๋ณธ ํ…Œ์ŠคํŠธ ์šฉ yolov4.weights ๋‹ค์šด, ์ธ๊ณต์ง€๋Šฅ ํ•™์Šต์„ ์œ„ํ•ด ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๊ฐ€์ค‘์น˜ ํŒŒ์ผ yolov4.conv.137 ๋‹ค์šด

https://jjeamin.github.io/darknet_book/part1_paper/yolov4.html

//Yolov4 ๋…ผ๋ฌธ ๋ฆฌ๋ทฐ

โ€‹