์๋ IMX500 ๋ด๋ณด๋ด๊ธฐ ๋์ Ultralytics YOLOv8
์ด ๊ฐ์ด๋๋ ์๋ IMX500 ์ผ์๊ฐ ํ์ฌ๋ ๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด AI ์นด๋ฉ๋ผ์ Ultralytics YOLOv8 ๋ชจ๋ธ์ ๋ด๋ณด๋ด๊ณ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃน๋๋ค.
๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด AI ์นด๋ฉ๋ผ์ ๊ฐ์ด ์ฐ์ฐ ๋ฅ๋ ฅ์ด ์ ํ๋ ๋๋ฐ์ด์ค์ ์ปดํจํฐ ๋น์ ๋ชจ๋ธ์ ๋ฐฐํฌํ๋ ๊ฒ์ ๊น๋ค๋ก์ธ ์ ์์ต๋๋ค. ๋ ๋น ๋ฅธ ์ฑ๋ฅ์ ์ต์ ํ๋ ๋ชจ๋ธ ํ์์ ์ฌ์ฉํ๋ฉด ํฐ ์ฐจ์ด๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
IMX500 ๋ชจ๋ธ ํฌ๋งท์ ์ ๊ฒฝ๋ง์ ๋น ๋ฅธ ์ฑ๋ฅ์ ์ ๊ณตํ๋ฉด์ ์ต์ํ์ ์ ๋ ฅ์ ์ฌ์ฉํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ณ ์ ๋ฐ ์ ์ ๋ ฅ ์ถ๋ก ์ ์ํ Ultralytics YOLOv8 ๋ชจ๋ธ์ ๊ณ ์ ๋ฐ ์ ์ ๋ ฅ ์ถ๋ก ์ ์ต์ ํํ ์ ์์ต๋๋ค. ์ด ๊ฐ์ด๋์์๋ ๋ชจ๋ธ์ IMX500 ํฌ๋งท์ผ๋ก ๋ด๋ณด๋ด๊ณ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ์๋ดํ๋ ๋์์ ๋ชจ๋ธ์ด Raspberry Pi AI ์นด๋ฉ๋ผ์์ ๋ ์ ์๋ํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
IMX500์ผ๋ก ๋ด๋ณด๋ด์ผ ํ๋ ์ด์
์๋์ IMX500 ์ง๋ฅํ ๋น์ ์ผ์๋ ์์ง AI ํ๋ก์ธ์ฑ์ ํ๋๋ฅผ ๋ฐ๊พธ๋ ํ๋์จ์ด์
๋๋ค. ์จ์นฉ AI ๊ธฐ๋ฅ์ ๊ฐ์ถ ์ธ๊ณ ์ต์ด์ ์ง๋ฅํ ๋น์ ์ผ์์
๋๋ค. ์ด ์ผ์๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ณ๋ชฉ ํ์, ๊ฐ์ธ์ ๋ณด ๋ณดํธ ๋ฌธ์ , ์ฑ๋ฅ ์ ํ ๋ฑ ์ฃ์ง AI์ ์ฌ๋ฌ ๋ฌธ์ ๋ฅผ ๊ทน๋ณตํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ค๋ฅธ ์ผ์๋ ์ด๋ฏธ์ง์ ํ๋ ์๋ง ์ ๋ฌํ์ง๋ง IMX500์ ์ ์ฒด ์คํ ๋ฆฌ๋ฅผ ์ ๋ฌํฉ๋๋ค. ์ผ์์์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ์ฌ ๋๋ฐ์ด์ค๊ฐ ์ค์๊ฐ์ผ๋ก ์ธ์ฌ์ดํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์๋ IMX500 ๋ด๋ณด๋ด๊ธฐ( YOLOv8 ๋ชจ๋ธ์ฉ)
IMX500์ ๋๋ฐ์ด์ค๊ฐ ํด๋ผ์ฐ๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ฌ ์ฒ๋ฆฌํ ํ์ ์์ด ์ผ์์์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ํ์ ํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
IMX500์ ์์ํ๋ ๋ชจ๋ธ๊ณผ ํจ๊ป ์๋ํฉ๋๋ค. ์์ํ๋ ์ ํ๋๋ฅผ ํฌ๊ฒ ๋จ์ด๋จ๋ฆฌ์ง ์์ผ๋ฉด์๋ ๋ชจ๋ธ์ ๋ ์๊ณ ๋น ๋ฅด๊ฒ ๋ง๋ญ๋๋ค. ์ง์ฐ ์๊ฐ์ ์ค์ด๊ณ ํด๋ผ์ฐ๋์ ์์กดํ์ง ์๊ณ ๋ก์ปฌ์์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋น ๋ฅด๊ฒ ์๋ตํ ์ ์๋๋ก ์ง์ํ๋ฏ๋ก ์ฃ์ง ์ปดํจํ ์ ์ ํ๋ ๋ฆฌ์์ค์ ์ด์์ ์ ๋๋ค. ๋ํ ๋ก์ปฌ ์ฒ๋ฆฌ๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ๊ฐ ์๊ฒฉ ์๋ฒ๋ก ์ ์ก๋์ง ์์ผ๋ฏ๋ก ๋น๊ณต๊ฐ๋ก ์์ ํ๊ฒ ์ ์ง๋ฉ๋๋ค.
IMX500 ์ฃผ์ ๊ธฐ๋ฅ:
- ๋ฉํ๋ฐ์ดํฐ ์ถ๋ ฅ: IMX500์ ์ด๋ฏธ์ง๋ง ์ ์กํ๋ ๋์ ์ด๋ฏธ์ง์ ๋ฉํ๋ฐ์ดํฐ(์ถ๋ก ๊ฒฐ๊ณผ)๋ฅผ ๋ชจ๋ ์ถ๋ ฅํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ ํฌ๊ธฐ๋ฅผ ์ต์ํํ๊ณ ๋์ญํญ์ ์ค์ด๋ฉฐ ๋น์ฉ์ ์ ๊ฐํ๊ธฐ ์ํด ๋ฉํ๋ฐ์ดํฐ๋ง ์ถ๋ ฅํ ์ ์์ต๋๋ค.
- ๊ฐ์ธ์ ๋ณด ๋ณดํธ ๋ฌธ์ ํด๊ฒฐ: IMX500์ ๋๋ฐ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํจ์ผ๋ก์จ ๊ฐ์ธ์ ๋ณด ๋ณดํธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ฌ ์ธ์ ์ ๊ณ์ฐ ๋ฐ ์ฌ์ค์ ์ถ์ ๊ณผ ๊ฐ์ ์ฌ๋ ์ค์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์์ ์ ๋๋ค.
- ์ค์๊ฐ ์ฒ๋ฆฌ: ๋น ๋ฅธ ์จ-์ผ์ ์ฒ๋ฆฌ๋ก ์ค์๊ฐ ์์ฌ ๊ฒฐ์ ์ ์ง์ํ์ฌ ์์จ ์์คํ ๊ณผ ๊ฐ์ ์ฃ์ง AI ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํฉ๋๋ค.
์์ํ๊ธฐ ์ ์: ์ต์์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ผ๋ ค๋ฉด ๋ชจ๋ธ ๊ต์ก ๊ฐ์ด๋, ๋ฐ์ดํฐ ์ค๋น ๊ฐ์ด๋, ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋ ๊ฐ์ด๋์ ๋ฐ๋ผ YOLOv8 ๋ชจ๋ธ์ ๋ด๋ณด๋ด๊ธฐ ์ํ ์ค๋น๊ฐ ์๋ฃ๋์๋์ง ํ์ธํ์ธ์.
์ฌ์ฉ ์
Ultralytics YOLOv8 ๋ชจ๋ธ์ IMX500 ํ์์ผ๋ก ๋ด๋ณด๋ด๊ณ ๋ด๋ณด๋ธ ๋ชจ๋ธ๋ก ์ถ๋ก ์ ์คํํฉ๋๋ค.
์ฐธ๊ณ
IMX export is currently only supported for the YOLOv8n model. Here we perform inference just to make sure the model works as expected. However, for deployment and inference on the Raspberry Pi AI Camera, please jump to Using IMX500 Export in Deployment section.
์
from ultralytics import YOLO
# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")
# Export the model
model.export(format="imx") # exports with PTQ quantization by default
# Load the exported model
imx_model = YOLO("yolov8n_imx_model")
# Run inference
results = imx_model("https://ultralytics.com/images/bus.jpg")
๋ด๋ณด๋ด๊ธฐ ํ๋ก์ธ์ค๋ ์ ๋ํ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํ ONNX ๋ชจ๋ธ์ ๋ค์๊ณผ ๊ฐ์ ๋๋ ํฐ๋ฆฌ์ ํจ๊ป ์์ฑํฉ๋๋ค. <model-name>_imx_model
. ์ด ๋๋ ํฐ๋ฆฌ์๋ packerOut.zip
ํ์ผ์ IMX500 ํ๋์จ์ด์ ๋ฐฐํฌํ๊ธฐ ์ํด ๋ชจ๋ธ์ ํจํค์งํ๋ ๋ฐ ํ์์ ์ธ ํ์ผ์
๋๋ค. ๋ํ <model-name>_imx_model
ํด๋์๋ ํ
์คํธ ํ์ผ(labels.txt
) ๋ชจ๋ธ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ๋ ์ด๋ธ์ ๋์ดํฉ๋๋ค.
yolov8n_imx_model
โโโ dnnParams.xml
โโโ labels.txt
โโโ packerOut.zip
โโโ yolov8n_imx.onnx
โโโ yolov8n_imx500_model_MemoryReport.json
โโโ yolov8n_imx500_model.pbtxt
์ธ์
๋ชจ๋ธ์ IMX500 ํฌ๋งท์ผ๋ก ๋ด๋ณด๋ผ ๋ ๋ค์ํ ์ธ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค:
ํค | ๊ฐ์น | ์ค๋ช |
---|---|---|
format |
imx |
๋ด๋ณด๋ผ ํ์(imx) |
int8 |
True |
๋ชจ๋ธ์ INT8 ์์ํ๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ํฉ๋๋ค(๊ธฐ๋ณธ๊ฐ์
๋๋ค: True ) |
imgsz |
640 |
๋ชจ๋ธ ์
๋ ฅ์ฉ ์ด๋ฏธ์ง ํฌ๊ธฐ(๊ธฐ๋ณธ๊ฐ์
๋๋ค: 640 ) |
๋ฐฐํฌ ์ IMX500 ๋ด๋ณด๋ด๊ธฐ ์ฌ์ฉ
Ultralytics YOLOv8n ๋ชจ๋ธ์ IMX500 ํ์์ผ๋ก ๋ด๋ณด๋ธ ํ, ์ถ๋ก ์ ์ํด ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด AI ์นด๋ฉ๋ผ์ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
ํ๋์จ์ด ์ฌ์ ์๊ตฌ ์ฌํญ
์๋ ํ๋์จ์ด๊ฐ ์๋์ง ํ์ธํ์ธ์:
- ๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด 5 ๋๋ ๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด 4 ๋ชจ๋ธ B
- ๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด AI ์นด๋ฉ๋ผ
๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด AI ์นด๋ฉ๋ผ๋ฅผ ๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด์ 15ํ MIPI CSI ์ปค๋ฅํฐ์ ์ฐ๊ฒฐํ๊ณ ๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด์ ์ ์์ ์ผญ๋๋ค.
์ํํธ์จ์ด ์ฌ์ ์๊ตฌ ์ฌํญ
์ฐธ๊ณ
์ด ๊ฐ์ด๋๋ ๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด 5์์ ์คํ๋๋ ๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด OS ๋ถ์์ผ๋ก ํ ์คํธ๋์์ต๋๋ค.
1๋จ๊ณ: ํฐ๋ฏธ๋ ์ฐฝ์ ์ด๊ณ ๋ค์ ๋ช ๋ น์ ์คํํ์ฌ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด ์ํํธ์จ์ด๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
2๋จ๊ณ: ํจํค์ ๋๊ตฌ์ ํจ๊ป IMX500 ์ผ์๋ฅผ ์๋ํ๋ ๋ฐ ํ์ํ IMX500 ํ์จ์ด๋ฅผ ์ค์นํฉ๋๋ค.
3๋จ๊ณ: ์คํ์ ์ํ ํ์ ๊ตฌ์ฑ ์์ ์ค์นํ๊ธฐ picamera2
์ ํ๋ฆฌ์ผ์ด์
์ ๋ค์ด๋ก๋ํฉ๋๋ค. ๋์ค์ ๋ฐฐํฌ ํ๋ก์ธ์ค์์ ์ด ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ์ฉํ ๊ฒ์
๋๋ค.
4๋จ๊ณ: ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ๋ ค๋ฉด Raspberry Pi๋ฅผ ์ฌ๋ถํ ํฉ๋๋ค.
๋ชจ๋ธ ํจํค์งํ ๋ฐ AI ์นด๋ฉ๋ผ์ ๋ฐฐํฌ
ํ๋ ํ packerOut.zip
ํ์ผ์ ํจํค์ ๋๊ตฌ๋ก ์ ๋ฌํ์ฌ RPK ํ์ผ์ ์ป์ ์ ์์ต๋๋ค. ์ด ํ์ผ์ ๋ค์์ ์ฌ์ฉํ์ฌ AI ์นด๋ฉ๋ผ์ ์ง์ ๋ฐฐํฌํ ์ ์์ต๋๋ค. picamera2
.
1๋จ๊ณ: ๋ชจ๋ธ์ RPK ํ์ผ๋ก ํจํค์งํํ๊ธฐ
์์ ๊ฐ์ด ํ๋ฉด network.rpk
ํ์ผ์ ์ง์ ๋ ์ถ๋ ฅ ํด๋์ ์ ์ฅํฉ๋๋ค.
2๋จ๊ณ: ๋ณต์ picamera2
๋ฆฌํฌ์งํ ๋ฆฌ๋ก ์ด๋ํ์ฌ ์ค์นํ ํ imx500 ์์ ๋ก ์ด๋ํฉ๋๋ค.
git clone -b next https://github.com/raspberrypi/picamera2
cd picamera2
pip install -e . --break-system-packages
cd examples/imx500
3๋จ๊ณ: IMX500 ๋ด๋ณด๋ด๊ธฐ ์ค์ ์์ฑ๋ labels.txt ํ์ผ์ ์ฌ์ฉํ์ฌ YOLOv8 ๊ฐ์ฒด ๊ฐ์ง๋ฅผ ์คํํฉ๋๋ค.
python imx500_object_detection_demo.py --model <path to network.rpk> --fps 25 --bbox-normalization --ignore-dash-labels --bbox-order xy --labels <path to labels.txt>
๊ทธ๋ฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ค์๊ฐ ์ถ๋ก ์ถ๋ ฅ์ ๋ณผ ์ ์์ต๋๋ค.
๋ฒค์น๋งํฌ
YOLOv8 ์๋ ๋ฒค์น๋งํฌ๋ Ultralytics ํ์์ ๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด AI ์นด๋ฉ๋ผ๋ก ์คํํ ๊ฒ์
๋๋ค. imx
์๋์ ์ ํ๋๋ฅผ ์ธก์ ํ๋ ๋ชจ๋ธ ํ์์
๋๋ค.
๋ชจ๋ธ | ํ์ | ์ํ | ํฌ๊ธฐ(MB) | mAP50-95(B) | ์ถ๋ก ์๊ฐ(ms/im) |
---|---|---|---|---|---|
YOLOv8n | imx | โ | 2.9 | 0.522 | 66.66 |
์ฐธ๊ณ
์์ ๋ฒค์น๋งํฌ์ ๋ํ ๊ฒ์ฆ์ coco8 ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋์์ต๋๋ค.
ํ๋ ์์๋ ๋ฌด์์ด ์๋์?
์๋ ๋ชจ๋ธ ์์ถ ํดํท(MCT)
์๋์ ๋ชจ๋ธ ์์ถ ํดํท(MCT) ์ ์์ํ ๋ฐ ๊ฐ์ง์น๊ธฐ๋ฅผ ํตํด ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ์ต์ ํํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. ๋ค์ํ ์์ํ ๋ฐฉ๋ฒ์ ์ง์ํ๊ณ ๊ณ ๊ธ ์๊ณ ๋ฆฌ์ฆ์ ์ ๊ณตํ์ฌ ์ ํ๋๋ฅผ ํฌ๊ฒ ์ ํ์ํค์ง ์์ผ๋ฉด์๋ ๋ชจ๋ธ ํฌ๊ธฐ์ ๊ณ์ฐ ๋ณต์ก์ฑ์ ์ค์ผ ์ ์์ต๋๋ค. MCT๋ ๋ฆฌ์์ค๊ฐ ์ ํ๋ ๋๋ฐ์ด์ค์ ๋ชจ๋ธ์ ๋ฐฐํฌํ๋ ๋ฐ ํนํ ์ ์ฉํ๋ฉฐ, ํจ์จ์ ์ธ ์ถ๋ก ๊ณผ ์ง์ฐ ์๊ฐ ๋จ์ถ์ ๋ณด์ฅํฉ๋๋ค.
MCT์ ์ง์ ๊ธฐ๋ฅ
์๋์ MCT๋ ์ ๊ฒฝ๋ง ๋ชจ๋ธ์ ์ต์ ํํ๋๋ก ์ค๊ณ๋ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค:
- ๊ทธ๋ํ ์ต์ ํ: ์ผ๊ด ์ ๊ทํ์ ๊ฐ์ ๋ ์ด์ด๋ฅผ ์ด์ ๋ ์ด์ด๋ก ์ ์ด์ ๋ชจ๋ธ์ ๋ณด๋ค ํจ์จ์ ์ธ ๋ฒ์ ์ผ๋ก ๋ณํํฉ๋๋ค.
- ์์ํ ํ๋ผ๋ฏธํฐ ๊ฒ์: ํ๊ท ์ ๊ณฑ ์ค์ฐจ, ํด๋ฆฌํ ์์, ํ๊ท ํ๊ท ์ค์ฐจ ๋ฑ์ ๋ฉํธ๋ฆญ์ ์ฌ์ฉํ์ฌ ์์ํ ๋ ธ์ด์ฆ๋ฅผ ์ต์ํํฉ๋๋ค.
- ๊ณ ๊ธ ์ ๋ํ ์๊ณ ๋ฆฌ์ฆ:
- ์ํํธ ๋ค๊ฑฐํฐ๋ธ ๋ณด์ : ๋์นญ ํ์ฑํ ์์ํ๋ก ์ธํ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
- ์ด์๊ฐ ํํฐ๋ง: z-score๋ฅผ ์ฌ์ฉํ์ฌ ์ด์๊ฐ์ ๊ฐ์งํ๊ณ ์ ๊ฑฐํฉ๋๋ค.
- ํด๋ฌ์คํฐ๋ง: ๋ ๋์ ๋ถํฌ ๋งค์นญ์ ์ํด ๊ท ์ผํ์ง ์์ ์์ํ ๊ฒฉ์๋ฅผ ํ์ฉํฉ๋๋ค.
- ํผํฉ ์ ๋ฐ๋ ๊ฒ์: ๊ฐ๋์ ๋ฐ๋ผ ๋ ์ด์ด๋น ์๋ก ๋ค๋ฅธ ์์ํ ๋นํธ ํญ์ ํ ๋นํฉ๋๋ค.
- ์๊ฐํ: ๋ชจ๋ธ ์ฑ๋ฅ ์ธ์ฌ์ดํธ, ์์ํ ๋จ๊ณ ๋ฐ ๋นํธ ํญ ๊ตฌ์ฑ์ ๊ด์ฐฐํ๋ ค๋ฉด TensorBoard๋ฅผ ์ฌ์ฉํ์ธ์.
์ ๋ํ
MCT๋ ๋ชจ๋ธ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ์ถ๋ก ์๋๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ์ฌ๋ฌ ๊ฐ์ง ์ ๋ํ ๋ฐฉ๋ฒ์ ์ง์ํฉ๋๋ค:
- ๊ต์ก ํ ์ ๋ํ(PTQ):
- Keras ๋ฐ PyTorch API๋ฅผ ํตํด ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋ณต์ก์ฑ: ๋ฎ์
- ๊ณ์ฐ ๋น์ฉ: ๋ฎ์ (CPU ๋ถ)
- ๊ทธ๋๋์ธํธ ๊ธฐ๋ฐ ํ์ต ํ ์ ๋ํ(GPTQ):
- Keras ๋ฐ PyTorch API๋ฅผ ํตํด ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋ณต์ก์ฑ: ์ค๊ฐ
- ๊ณ์ฐ ๋น์ฉ: ๋ณดํต(2~3 GPU ์๊ฐ)
- ์๋ํ ์ธ์ ๊ต์ก(QAT):
- ๋ณต์ก์ฑ: ๋์
- ์ปดํจํ ๋น์ฉ: ๋์(12-36 GPU ์๊ฐ)
MCT๋ ๊ฐ์ค์น ๋ฐ ํ์ฑํ์ ๋ํ ๋ค์ํ ์ ๋ํ ์ฒด๊ณ๋ ์ง์ํฉ๋๋ค:
- ํ์ ์ค๋ธ ํฌ(ํ๋์จ์ด ์นํ์ )
- ๋์นญ
- ์ ๋ํผ
๊ตฌ์กฐํ๋ ๊ฐ์ง ์น๊ธฐ
MCT๋ ํน์ ํ๋์จ์ด ์ํคํ ์ฒ๋ฅผ ์ํด ์ค๊ณ๋ ๊ตฌ์กฐํ๋ ํ๋์จ์ด ์ธ์ ๋ชจ๋ธ ๊ฐ์ง์น๊ธฐ๋ฅผ ๋์ ํฉ๋๋ค. ์ด ๊ธฐ์ ์ SIMD ๊ทธ๋ฃน์ ๊ฐ์ง์น๊ธฐํ์ฌ ๋์ ํ๋ซํผ์ SIMD(๋จ์ผ ๋ช ๋ น์ด, ๋ค์ค ๋ฐ์ดํฐ) ๊ธฐ๋ฅ์ ํ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋ชจ๋ธ ํฌ๊ธฐ์ ๋ณต์ก์ฑ์ ์ค์ด๋ฉด์ ์ฑ๋ ํ์ฉ๋๋ฅผ ์ต์ ํํ๊ณ , ๊ฐ์ค์น ๋ฉ๋ชจ๋ฆฌ ํํ๋ฆฐํธ์ ๋ชฉํ ๋ฆฌ์์ค ํ์ฉ์ ์ํด SIMD ์ํคํ ์ฒ์ ๋ง์ถฐ ์กฐ์ ํฉ๋๋ค. Keras ๋ฐ PyTorch API๋ฅผ ํตํด ์ฌ์ฉํ ์ ์์ต๋๋ค.
IMX500 ๋ณํ๊ธฐ ๋๊ตฌ(์ปดํ์ผ๋ฌ)
IMX500 ๋ณํ ๋๊ตฌ๋ IMX500 ๋๊ตฌ ์ธํธ์ ํ์ ์์๋ก, ์๋์ IMX500 ์ผ์์ ๋ฐฐํฌํ ๋ชจ๋ธ(์: ๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด AI ์นด๋ฉ๋ผ)์ ์ปดํ์ผํ ์ ์์ต๋๋ค. ์ด ๋๊ตฌ๋ Ultralytics ์ํํธ์จ์ด๋ฅผ ํตํด ์ฒ๋ฆฌ๋ Ultralytics YOLOv8 ๋ชจ๋ธ์ ์ ํ์ ์ฉ์ดํ๊ฒ ํ์ฌ ์ง์ ๋ ํ๋์จ์ด์์ ํธํ๋๊ณ ํจ์จ์ ์ผ๋ก ์๋ํ๋๋ก ๋ณด์ฅํฉ๋๋ค. ๋ชจ๋ธ ์ ๋ํ ํ ๋ด๋ณด๋ด๊ธฐ ์ ์ฐจ์๋ ํ์ ๋ฐ์ดํฐ์ ์ฅ์น๋ณ ๊ตฌ์ฑ์ ์บก์ํํ๋ ๋ฐ์ด๋๋ฆฌ ํ์ผ ์์ฑ์ด ํฌํจ๋๋ฉฐ, ์ด๋ฅผ ํตํด Raspberry Pi AI ์นด๋ฉ๋ผ์ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ ์ ์์ต๋๋ค.
์ค์ ์ฌ์ฉ ์ฌ๋ก
IMX500 ํ์์ผ๋ก ๋ด๋ณด๋ด๊ธฐ๋ ์ฐ์ ์ ๋ฐ์ ๊ฑธ์ณ ํญ๋๊ฒ ์ ์ฉ๋ ์ ์์ต๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ์์ ๋๋ค:
- ์ฃ์ง AI ๋ฐ IoT: ์ ์ ๋ ฅ ๋๋ฐ์ด์ค์์ ์ค์๊ฐ ์ฒ๋ฆฌ๊ฐ ํ์์ธ ๋๋ก ์ด๋ ๋ณด์ ์นด๋ฉ๋ผ์์ ๋ฌผ์ฒด ๊ฐ์ง ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค.
- ์จ์ด๋ฌ๋ธ ๋๋ฐ์ด์ค: ๊ฑด๊ฐ ๋ชจ๋ํฐ๋ง ์จ์ด๋ฌ๋ธ ๋๋ฐ์ด์ค์ ์๊ท๋ชจ AI ์ฒ๋ฆฌ์ ์ต์ ํ๋ ๋ชจ๋ธ์ ๋ฐฐํฌํ์ธ์.
- ์ค๋งํธ ์ํฐ: ๋น ๋ฅธ ์ฒ๋ฆฌ์ ์ต์ํ์ ๋๊ธฐ ์๊ฐ์ผ๋ก ๊ตํต ๋ชจ๋ํฐ๋ง ๋ฐ ์์ ๋ถ์์ ์ํด IMX500 ๋ด๋ณด๋ด๊ธฐ( YOLOv8 ) ๋ชจ๋ธ์ ์ฌ์ฉํฉ๋๋ค.
- ๋ฆฌํ ์ผ ๋ถ์: POS ์์คํ ์ด๋ ์ค๋งํธ ์ ๋ฐ์ ์ต์ ํ๋ ๋ชจ๋ธ์ ๋ฐฐํฌํ์ฌ ๋งค์ฅ ๋ด ๋ชจ๋ํฐ๋ง์ ๊ฐํํ์ธ์.
๊ฒฐ๋ก
Ultralytics YOLOv8 ๋ชจ๋ธ์ ์๋์ IMX500 ํฌ๋งท์ผ๋ก ๋ด๋ณด๋ด๋ฉด IMX500 ๊ธฐ๋ฐ ์นด๋ฉ๋ผ์์ ํจ์จ์ ์ธ ์ถ๋ก ์ ์ํด ๋ชจ๋ธ์ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ๊ณ ๊ธ ์์ํ ๊ธฐ์ ์ ํ์ฉํ๋ฉด ์ ํ๋๋ฅผ ํฌ๊ฒ ์ ํ์ํค์ง ์์ผ๋ฉด์ ๋ชจ๋ธ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ์ถ๋ก ์๋๋ฅผ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์์ธํ ์ ๋ณด ๋ฐ ์ธ๋ถ ์ง์นจ์ ์๋ IMX500 ์น์ฌ์ดํธ๋ฅผ ์ฐธ์กฐํ์ธ์.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
YOLOv8 ๋ชจ๋ธ์ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด AI ์นด๋ฉ๋ผ์ฉ IMX500 ํฌ๋งท์ผ๋ก ๋ด๋ณด๋ด๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์?
YOLOv8 ๋ชจ๋ธ์ IMX500 ํ์์ผ๋ก ๋ด๋ณด๋ด๋ ค๋ฉด Python API ๋๋ CLI ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค:
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
model.export(format="imx") # Exports with PTQ quantization by default
๋ด๋ณด๋ด๊ธฐ ํ๋ก์ธ์ค๋ ๋ค์์ ํฌํจํ์ฌ ๋ฐฐํฌ์ ํ์ํ ํ์ผ์ด ํฌํจ๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค. packerOut.zip
๋ผ์ฆ๋ฒ ๋ฆฌํ์ด์ IMX500 ํจํค์ ๋๊ตฌ์ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฃ์ง AI ๋ฐฐํฌ์ IMX500 ํ์์ ์ฌ์ฉํ๋ฉด ์ด๋ค ์ฃผ์ ์ด์ ์ด ์๋์?
IMX500 ํ์์ ์ฃ์ง ๋ฐฐํฌ์ ๋ช ๊ฐ์ง ์ค์ํ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ์จ์นฉ AI ์ฒ๋ฆฌ๋ก ์ง์ฐ ์๊ฐ ๋ฐ ์ ๋ ฅ ์๋น ๊ฐ์
- ์ด๋ฏธ์ง๋ง ์ถ๋ ฅํ๋ ๋์ ์ด๋ฏธ์ง์ ๋ฉํ๋ฐ์ดํฐ(์ถ๋ก ๊ฒฐ๊ณผ)๋ฅผ ๋ชจ๋ ์ถ๋ ฅํฉ๋๋ค.
- ํด๋ผ์ฐ๋์ ์์กดํ์ง ์๊ณ ๋ก์ปฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ์ฌ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๊ฐํ
- ์๊ฐ์ ๋ฏผ๊ฐํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์์ ์ธ ์ค์๊ฐ ์ฒ๋ฆฌ ๊ธฐ๋ฅ
- ๋ฆฌ์์ค๊ฐ ์ ํ๋ ๋๋ฐ์ด์ค์์ ํจ์จ์ ์ธ ๋ชจ๋ธ ๋ฐฐํฌ๋ฅผ ์ํ ์ต์ ํ๋ ์ ๋ํ
IMX500 ๋ฐฐํฌ์ ํ์ํ ํ๋์จ์ด ๋ฐ ์ํํธ์จ์ด ์ ์ ์กฐ๊ฑด์ ๋ฌด์์ธ๊ฐ์?
IMX500 ๋ชจ๋ธ์ ๋ฐฐํฌํ๋ ค๋ฉด ๋ค์์ด ํ์ํฉ๋๋ค:
ํ๋์จ์ด:
- ๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด 5 ๋๋ ๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด 4 ๋ชจ๋ธ B
- IMX500 ์ผ์๊ฐ ์ฅ์ฐฉ๋ ๋ผ์ฆ๋ฒ ๋ฆฌํ์ด AI ์นด๋ฉ๋ผ
์ํํธ์จ์ด:
- ๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด OS ๋ถ์
- IMX500 ํ์จ์ด ๋ฐ ๋๊ตฌ(
sudo apt install imx500-all imx500-tools
) - Python ํจํค์ง
picamera2
(sudo apt install python3-opencv python3-munkres
)
IMX500์ YOLOv8 ๋ชจ๋ธ์์ ์ด๋ค ์ฑ๋ฅ์ ๊ธฐ๋ํ ์ ์๋์?
๋ผ์ฆ๋ฒ ๋ฆฌํ์ด AI ์นด๋ฉ๋ผ์ Ultralytics ๋ฒค์น๋งํฌ ๊ธฐ์ค:
- YOLOv8n ์ด๋ฏธ์ง๋น 66.66ms์ ์ถ๋ก ์๊ฐ ๋ฌ์ฑ
- COCO8 ๋ฐ์ดํฐ ์ธํธ์์ mAP50-95์ 0.522
- ์์ํ ํ 2.9MB์ ๋ถ๊ณผํ ๋ชจ๋ธ ํฌ๊ธฐ
์ด๋ IMX500 ํฌ๋งท์ด ์์ง AI ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฐ์ํ ์ ํ๋๋ฅผ ์ ์งํ๋ฉด์ ํจ์จ์ ์ธ ์ค์๊ฐ ์ถ๋ก ์ ์ ๊ณตํ๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค.
๋ด๋ณด๋ธ ๋ชจ๋ธ์ ํจํค์งํ์ฌ Raspberry Pi AI ์นด๋ฉ๋ผ์ ๋ฐฐํฌํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์?
IMX500 ํ์์ผ๋ก ๋ด๋ณด๋ธ ํ
-
ํจํค์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ RPK ํ์ผ์ ์์ฑํฉ๋๋ค:
-
picamera2๋ฅผ ๋ณต์ ํ์ฌ ์ค์นํฉ๋๋ค:
-
์์ฑ๋ RPK ํ์ผ์ ์ฌ์ฉํ์ฌ ์ถ๋ก ์ ์คํํฉ๋๋ค: