YOLO_V3_Training - 8BitsCoding/RobotMentor GitHub Wiki
YOLO v3 Mark ๋ค์ด
$ git clone https://github.com/AlexeyAB/Yolo_mark
ํด๋๋ด์ yolo_mark.sln ์คํ
์์ฑ -> C/C++ -> ์ผ๋ฐ -> ์ถ๊ฐํฌํจ ๋๋ ํฐ๋ฆฌ Opencv ๊ฒฝ๋ก ๋ณ๊ฒฝ
์์ฑ -> ๋ง์ปค -> ์ผ๋ฐ -> ์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ํฐ๋ฆฌ Opencv ๊ฒฝ๋ก ๋ณ๊ฒฝ
๋น๋
yolo_mark ์คํ
Yolo_mark\x64\Release
์ด๋./yolo_mark.cmd
์คํ
echo Example how to start marking bouded boxes for training set Yolo v2
yolo_mark.exe data/img data/train.txt data/obj.names
pause
yolo_mark.cmd ๋ด๋ถ
data/img
data/train.txt
data/obj.names
์ธ ๊ฐ์ ํ์ผ์ด yolo_mark์ ๊ด๋ จ์ด ์๋ค. -> ์๋์ ํ๋์ฉ ๋ถ์
data/img
๋ด๊ฐ ํ์ต์ ์ฐธ์ฌํ ์ด๋ฏธ์ง ํ์ผ
์ด๋ฏธ์ง ํ์ผ ๋ด์์ ์ค๋ธ์ ํธ๋ฅผ ์ ํํด ์ค์ผํจ.
์ฐธ๊ณ ๋ก ์ง์ํ๋ ์ด๋ฏธ์ง ํ์ผ์
*.jpg
์์ ๊ธฐ์ต
data/train.txt
ํ์ตํ ์ด๋ฏธ์ง์ ๊ฒฝ๋ก ์ง์
yolo_mark์์ ์ค๋ธ์ ํธ๋ฅผ ์ง์ ํ๋ฉด ์๋์ผ๋ก ๋ฑ๋ก์ด ๋๋ค.
data/obj.names
ํ์ตํ ์ค๋ธ์ ํธ์ ์ด๋ฆ ์ง์
data/obj.data
classes= 2
train = data/train.txt
valid = data/train.txt
names = data/obj.names
backup = backup/
๋ค๋ฅธ๊ฑด ๊ทธ๋๋ก ๋๊ณ classes๋ง ์์
๋ด๊ฐ ์๋ณํ ์ค๋ธ์ ํธ์ ๊ฐ์๋ฅผ ์ง์ ํ๋ค.
์๋ฅผ๋ค์ด ๊ฐ/๊ณ ์์ด๋ก ์ค๋ธ์ ํธ๋ฅผ ๋ถ๋ฆฌํ๊ณ ์ถ๋ค๋ฉด
classes=2
yolo-obj.cfg(์ด ๋ฐฉ๋ฒ์ ์ถ์ฒํ์ง ์๋๋ค. ํ์ต์ด ์ ์๋๋ ํ์์ด ๋ฐ์)
์ปจ๋ฒ๋ฃจ์ ์ ์ธํ ๋ฑ ์ด๋ป๊ฒ ํ์ญ์ ์งํํ ์ง์ ๋ํ ์ค์
๋๋ Darknet53.conv.74๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ์์ ์ด๋ผ ๋ณ๋์ ์์ ์์ด ์ฌ์ฉ...(์ฌ์ค ์ฌ๊ธฐ์ ์ง์์ด ๋ถ์กฑ...)
๊ทธ๋ฅ ์ฌ์ฉํ๋ค๋ฉด ์์ ํด์ผ ํ๋ ๋ถ๋ถ์ ๊ฐ์ฅ๋ง์ง๋ง ์ค์ filter์ classes์ด๋ค.
[convolutional]
size=1
stride=1
pad=1
filters=35 # ์ฌ๊ธฐ
activation=linear
[region]
anchors = 1.08,1.19, 3.42,4.41, 6.63,11.38, 9.42,5.11, 16.62,10.52
bias_match=1
classes=2 # ์ฌ๊ธฐ
coords=4
num=5
softmax=1
jitter=.2
rescore=1
classes๋ ์ญ์ ์๋ณํ ์ค๋ธ์ ํธ์ ๊ฐ์
filters = (classes + 5) * 5 ๋ก ์ง์
darknet์ ์๋ yolov3.cfg๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์ฒ
- ์ฐธ๊ณ ์ฌ์ดํธ์์ How to train(to detect your custom objects)๋ฅผ ์ฐธ์กฐํ์.
yolo-obj.cfg
๋ผ๋ ํ์ผ์ ์์ฑ ํ ๋ด๋ถ์ ๋ด์ฉ์ darknet/Release/x64๋ด๋ถ์yolov3.cfg
์ ๋์ผํ๊ฒ ๊ตฌ์ฑํ๋ค.yolo-obj.cfg
๋ด๋ถ์ ์์ ์ ์๋์ ๊ฐ์ด ํ๋ค.
[net]
# ...
batch=64
subdivisions=8 # ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑํ์์ด ๋ํ๋๋ค๋ฉด 16, 32, 64 ๋ก ํค์ด๋ค.
max_batches=6000 # classes*2000
steps=4800,5400 # max_batches์ 80% 90% ๋ฅผ ๋ฃ๋๋ค. ์ด์ํ ์ ๋ฃ์ผ๋ฉด ํ์ต ์๋จ!
# ...
# [yolo] ๋ผ๋ ์ธ๋ฑ์ค ์/์๋์ classes, filter๋ฅผ ์์ ์ ๋ง๊ฒ ์์ ํ๋ค.
filters=24 # filters=(classes+5)*3
#...
[yolo] # ์ด ์ธ ๊ฐ์ [yolo]๊ฐ ์์ ๊ผญ 3๊ฐ ๋ชจ๋ ์์ ํ ๊ฒ!!
# ...
classes=3
๋๋จธ์ง๋ ์์ ๋์ผ
*.cfg ํ๋ผ๋ฏธํฐ์ ๋ํ ์ค๋ช
-
batch : ํ ๋ฒ์ ๋ช ์ฅ์ ์ฒ๋ฆฌํ ์ง ์ง์
-
subdivisions : batch๋ฅผ ์ด ๊ฐ๋งํผ ๋๋์ด ์ฒ๋ฆฌ (GPU ๋ฉ๋ชจ๋ฆฌ ๋ถํ๋ฅผ ์ค์ด๊ฒ ๋ค.)
-
height, width : ์ ๋ ฅ๋๋ ์ด๋ฏธ์ง์ ํฌ๊ธฐ
convolutional layer ๋ค์ด๋ก๋
darknet53.conv.74๋ผ๋ convolutional layer๋ฅผ ๋ค์ด๋ก๋ ํ
ํ์ต์ ์ํด์ darknet ์คํํ์ผ ๋ด์ ๋ฃ์ด๋๋ค.
ํ์ต ์ด๋ฏธ์ง ์ง์
Yolo_mark\x64\Release
์ด๋./yolo_mark.cmd
์คํ
์ฐธ๊ณ ๋ก ๋จ์ถํค๋ฅผ ์๋ฉด ํธ์ง์ด ์์ํ๋ค.
ํค๋ณด๋ 0~9 : ์ค๋ธ์ ํธ์ ๋๋ฒ
๋ง์ฐ์ค ์ขํด๋ฆญ : ์ค๋ธ์ ํธ ์ง์
ํค๋ณด๋ c : ์ค๋ธ์ ํธ ์ง์ ์ทจ์
ํ์ต์งํ
$ ./darknet detector train data/obj.data yolo-obj.cfg darknet53.conv.74
ํ์ต์ง ์งํ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ๋ฆฐํธ๋ฅผ ๋ณผ ์ ์๋๋ฐ
24674: 0.659918, 0.605959 avg, 0.001000 rate, 2.962139 seconds, 1579136 images
24674 : ์ฐ์ฐ ํ์
0.605959 avg : ํ๊ท ์์ค์จ -> ์์ค์จ์ด ๋ ์ด์ ์ค์ด๋ค์ง ์๋๋ค๋ฉด ํ์ต์ ์ค์ง