๐ English version
Darknet(YOLO) ์์ ๊ฐ์ฒด ์ถ์ , ๋ฉํฐ ์นด๋ฉ๋ผ ์คํธ๋ฆฌ๋ฐ, OpenMP ๋ณ๋ ฌ ์์ ์ ์น์ ํ๋ก์ ํธ์ ๋๋ค. ์๋ณธ YOLO๋ ํ๋ ์๋ง๋ค ๊ฒ์ถ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋๋ ๋ฐ์ ๋๋์ง๋ง, ์ด ์ ์ฅ์๋ ๊ฒ์ถ๋ ๊ฐ์ฒด์ ID๋ฅผ ๋ถ์ฌ ์ฐ์ ํ๋ ์์ ๊ฑธ์ณ ์ถ์ ํฉ๋๋ค.
๊ฒ์ถ๋ ๋ฐ์ค๋ฅผ ์ดํ ํ๋ ์์์๋ ๊ฐ์ ๊ฐ์ฒด๋ก ์ด์ด ์ถ์ ํฉ๋๋ค.
opencv_tracker/๋ ๋ค์ ๋ฐฉ๋ฒ์ ์กฐํฉํด ID๋ฅผ ์ ์งํฉ๋๋ค.
- MOSSE tracker
- ORB feature matching
- ์๋ ๊ธฐ๋ฐ ์์น ์์ธก
- ํ์คํ ๋ฆฌ ๊ธฐ๋ฐ ๋ณด์
๊ด๋ จ ํ์ผ: opencv_tracker/tracker_main.cpp, tracking_dot.cpp, orb.cpp, tracker.h
opencv_tracker_mosse/๋ MOSSE๋ง ์ฌ์ฉํ๋ ๋จ์ํ๋ ๋ฒ์ ์
๋๋ค.
out.txt / out.jpg ์ธํฐํ์ด์ค๋ ๋์ผํ๊ณ , ์ถ์ ์ ๋ต์ด ๋ ๊ฐ๋ณ์ต๋๋ค.
๊ด๋ จ ํ์ผ: opencv_tracker_mosse/tracker_main.cpp, tracking_dot.cpp
๋คํธ์ํฌ๋ก ๋ค์ด์ค๋ 1~4๊ฐ ์คํธ๋ฆผ์ hconcat / vconcat์ผ๋ก ํฉ์ณ YOLO ์
๋ ฅ์ผ๋ก ์๋๋ค.
STREAM ๊ฐ์ผ๋ก ์คํธ๋ฆผ ์๋ฅผ ์ง์ ํฉ๋๋ค.
๊ด๋ จ ํ์ผ: src/image_opencv.cpp, src/demo.c, include/darknet.h
open_video_stream_cus()์์ ์ฌ๋ฌ ์์ผ์ JPEG ๋ฒํผ๋ฅผ ๋ณ๋ ฌ๋ก ๋ฐ์ ๋์ฝ๋ฉํฉ๋๋ค.
๋ฃจํธ Makefile์์ OPENMP=1๋ก ํ์ฑํํฉ๋๋ค.
๊ด๋ จ ํ์ผ: Makefile, src/image_opencv.cpp
TCP ๊ธฐ๋ฐ ์นด๋ฉ๋ผ ์ก์์ ๋๊ตฌ์ ๋๋ค.
videoserver: ์นด๋ฉ๋ผ ํ๋ ์์ JPEG๋ก ์ธ์ฝ๋ฉํด ์ ์กvideoclient: ๋จ์ผ ์คํธ๋ฆผ ์์videoclient_4cam: 4์ฑ๋ ์์
๊ด๋ จ ํ์ผ: video_streaming/videoserver.cpp, videoclient.cpp, videoclient_4cam.cpp
ORB/: ORB ์ ํฉ ์คํ์ฉ ์ฝ๋video_maker/: ๊ฒฐ๊ณผ ์์ ์์ฑ ๋๊ตฌnano_cam_on.cpp,nano_cam_on.sh: ์๊ฒฉ ์ฅ๋น์์ ์คํธ๋ฆฌ๋ฐ ์๋ฒ๋ฅผ ๋์ฐ๋ ์คํฌ๋ฆฝํธ (ํ๊ฒฝ ์์กด)
| ๊ฒฝ๋ก | ์ญํ |
|---|---|
src/ |
Darknet ์์ ๋ณธ. ๋ฉํฐ ์คํธ๋ฆผ ์์ ยทํ๋ ์ ํฉ์ฑ ํฌํจ |
opencv_tracker/ |
ORB/MOSSE/์์ธก ์กฐํฉ ๋ฉ์ธ ์ถ์ ๊ธฐ |
opencv_tracker_mosse/ |
MOSSE ์ ์ฉ ๊ฒฝ๋ ์ถ์ ๊ธฐ |
video_streaming/ |
์นด๋ฉ๋ผ ์์ ์ก์์ ์ ํธ๋ฆฌํฐ |
ORB/ |
ORB ์ ํฉ ์คํ ์ฝ๋ |
video_maker/ |
๊ฒฐ๊ณผ ์์ ์์ฑ ๋๊ตฌ |
videoserver๊ฐ ์นด๋ฉ๋ผ ํ๋ ์์ ๋คํธ์ํฌ๋ก ์ ์ก- Darknet ์์ ๋ณธ์ด ์ฌ๋ฌ ์คํธ๋ฆผ์ ๋ฐ์ ํ๋์ ํ๋ ์์ผ๋ก ํฉ์ฑ
- YOLO ๊ฒ์ถ ๊ฒฐ๊ณผ๋ฅผ
out.jpg/out.txt๋ก ์ ์ฅ opencv_tracker๋๋opencv_tracker_mosse๊ฐ ํ์ผ์ ์ฝ์ด ๊ฐ์ฒด๋ง๋ค ID๋ฅผ ๋ถ์ฌ ์ถ์ - ์ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ธ๋ถ ์๋ฒ๋ก ์ ์กํ๊ฑฐ๋ ํ๋ฉด์ ์ถ๋ ฅ
YOLO ๊ฒ์ถ ๊ฒฐ๊ณผ๋ out.txt / out.jpg ํ์ผ์ ํตํด ์ถ์ ๊ธฐ์ ์ ๋ฌ๋ฉ๋๋ค.
๊ธฐ๋ณธ Makefile ์ค์ :
GPU=1
CUDNN=1
OPENCV=1
OPENMP=1
DEBUG=1make์์ฑ๋ฌผ: darknet, libdarknet.a, libdarknet.so
cd opencv_tracker && make tracker
cd opencv_tracker_mosse && make tracker
cd video_streaming && make
cd ORB && make tracker#define CAM_NUM 0
#define STREAM 4๋ก์ปฌ ์นด๋ฉ๋ผ๋ฅผ ์ธ ๊ฒฝ์ฐ CAM_NUM์, ๋คํธ์ํฌ ์คํธ๋ฆผ์ ๋ฐ์ ๊ฒฝ์ฐ STREAM์ ์กฐ์ ํฉ๋๋ค.
์นด๋ฉ๋ผ ์๋ฒ ์ฃผ์์ ํฌํธ๊ฐ ํ๋์ฝ๋ฉ๋์ด ์์ต๋๋ค. ํ๊ฒฝ์ ๋ง๊ฒ ์์ ํด์ผ ํฉ๋๋ค.
์ธ๋ถ ์๋ฒ ์ฃผ์๊ฐ ํ๋์ฝ๋ฉ๋์ด ์์ต๋๋ค.
OpenCV ์ ์ถ๋ ฅ, ๋ฉํฐ ์คํธ๋ฆผ ์์ ยทํฉ์ฑ, OpenMP ๋ณ๋ ฌ ์์ ๋ก์ง์ด ๋ชจ์ฌ ์์ต๋๋ค.
YOLO demo ๋ฃจํ์์ ์ปค์คํ
์
๋ ฅ ์์ค๋ฅผ ์ฐ๊ฒฐํ๊ณ , ์์ผ์ ์ด๊ธฐํํ๋ฉฐ out.jpg / out.txt๋ฅผ ์๋๋ค.
YOLO ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ๊ฐ์ฒด๋ณ tag์ miss count๋ฅผ ๊ด๋ฆฌํ๊ณ , ์ด๋ ์์ธก๊ณผ ํ๋ฉด ์ดํ ์ฒ๋ฆฌ๋ฅผ ์ํํฉ๋๋ค.
- IP, ํฌํธ, ์๋ฒ ์ฃผ์๊ฐ ์ฝ๋์ ํ๋์ฝ๋ฉ๋์ด ์์ต๋๋ค.
- ์๊ฒฉ ์นด๋ฉ๋ผ ์คํฌ๋ฆฝํธ๋ ํน์ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ข ์๋ฉ๋๋ค.
- YOLO์ ์ถ์ ๊ธฐ ์ฌ์ด๋ API๊ฐ ์๋๋ผ ํ์ผ(
out.txt,out.jpg)๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค. DEBUG=1์ด ๊ธฐ๋ณธ๊ฐ์ด๋ฏ๋ก ์ฑ๋ฅ๋ณด๋ค ๋๋ฒ๊น ํธ์๋ฅผ ์ฐ์ ํฉ๋๋ค.- OpenMP ์ต์ ํ๋ ๋ค์ค ์คํธ๋ฆผ ์์ ๊ฒฝ๋ก์๋ง ์ ์ฉ๋์ด ์์ต๋๋ค.