Object Detection
Object Detection(๊ฐ์ฒด ๊ฒ์ถ)์ด๋ ์ด๋ฏธ์ง์์ ๊ฒ์ถํ๊ณ ์ถ์ ๊ฐ์ฒด์ ์์น(๋ฐ์ด๋ฉ ๋ฐ์ค)๋ฅผ ์ฐพ๊ณ ๊ฐ์ฒด์ ์นดํ
๊ณ ๋ฆฌ๋ฅผ ๋ถ๋ฅํ๋ ์์
์ ์๋ฏธํ๋ค. ๊ฐ์ฒด ๊ฒ์ถํ๋ฉด ์ญ์ ๋ง์ ๋ถ๋ค์ด YOLO ๋ชจ๋ธ์ ๋ ์ฌ๋ฆฌ๋ ๊ฒ ๊ฐ์์, YOLO ๋ชจ๋ธ์ ํ์ตํ๊ณ ํ
์คํธํ๋ ํํ ๋ฆฌ์ผ์ ์ค๋นํด ๋ดค๋ค.
์์ฆ์ ์ปด๊ณต๊ณผ๋ AI ๊ด๋ จ ๊ณต๋ถ๋ฅผ ํ์๋ ํ์์ด ์๋๋๋ผ๋ ๋ณธ์ธ์ ํ์ ์ ๊ฐ์ฒด ๊ฒ์ถ ๊ธฐ์ ์ ์ ์ฉ์์ผ๋ณด๋ ค ํ๋ ์ฌ๋๋ค์ด ๋ง๋ค. ํ์ง๋ง ์ฝ๋ฉ์ ํ ์ค ๋ชจ๋ฅด๋ฉด ๊ฐ๋จํ ์ฝ๋์ผ์ง๋ผ๋ ๋ฐ๋ผํ๋ค๋ณด๋ฉด ์๋ฌ๊ฐ ๋๊ณ ์ด๋ป๊ฒ ํด๊ฒฐํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ๋ ์ํฉ์ด ๋ง์ด ์ฐ์ถ๋๋ค. ๋๋ฌธ์ ์ฝ๋ฉ์ ํ ์ค ๋ชจ๋ฅด๋ ์ฌ๋๋ ์ฝ๊ฒ ๋ฐ๋ผํ ์ ์๋ YOLO ํ์ต ํํ ๋ฆฌ์ผ์ ์ค๋นํ์ผ๋ ํ์ํ ๋ถ๋ค๊ป ๋์์ด ๋์์ผ๋ฉด ์ข๊ฒ ๋ค.
- ํ์ต ์ฝ๋ ๋ ํผ์งํ ๋ฆฌ : https://github.com/ldj7672/Deep-Learning-Tutorials/tree/main/YOLOv5
(์ ๋ ํผ์งํ ๋ฆฌ์์ "YOLOv5_ํ์ต_์ปค์คํ
๋ฐ์ดํฐ์
.ipynb" ํ์ผ ์ฌ์ฉ)
* ์ฝ๋๋ฅผ ๋ค๋ฃฐ์ค ์๋ค๋ฉด VS code ๊ฐ์ IDE๋ก ๊ฐ๋ฐํ๊ฒฝ์ ๊ตฌ์ถํด์ ๋ชจ๋ธ์ ํ์ต์ํค๋ ๋ฐฉ๋ฒ์ด ํจ์ฌ ๊ฐํธํ๋ค
๋ฐ์ดํฐ์ ์ค๋น
๋ฐ์ดํฐ์ ์ ์ ๋ฐ ๋ค์ด๋ก๋
- Roboflow ํผ๋ธ๋ฆญ ๋ฐ์ดํฐ์ :https://public.roboflow.com/object-detection
๊ถ๊ทน์ ์ผ๋ก ๋ฐ์ดํฐ์
์ ์ด๋ค ๊ฒ์ ์ฌ์ฉํ์
๋ ๋์ง๋ง ๊ฐํธํ๊ฒ roboflow ๋ผ๋ ์ฌ์ดํธ์์ object detection ์ ์ํ ์ฌ๋ฌ๊ฐ์ง ํผ๋ธ๋ฆญ ๋ฐ์ดํฐ์
์ ๋ค์ด๋ฐ์ ์ฌ์ฉํ ์ ์๋ค.
๊ทธ ์ค์์ ๋๋ ๋๋ก ์ผ๋ก ๋ถ๋ฃ๊ฐ๋ฅผ ์ดฌ์ํ์ฌ ์๋์ฐจ, ๋ฐฐ, ๋ถ๋ ๋ฑ์ ๊ฒ์ถํ๊ธฐ ์ํด ๋ง๋ค์ด์ง 'Aerial Maritime Drone Dataset' ์ด๋ผ๋ ๋ฐ์ดํฐ์
์ ์ ํํ๋ค. ์ roboflow ์ฌ์ดํธ์ ์ ์ํด์ ๋ฐ์ดํฐ์
์ ๊ฒ์ํ๊ณ ๋ค์ด๋ฐ์ ์ ์๋ค.
๋ค์ด๋ก๋ ๋ฐ์ ๋ ๋ฐ์ดํฐ์
ํฌ๋งท์ TXT - YOLOv5 pytorch ํฌ๋งท์ผ๋ก ๋ค์ด๋ฐ์ผ์๋ฉด ๋๋ค. ํด๋น ํฌ๋งท์ ์ด๋ฏธ์ง ์ด๋
ธํ
์ด์
์ ๋ํ ํฌ๋งท์ธ๋ฐ ์ฝ๋์ ์ด๋
ธํ
์ด์
ํฌ๋งท์ด ์๋ก ์ผ์นํด์ผ ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
๋ง์ฝ ๋ณธ์ธ์ด ๊ฐ์ง ๋ฐ์ดํฐ์
์ผ๋ก ํ์ตํ๊ธฐ ์ํด์ ํผ๋ธ๋ฆญ ๋ฐ์ดํฐ์
๊ณผ ๋์ผํ ํฌ๋งท์ผ๋ก annotation(์ ๋ต ๋ผ๋ฒจ(๋ฐ์ด๋ฉ ๋ฐ์ค, ์นดํ
๊ณ ๋ฆฌ))์ ๋ง๋ค์ด์ ์ ์ฉ์์ผ์ค์ผ ํ๋ค. ์ด๋ป๊ฒ ํด์ผ ํ ์ง ๋ชจ๋ฅด๊ฒ ์ผ๋ฉด ์ฉ๋์ด ์์ ๋ฐ์ดํฐ์
์ ํ๋ ๋ค์ด๋ฐ์์ ๋์ผํ ํฌ๋งท๊ณผ ๋์ผํ ๋๋ ํ ๋ฆฌ ๊ตฌ์ฑ์ผ๋ก ๋ง๋ค์ด์ฃผ๋ฉด ๋๋ค.
๋ค์ด๋ฐ์ ๋ฐ์ดํฐ์ ํ์ธ
๋ค์ด๋ฐ์ ์์ถ ํ์ผ์ ํด์ ํ๋ฉด ์๋์ ๊ฐ์ด ํ์ต/ํ๊ฐ ๋ฐ์ดํฐ์ ์ ๋ต ์ ๋ณด๊ฐ ๋ค์ด์๋ test, train, valid ํด๋์ ๋ฐ์ดํฐ์
์ ๋ํ ์ ๋ณด๊ฐ ๋ค์ด์๋ data.yaml ํ์ผ์ด ์๋ค. yaml ํ์ผ์ ์ฝ๋ ์๋ํฐ๋ ํ
์คํธ ํธ์ง๊ธฐ๋ก ์ด์ด๋ณด์๋ฉด ์๋์ฒ๋ผ ํ์ธ์ด ๊ฐ๋ฅํ๋ฐ ๋์ค์ yaml ํ์ผ์์ train, val ๊ฒฝ๋ก๋ฅผ ๋ณ๊ฒฝํด์ค์ผ ํ๋ค.(๋ฐ์์ ์ค๋ช
)
๋ฐ์ดํฐ์ , ํ์ต ์ฝ๋ → ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ์ ๋ก๋
์ด์ ๋ค์ด ๋ฐ์ ๋ฐ์ดํฐ์
ํด๋๋ฅผ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ์ ์
๋ก๋ํด์ผ ํ๋ค. YOLO ๋ชจ๋ธ์ ๊ตฌ๊ธ ์ฝ๋ฉ์ด๋ผ๋ ํ๊ฒฝ์์ ํ์ต์ํฌ ์์ ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์
์ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ์ ์
๋ก๋ํ๋ ๊ฒ
๊ตฌ๊ธ ๋๋ผ์ด๋ธ์ '๋ด ๋๋ผ์ด๋ธ'์ 'dataset' ์ด๋ผ๋ ํด๋๋ฅผ ํ๋ ๋ง๋ค์ด ์ฃผ๊ณ ๊ทธ ์์ ๋ค์ด๋ฐ์ ๋ฐ์ดํฐ์
์ ์
๋ก๋ ์ํจ๋ค. (ํด๋ ์ด๋ฆ์ ์ (.)์ด๋ ๊ฐ์ข
ํน์ ๋ฌธ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ฝ๋ ์คํ ์ ๋ฌธ์ ๊ฐ ๋๋ฏ๋ก ์ด๋ฆ์ ๋ฐ๊พธ์ด ์ค์ผ ํ๋ค)
๊ทธ๋ฆฌ๊ณ ์ ๊ณตํ 'YOLOv5_ํ์ต_์ปค์คํ
๋ฐ์ดํฐ์
.ipynb' ํ์ผ๋ํ '๋ด ๋๋ผ์ด๋ธ' ๊ฒฝ๋ก์ ์
๋ก๋ํ๋ค.
์ด์ ๋ฐ์ดํฐ์
๊ณผ ํ์ต ์ฝ๋์ค๋น๊ฐ ๋์ด ๋ฌ๋ค.
YOLOv5 ๋ชจ๋ธ ํ์ต ๋ฐ ํ ์คํธ - ๊ตฌ๊ธ ์ฝ๋ฉ ์ฌ์ฉ
์์ ์๊ธฐํ๋๋ก YOLOv5 ๋ชจ๋ธ์ ๊ตฌ๊ธ ์ฝ๋ฉ์ด๋ผ๋ ํ๊ฒฝ์์ ํ์ต์ํค๋ ค ํ๋ค. ๊ตฌ๊ธ ์ฝ๋ฉ์ ์ฌ์ฉ ์ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ฐ๋ก ์ธํ
ํด์ค ํ์๊ฐ์์ด์ ์์์น ๋ชปํ ์๋ฌ๋ฅผ ๋ง๋ ํ๋ฅ ์ด ์ ๊ธฐ ๋๋ฌธ์ ์ฝ๋ฉ์ ํ ์ค ๋ชจ๋ฅด๋ ๋ถ๋ค๋ ์ฝ๊ฒ ๋ฐ๋ผํ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
1. ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ๋ง์ดํธ
- ๊ตฌ๊ธ ์ฝ๋ฉ๊ณผ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ๋ฅผ ์ฐ๊ฒฐ์์ผ์ฃผ๊ธฐ ์ํด ๋ง์ดํธ๋ฅผ ํ์ (์๋ ํ๋ฉด์์ ์ฌ์ํ์๋ฅผ ๋๋ฌ์ ์งํ)
- ๋น ๋ฅธ ํ์ต์ ์ํด GPU๋ฅผ ์ฌ์ฉ (๋ฐํ์ - ๋ฐํ์ ์ ํ ๋ณ๊ฒฝ - ํ๋์จ์ด ๊ฐ์๊ธฐ → GPU)
2. YOLOv5 ๋ ํผ์งํ ๋ฆฌ ๋ค์ด๋ก๋
YOLOv5 ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๊นํ๋ธ์ ์ฌ๋ ค์ง YOLOv5 ๋ ํผ์งํ ๋ฆฌ์์ ์ฝ๋๋ค์ ๋ค์ด๋ก๋. ์ด๋ ํ๋ฒ๋ง ์คํํด์ฃผ๋ฉด ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ๋ด ๋๋ผ์ด๋ธ์ yolov5๊ฐ ๋ค์ด๋ก๋๋๋ค. ๋ ๋ฒ์งธ ํ์ต๋ถํฐ๋ ๊ฑด๋๋ฐ์ด๋ ๋๋ ๋ถ๋ถ์ด๊ณ , ํจํค์ง ๋ค์ด๋ก๋ ๋ฐ ์ํฌํธ ํ๋ ๋ถ๋ถ์ ๋งค๋ฒ ์คํํด์ค์ผ ํ๋ค.
3. ๋ฐ์ดํฐ์ ๋ค์ด๋ก๋, yaml ํ์ผ ์์
๋ฐ์ดํฐ์
์ ์ด๋ฏธ ๋ค์ด๋ก๋ ๋ฐ๊ณ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ์ ์
๋ก๋์์ผ์ ์๋์๊ฐ์ด ๋ฐ์ดํฐ์
๊ณผ yaml ํ์ผ์ ํ์ธํ ์ ์๋ค. ์ฌ๊ธฐ์ ๋ฐ์ดํฐ์
์ ๊ฒฝ๋ก๋ฅผ ๋ด๊ณ ์๋ yaml ํ์ผ์ ์กฐ๊ธ ์์ ํด์ค์ผ ํ์ต์ด ๊ฐ๋ฅํ๋ค. ์๋ ํ๋ฉด์์ data.yaml ์ ํด๋ฆญํ์
์ ์ง์ ์์ ํด๋ ๋์ง๋ง, ์ฝ๋๋ก yaml ํ์ผ์ ์์ ํ๋๋ก ๊ตฌํํด๋์๋ค.
์ฐ์ ์๋์ ๊ฐ์ด data_dir ์๋ ๋ฐ์ดํฐ์
์ ๊ฒฝ๋ก๋ฅผ data_yaml ๋ณ์์ yaml ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํด ์ค๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ ์๋ ์ฝ๋๋ฅผ ์ํํ๋ฉด yaml ํ์ผ์ ์ ๋ณด๊ฐ ๋์ค๋๋ฐ, ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ์
์ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ์ ์ฌ๋ ธ๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์ train, val ์ ๊ฒฝ๋ก๋ฅผ ์์ ํด์ค์ผ ํ๋ค.
์ฝ๋๋ฅผ ์คํํ์ฌ yaml ํ์ผ ์ ๋ณด๋ฅผ ํ์ธํ๊ณ , film['train'], film['val'] ๋ถ๋ถ์ ์์ ํ์ฌ yaml ํ์ผ์ ์์ (๊ตฌ๊ธ ๋๋ผ์ด๋ธ์์์ ๋ฐ์ดํฐ์
๊ฒฝ๋ก)ํด์ฃผ๊ณ ๋ณ๊ฒฝ๋ ์ ๋ณด๋ฅผ ํ์ธํ๋ค.
4. YOLOv5 ๋ชจ๋ธ ํ์ต
์ด์ ์๋ ํ์ต ํ๋ผ๋ฏธํฐ๋ค์ ์ง์ ํด์ฃผ๊ณ ๋ชจ๋ธ ํ์ต์ ์์ํ๋ฉด ๋๋ค. ์ง์ ํ epoch ๋งํผ ํ์ต์ ์งํํ๊ณ ๋๋ฉด ํ์ต์ด ์ข
๋ฃ๋๊ณ 'Results saved to runs/train/exp*' ์ด๋ผ๋ ๋ฌธ๊ตฌ๊ฐ ๋จ๋๋ฐ ์ด ๊ฒฝ๋ก์ ํ์ตํ ์ ๋ณด๊ฐ ์ ์ฅ๋์๋ค๋ ๋ป์ด๋ค. exp ๋ช๋ฒ์ ์ ์ฅ๋์๋์ง ํ์ธ ํ์.
5. ํ ์๋ณด๋ ์์ํ๊ธฐ
ํ
์๋ณด๋๋ ํ์ต์ํค๋ ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ด ํ์ต๋๋ ๊ณผ์ ์ ์ฌ๋ฌ ๊ฐ์ง metric์ผ๋ก ๊ธฐ๋กํ์ฌ ์๊ฐ์ ์ผ๋ก ๋ณผ ์ ์๋ ๋๊ตฌ์ด๋ค. ์์์ ํ์ธํ exp ๋ฒํธ๋ฅผ ๋ณด๊ณ ์ผ์ชฝ ์๋์์ ์ํ๋ ํ์ต ์ ๋ณด๋ง ํํฐ๋งํด์ ๋ณผ ์ ์๋ค.
6. ํ์ตํ ๋ชจ๋ธ ํ ์คํธ
์ด์ ํ์ตํ ๋ชจ๋ธ์ ํ
์คํธ ๋ฐ์ดํฐ์
์์ ํ
์คํธ๋ฅผ ํด๋ด์ผ ํ๋ค. ์์ ํ์ธํ exp ๋ฒํธ๋ฅผ train_exp_num์ ์ ์ฅํด๋๊ณ ํ
์คํธ๋ฅผ ์คํํ๋ค. ํ
์คํธ ๋ํ ๋๋๊ณ ๋๋ฉด ํ
์คํธ ์ ๋ณด๊ฐ ์ ์ฅ๋ ๊ฒฝ๋ก๊ฐ ๋์ค๋๋ฐ ์ด exp ๋ฒํธ ๋ํ ํ์ธํด๋ฌ์ผ ํ๋ค.
ํ์ธํ ํ
์คํธ exp ๋ฒํธ๋ฅผ text_exp_num์ ์ ์ฅํ๊ณ ํ
์คํธ ๊ฒฐ๊ณผ ํ์ธ ์ฝ๋๋ฅผ ์คํํ๋ฉด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ด๋ฏธ์ง์์ ๊ฐ์ฒด๋ฅผ ๊ฒ์ถํ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์๋ค.
๋๋์ด ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ฏธ์ง๋ก ํ์ธ์ด ๊ฐ๋ฅํ๋ค. ๊ฒฐ๊ณผ๊ฐ ์ ๋์ค์ง ์์๋ค๋ฉด... ํ์ต์ด ์ด๋์ ๊ฐ ์ ๋ชป๋ ๊ฒ์ด๊ณ ์ฝ๋๋ฅผ ์ฒ์๋ถํฐ ์ ํ์ธํดํ ํ๋ค. ์ฝ๋๊ฐ ๋์๋ ๊ฐ๋๋ฐ ํ์ต์ด ์ ์๋๋ ๊ฒฝ์ฐ๊ฐ ๊ฐ์ฅ ๋ง๋งํ ๊ฒฝ์ฐ์ธ๋ฐ ๋ฐ์ดํฐ๋ก๋๊ฐ ๋ฑ์ด์ฃผ๋ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ๋ ์ด๋ธ ๋ฐ์ดํฐ๋ฅผ ํ์ธํด์ ํ์ต์ ๋ฐ์ดํฐ๊ฐ ์ ๋ค์ด๊ฐ๋์ง ๋ถํฐ ํ์ธํ๋ ๊ฒ์ ์ถ์ฒํ๋ค.
7. ๋ฒ ์คํธ ๋ชจ๋ธ ์ ์ฅ
๋ง์ง๋ง์ผ๋ก ํ์ต ์ค ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ฅ ์ข์ ๋ฒ ์คํธ ๋ชจ๋ธ์ ์ ์ฅํ ์ ์๊ณ ์ ์ฅํ ๋ชจ๋ธ์ ์ธ์ ๋ ๋ถ๋ฌ์์ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
์ต๊ทผ์ ํซํ ์ด์์ธ ์์ฑํ AI์ ํธ๋ ๋๋ฅผ ๋ฐ๋ผ๊ฐ๊ธฐ ์ํด์๋ ์ง์์ ์ธ ๊ด์ฌ์ด ํ์ํ๋ฐ์. ์ฌ๋ฌ ์ฐ์ ์์์ ์ ์ฆ ์ผ์ด์ค๋ฅผ ์ ํ์ ํ๋ ๊ฒ๋ ๊ต์ฅํ ์ค์ํฉ๋๋ค. ํด์ ์ด๋ฒ์ ์์ฑํ AI ๊ด๋ จ ์ธ๋ฏธ๋๋ฅผ ์๊ฐํด ๋๋ฆฌ๋ คํฉ๋๋ค. ์์ธ ์ฝ์์ค์์ ๋ฐ์ดํฐ ์ธํ ๋ฆฌ์ ์ค ํ๋ซํผ๊ณผ ์์ฑํ AI ๋ฐ ์ฌ๋ฌ ์ ์ฆ ์ผ์ด์ค๋ฅผ ์๊ฐํ๋ ์ธ๋ฏธ๋์ด๋ ๋ง์ ๊ด์ฌ ๋ถํ๋๋ฆฝ๋๋ค.