์ฝ˜ํ…์ธ ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๋น ๋ฅธ ์‹œ์ž‘ ๊ฐ€์ด๋“œ: ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด ๋ฐ Pi ์นด๋ฉ”๋ผ( YOLOv5 ๋ฐ YOLOv8

์ด ์ข…ํ•ฉ ๊ฐ€์ด๋“œ๋Š” Pi ์นด๋ฉ”๋ผ๋ฅผ ์‚ฌ์šฉํ•ด ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์—์„œ ๋ฌผ์ฒด ๊ฐ์ง€ ๋ชจ๋ธ( YOLO )์„ ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋Š” ํ•™์ƒ, ์ทจ๋ฏธ ํ™œ๋™๊ฐ€, ์ „๋ฌธ๊ฐ€ ๋“ฑ ๋ˆ„๊ตฌ๋‚˜ 30๋ถ„ ์ด๋‚ด์— ์‹œ์ž‘ํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์˜ ์ง€์นจ์€ ์„ค์ • ๋ฌธ์ œ๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์—„๊ฒฉํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์ณค์œผ๋ฏ€๋กœ ํŠน์ • ํ”„๋กœ์ ํŠธ์— YOLO ์„ ํ™œ์šฉํ•˜๋Š” ๋ฐ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



Watch: ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด 5 ์—…๋ฐ์ดํŠธ ๋ฐ ๊ฐœ์„  ์‚ฌํ•ญ.

์ „์ œ ์กฐ๊ฑด

  • ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด 3, 4, 5
  • Pi ์นด๋ฉ”๋ผ
  • 64๋น„ํŠธ ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด ์šด์˜ ์ฒด์ œ

CSI ์ผ€์ด๋ธ”์„ ํ†ตํ•ด Pi ์นด๋ฉ”๋ผ๋ฅผ ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์— ์—ฐ๊ฒฐํ•˜๊ณ  64๋น„ํŠธ ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด ์šด์˜์ฒด์ œ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ์นด๋ฉ”๋ผ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค:

libcamera-hello

์นด๋ฉ”๋ผ์—์„œ ๋น„๋””์˜ค ํ”ผ๋“œ๊ฐ€ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

YOLO ๋ฒ„์ „ ์„ ํƒ: YOLOv5 ๋˜๋Š” YOLOv8

์ด ๊ฐ€์ด๋“œ๋Š” ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. YOLOv5 ๋˜๋Š” YOLOv8. ๋‘ ๋ฒ„์ „ ๋ชจ๋‘ ๊ณ ์œ ํ•œ ์žฅ์ ๊ณผ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ํƒ์€ ์—ฌ๋Ÿฌ๋ถ„์˜ ๋ชซ์ด์ง€๋งŒ, ์ด ๊ฐ€์ด๋“œ์˜ ๋ชฉํ‘œ๋Š” ๋น ๋ฅธ ์„ค์ •๋ฟ ์•„๋‹ˆ๋ผ ํ–ฅํ›„ ๊ฐ์ฒด ๊ฐ์ง€ ์ž‘์—…์„ ์œ„ํ•œ ๊ฒฌ๊ณ ํ•œ ํ† ๋Œ€๋ฅผ ๋งˆ๋ จํ•˜๋Š” ๊ฒƒ์ž„์„ ๊ธฐ์–ตํ•˜์„ธ์š”.

ํ•˜๋“œ์›จ์–ด ์‚ฌ์–‘: ํ•œ๋ˆˆ์— ๋ณด๊ธฐ

์ •๋ณด์— ์ž…๊ฐํ•œ ํ•˜๋“œ์›จ์–ด ๊ฒฐ์ •์„ ๋•๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ํ‘œ์— ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด 3, 4, 5์˜ ์ฃผ์š” ํ•˜๋“œ์›จ์–ด ์‚ฌ์–‘์„ ์š”์•ฝํ•ด ๋†“์•˜์Šต๋‹ˆ๋‹ค:

๊ธฐ๋Šฅ ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด 3 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด 4 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด 5
CPU 1.2GHz ์ฟผ๋“œ ์ฝ”์–ด ARM ์ฝ”์–ดํ…์Šค-A53 1.5GHz ์ฟผ๋“œ ์ฝ”์–ด 64๋น„ํŠธ ARM ์ฝ”์–ดํ…์Šค-A72 2.4GHz ์ฟผ๋“œ ์ฝ”์–ด 64๋น„ํŠธ Arm Cortex-A76
RAM 1GB LPDDR2 2GB, 4GB ๋˜๋Š” 8GB LPDDR4 ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„์ง ์ œ๊ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
USB ํฌํŠธ USB 2.0 4๊ฐœ USB 2.0 2๊ฐœ, USB 3.0 2๊ฐœ USB 3.0 2๊ฐœ, USB 2.0 2๊ฐœ
๋„คํŠธ์›Œํฌ ์ด๋”๋„ท ๋ฐ Wi-Fi 802.11n ๊ธฐ๊ฐ€๋น„ํŠธ ์ด๋”๋„ท ๋ฐ Wi-Fi 802.11ac PoE+๋ฅผ ์ง€์›ํ•˜๋Š” ๊ธฐ๊ฐ€๋น„ํŠธ ์ด๋”๋„ท, ๋“€์–ผ ๋ฐด๋“œ 802.11ac Wi-Fiยฎ
์„ฑ๋Šฅ ๋” ๋Š๋ฆฌ๊ณ , ๋” ๊ฐ€๋ฒผ์šด YOLO ๋ชจ๋ธ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ๋น ๋ฅด๊ฒŒ, ๋ณต์žกํ•œ YOLO ๋ชจ๋ธ ์‹คํ–‰ ๊ฐ€๋Šฅ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„์ง ์ œ๊ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ „๋ ฅ ์š”๊ตฌ ์‚ฌํ•ญ 2.5A ์ „์› ๊ณต๊ธ‰ ์žฅ์น˜ 3.0A USB-C ์ „์› ๊ณต๊ธ‰ ์žฅ์น˜ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„์ง ์ œ๊ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ณต์‹ ๋ฌธ์„œ ๋งํฌ ๋งํฌ ๋งํฌ

์›ํ™œํ•œ ์„ค์ • ๊ณผ์ •์„ ์œ„ํ•ด ์‚ฌ์šฉ ์ค‘์ธ ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด ๋ชจ๋ธ์— ๋งž๋Š” ์ง€์นจ์„ ๋”ฐ๋ฅด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋น ๋ฅธ ์‹œ์ž‘ YOLOv5

์ด ์„น์…˜์—์„œ๋Š” ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์—์„œ Pi ์นด๋ฉ”๋ผ๋กœ YOLOv5 ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„๋Š” ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด OS ๋ถˆ์Šค์•„์ด์— ๋„์ž…๋œ libcamera ์นด๋ฉ”๋ผ ์Šคํƒ๊ณผ ํ˜ธํ™˜๋˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜

  1. ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค:

    sudo apt-get update
    sudo apt-get upgrade -y
    sudo apt-get autoremove -y
    
  2. YOLOv5 ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋ณต์ œํ•ฉ๋‹ˆ๋‹ค:

    cd ~
    git clone https://github.com/Ultralytics/yolov5.git
    
  3. ํ•„์š”ํ•œ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค:

    cd ~/yolov5
    pip3 install -r requirements.txt
    
  4. ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด 3์˜ ๊ฒฝ์šฐ ํ˜ธํ™˜๋˜๋Š” ๋ฒ„์ „์˜ PyTorch ๋ฐ Torchvision์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค(๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด 4์˜ ๊ฒฝ์šฐ ๊ฑด๋„ˆ๋›ฐ๊ธฐ):

    pip3 uninstall torch torchvision
    pip3 install torch==1.11.0 torchvision==0.12.0
    

์ˆ˜์ • detect.py

SSH ๋˜๋Š” CLI ๋ฅผ ํ†ตํ•ด TCP ์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ์—์„œ ์•ฝ๊ฐ„์˜ ์ˆ˜์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. detect.py.

  1. ์—ด๊ธฐ detect.py:

    sudo nano ~/yolov5/detect.py
    
  2. ์ฐพ๊ธฐ ๋ฐ ์ˆ˜์ • is_url ๋ผ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ TCP ์ŠคํŠธ๋ฆผ์„ ์ˆ˜๋ฝํ•ฉ๋‹ˆ๋‹ค:

    is_url = source.lower().startswith(('rtsp://', 'rtmp://', 'http://', 'https://', 'tcp://'))
    
  3. ๋Œ“๊ธ€๋กœ view_img ๋ผ์ธ:

    # view_img = check_imshow(warn=True)
    
  4. ์ €์žฅํ•˜๊ณ  ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค:

    CTRL + O -> ENTER -> CTRL + X
    

Libcamera๋กœ TCP ์ŠคํŠธ๋ฆผ ์‹œ์ž‘ํ•˜๊ธฐ

  1. TCP ์ŠคํŠธ๋ฆผ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค:

    libcamera-vid -n -t 0 --width 1280 --height 960 --framerate 1 --inline --listen -o tcp://127.0.0.1:8888
    

๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์œ„ํ•ด ์ด ํ„ฐ๋ฏธ๋„ ์„ธ์…˜์„ ๊ณ„์† ์‹คํ–‰ํ•˜์„ธ์š”.

YOLOv5 ์ถ”๋ก  ์ˆ˜ํ–‰

  1. YOLOv5 ํƒ์ง€๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:

    cd ~/yolov5
    python3 detect.py --source=tcp://127.0.0.1:8888
    

๋น ๋ฅธ ์‹œ์ž‘ YOLOv8

๋Œ€์‹  YOLOv8 ์„ค์ •์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ์„น์…˜์„ ๋”ฐ๋ฅด์„ธ์š”. ๋‹จ๊ณ„๋Š” ๋งค์šฐ ์œ ์‚ฌํ•˜์ง€๋งŒ YOLOv8 ์˜ ํŠน์ • ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์กฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ํŒจํ‚ค์ง€ ์„ค์น˜

  1. ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค:

    sudo apt-get update
    sudo apt-get upgrade -y
    sudo apt-get autoremove -y
    
  2. ์„ค์น˜ ultralytics Python ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค:

    pip3 install ultralytics
    
  3. ์žฌ๋ถ€ํŒ…ํ•ฉ๋‹ˆ๋‹ค:

    sudo reboot
    

Libcamera๋กœ TCP ์ŠคํŠธ๋ฆผ ์‹œ์ž‘ํ•˜๊ธฐ

  1. TCP ์ŠคํŠธ๋ฆผ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค:

    libcamera-vid -n -t 0 --width 1280 --height 960 --framerate 1 --inline --listen -o tcp://127.0.0.1:8888
    

YOLOv8 ์ถ”๋ก  ์ˆ˜ํ–‰

YOLOv8 ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๋ก ์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ๋‹ค์Œ Python ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

from ultralytics import YOLO

model = YOLO('yolov8n.pt')
results = model('tcp://127.0.0.1:8888', stream=True)

while True:
    for result in results:
        boxes = result.boxes
        probs = result.probs

๋‹ค์Œ ๋‹จ๊ณ„

๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด์— YOLO ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์„ค์น˜ํ•˜์‹  ๊ฒƒ์„ ์ถ•ํ•˜๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๋” ๋งŽ์€ ํ•™์Šต๊ณผ ์ง€์›์„ ์›ํ•˜์‹œ๋ฉด Ultralytics ์™€ ์นด์Šˆ๋ฏธ๋ฅด ์›”๋“œ ์žฌ๋‹จ์„ ๋ฐฉ๋ฌธํ•˜์„ธ์š”.

๊ฐ์‚ฌ ๋ฐ ์ธ์šฉ

์ด ๊ฐ€์ด๋“œ๋Š” ๋ฉธ์ข… ์œ„๊ธฐ ์ข… ๋ณด์กด์„ ์œ„ํ•ด YOLO ์„ ์‚ฌ์šฉํ•˜๋Š” ๋‹จ์ฒด์ธ ์นด์Šˆ๋ฏธ๋ฅด ์›”๋“œ ์žฌ๋‹จ์„ ์œ„ํ•ด ๋‹ค์•ˆ ์—˜ํŒ…ํฌ๊ฐ€ ์ฒ˜์Œ์— ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ์ฒด ๊ฐ์ง€ ๊ธฐ์ˆ  ๋ถ„์•ผ์—์„œ ์„ ๊ตฌ์ ์ธ ์ž‘์—…๊ณผ ๊ต์œก์— ์ค‘์ ์„ ๋‘” ์ด ๋‹จ์ฒด์˜ ๊ณต๋กœ๋ฅผ ์ธ์ •ํ•ฉ๋‹ˆ๋‹ค.

์นด์Šˆ๋ฏธ๋ฅด ์›”๋“œ ์žฌ๋‹จ์˜ ํ™œ๋™์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์›น์‚ฌ์ดํŠธ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



์ƒ์„ฑ 2023-11-12, ์—…๋ฐ์ดํŠธ 2024-02-03
์ž‘์„ฑ์ž: glenn-jocher (2)

๋Œ“๊ธ€