Skip to content

Latest commit

ย 

History

71 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

yoloTracker

๐ŸŒ English version

Darknet(YOLO) ์œ„์— ๊ฐ์ฒด ์ถ”์ , ๋ฉ€ํ‹ฐ ์นด๋ฉ”๋ผ ์ŠคํŠธ๋ฆฌ๋ฐ, OpenMP ๋ณ‘๋ ฌ ์ˆ˜์‹ ์„ ์–น์€ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์›๋ณธ YOLO๋Š” ํ”„๋ ˆ์ž„๋งˆ๋‹ค ๊ฒ€์ถœ ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋†“๋Š” ๋ฐ์„œ ๋๋‚˜์ง€๋งŒ, ์ด ์ €์žฅ์†Œ๋Š” ๊ฒ€์ถœ๋œ ๊ฐ์ฒด์— ID๋ฅผ ๋ถ™์—ฌ ์—ฐ์† ํ”„๋ ˆ์ž„์— ๊ฑธ์ณ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.

์›๋ณธ Darknet/YOLO ๋Œ€๋น„ ๋ณ€๊ฒฝ์ 

1. ๊ฐ์ฒด ID ์ถ”์ 

๊ฒ€์ถœ๋œ ๋ฐ•์Šค๋ฅผ ์ดํ›„ ํ”„๋ ˆ์ž„์—์„œ๋„ ๊ฐ™์€ ๊ฐ์ฒด๋กœ ์ด์–ด ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค. opencv_tracker/๋Š” ๋‹ค์Œ ๋ฐฉ๋ฒ•์„ ์กฐํ•ฉํ•ด ID๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

  • MOSSE tracker
  • ORB feature matching
  • ์†๋„ ๊ธฐ๋ฐ˜ ์œ„์น˜ ์˜ˆ์ธก
  • ํžˆ์Šคํ† ๋ฆฌ ๊ธฐ๋ฐ˜ ๋ณด์ •

๊ด€๋ จ ํŒŒ์ผ: opencv_tracker/tracker_main.cpp, tracking_dot.cpp, orb.cpp, tracker.h

2. MOSSE ์ „์šฉ ๊ฒฝ๋Ÿ‰ ์ถ”์ ๊ธฐ

opencv_tracker_mosse/๋Š” MOSSE๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋‹จ์ˆœํ™”๋œ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค. out.txt / out.jpg ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋™์ผํ•˜๊ณ , ์ถ”์  ์ „๋žต์ด ๋” ๊ฐ€๋ณ์Šต๋‹ˆ๋‹ค.

๊ด€๋ จ ํŒŒ์ผ: opencv_tracker_mosse/tracker_main.cpp, tracking_dot.cpp

3. ๋ฉ€ํ‹ฐ ์นด๋ฉ”๋ผ ์ž…๋ ฅ

๋„คํŠธ์›Œํฌ๋กœ ๋“ค์–ด์˜ค๋Š” 1~4๊ฐœ ์ŠคํŠธ๋ฆผ์„ hconcat / vconcat์œผ๋กœ ํ•ฉ์ณ YOLO ์ž…๋ ฅ์œผ๋กœ ์”๋‹ˆ๋‹ค. STREAM ๊ฐ’์œผ๋กœ ์ŠคํŠธ๋ฆผ ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ด€๋ จ ํŒŒ์ผ: src/image_opencv.cpp, src/demo.c, include/darknet.h

4. OpenMP ๋ณ‘๋ ฌ ์ˆ˜์‹ 

open_video_stream_cus()์—์„œ ์—ฌ๋Ÿฌ ์†Œ์ผ“์˜ JPEG ๋ฒ„ํผ๋ฅผ ๋ณ‘๋ ฌ๋กœ ๋ฐ›์•„ ๋””์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค. ๋ฃจํŠธ Makefile์—์„œ OPENMP=1๋กœ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.

๊ด€๋ จ ํŒŒ์ผ: Makefile, src/image_opencv.cpp

5. ์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ ๋„๊ตฌ

TCP ๊ธฐ๋ฐ˜ ์นด๋ฉ”๋ผ ์†ก์ˆ˜์‹  ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

  • videoserver: ์นด๋ฉ”๋ผ ํ”„๋ ˆ์ž„์„ JPEG๋กœ ์ธ์ฝ”๋”ฉํ•ด ์ „์†ก
  • videoclient: ๋‹จ์ผ ์ŠคํŠธ๋ฆผ ์ˆ˜์‹ 
  • videoclient_4cam: 4์ฑ„๋„ ์ˆ˜์‹ 

๊ด€๋ จ ํŒŒ์ผ: video_streaming/videoserver.cpp, videoclient.cpp, videoclient_4cam.cpp

6. ๊ธฐํƒ€ ๋ณด์กฐ ๋„๊ตฌ

  • 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/ ๊ฒฐ๊ณผ ์˜์ƒ ์ƒ์„ฑ ๋„๊ตฌ

๋™์ž‘ ํ๋ฆ„

  1. videoserver๊ฐ€ ์นด๋ฉ”๋ผ ํ”„๋ ˆ์ž„์„ ๋„คํŠธ์›Œํฌ๋กœ ์ „์†ก
  2. Darknet ์ˆ˜์ •๋ณธ์ด ์—ฌ๋Ÿฌ ์ŠคํŠธ๋ฆผ์„ ๋ฐ›์•„ ํ•˜๋‚˜์˜ ํ”„๋ ˆ์ž„์œผ๋กœ ํ•ฉ์„ฑ
  3. YOLO ๊ฒ€์ถœ ๊ฒฐ๊ณผ๋ฅผ out.jpg / out.txt๋กœ ์ €์žฅ
  4. opencv_tracker ๋˜๋Š” opencv_tracker_mosse๊ฐ€ ํŒŒ์ผ์„ ์ฝ์–ด ๊ฐ์ฒด๋งˆ๋‹ค ID๋ฅผ ๋ถ™์—ฌ ์ถ”์ 
  5. ์ถ”์  ๊ฒฐ๊ณผ๋ฅผ ์™ธ๋ถ€ ์„œ๋ฒ„๋กœ ์ „์†กํ•˜๊ฑฐ๋‚˜ ํ™”๋ฉด์— ์ถœ๋ ฅ

YOLO ๊ฒ€์ถœ ๊ฒฐ๊ณผ๋Š” out.txt / out.jpg ํŒŒ์ผ์„ ํ†ตํ•ด ์ถ”์ ๊ธฐ์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œ

Darknet ๋ณธ์ฒด

๊ธฐ๋ณธ Makefile ์„ค์ •:

GPU=1
CUDNN=1
OPENCV=1
OPENMP=1
DEBUG=1
make

์ƒ์„ฑ๋ฌผ: darknet, libdarknet.a, libdarknet.so

์ถ”์ ๊ธฐ / ๋„๊ตฌ

cd opencv_tracker       && make tracker
cd opencv_tracker_mosse && make tracker
cd video_streaming      && make
cd ORB                  && make tracker

์‹คํ–‰ ์ „ ํ™•์ธํ•  ์„ค์ •

CAM_NUM, STREAM โ€” include/darknet.h

#define CAM_NUM 0
#define STREAM 4

๋กœ์ปฌ ์นด๋ฉ”๋ผ๋ฅผ ์“ธ ๊ฒฝ์šฐ CAM_NUM์„, ๋„คํŠธ์›Œํฌ ์ŠคํŠธ๋ฆผ์„ ๋ฐ›์„ ๊ฒฝ์šฐ STREAM์„ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

์ŠคํŠธ๋ฆฌ๋ฐ IP / ํฌํŠธ โ€” src/demo.c, src/image_opencv.cpp

์นด๋ฉ”๋ผ ์„œ๋ฒ„ ์ฃผ์†Œ์™€ ํฌํŠธ๊ฐ€ ํ•˜๋“œ์ฝ”๋”ฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ถ”์  ๊ฒฐ๊ณผ ์ „์†ก ์„œ๋ฒ„ โ€” opencv_tracker/tracker_main.cpp

์™ธ๋ถ€ ์„œ๋ฒ„ ์ฃผ์†Œ๊ฐ€ ํ•˜๋“œ์ฝ”๋”ฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ์ปค์Šคํ…€ ํฌ์ธํŠธ

src/image_opencv.cpp

OpenCV ์ž…์ถœ๋ ฅ, ๋ฉ€ํ‹ฐ ์ŠคํŠธ๋ฆผ ์ˆ˜์‹ ยทํ•ฉ์„ฑ, OpenMP ๋ณ‘๋ ฌ ์ˆ˜์‹  ๋กœ์ง์ด ๋ชจ์—ฌ ์žˆ์Šต๋‹ˆ๋‹ค.

src/demo.c

YOLO demo ๋ฃจํ”„์—์„œ ์ปค์Šคํ…€ ์ž…๋ ฅ ์†Œ์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ , ์†Œ์ผ“์„ ์ดˆ๊ธฐํ™”ํ•˜๋ฉฐ out.jpg / out.txt๋ฅผ ์”๋‹ˆ๋‹ค.

opencv_tracker/

YOLO ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„ ๊ฐ์ฒด๋ณ„ tag์™€ miss count๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ์ด๋™ ์˜ˆ์ธก๊ณผ ํ™”๋ฉด ์ดํƒˆ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์˜ ์‚ฌํ•ญ

  • IP, ํฌํŠธ, ์„œ๋ฒ„ ์ฃผ์†Œ๊ฐ€ ์ฝ”๋“œ์— ํ•˜๋“œ์ฝ”๋”ฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์›๊ฒฉ ์นด๋ฉ”๋ผ ์Šคํฌ๋ฆฝํŠธ๋Š” ํŠน์ • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์— ์ข…์†๋ฉ๋‹ˆ๋‹ค.
  • YOLO์™€ ์ถ”์ ๊ธฐ ์‚ฌ์ด๋Š” API๊ฐ€ ์•„๋‹ˆ๋ผ ํŒŒ์ผ(out.txt, out.jpg)๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.
  • DEBUG=1์ด ๊ธฐ๋ณธ๊ฐ’์ด๋ฏ€๋กœ ์„ฑ๋Šฅ๋ณด๋‹ค ๋””๋ฒ„๊น… ํŽธ์˜๋ฅผ ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • OpenMP ์ตœ์ ํ™”๋Š” ๋‹ค์ค‘ ์ŠคํŠธ๋ฆผ ์ˆ˜์‹  ๊ฒฝ๋กœ์—๋งŒ ์ ์šฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

About

Object tracker using YOLO

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages