ONNX YOLOv8 ๋ชจ๋ธ์ฉ ๋ด๋ณด๋ด๊ธฐ
์ปดํจํฐ ๋น์ ๋ชจ๋ธ์ ๋ฐฐํฌํ ๋๋ ์ ์ฐํ๊ณ ์ฌ๋ฌ ํ๋ซํผ๊ณผ ํธํ๋๋ ๋ชจ๋ธ ํ์์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
๋ด๋ณด๋ด๊ธฐ Ultralytics YOLOv8 ๋ชจ๋ธ์ ONNX ํ์์ผ๋ก ๋ด๋ณด๋ด๋ฉด ๋ฐฐํฌ๋ฅผ ๊ฐ์ํํ๊ณ ๋ค์ํ ํ๊ฒฝ์์ ์ต์ ์ ์ฑ๋ฅ์ ๋ณด์ฅํ ์ ์์ต๋๋ค. ์ด ๊ฐ์ด๋์์๋ YOLOv8 ๋ชจ๋ธ์ ONNX ๋ก ์ฝ๊ฒ ๋ณํํ๊ณ ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ์ฅ์ฑ๊ณผ ํจ์จ์ฑ์ ํฅ์์ํค๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ ๋๋ฆฝ๋๋ค.
ONNX ๋ฐ ONNX ๋ฐํ์
ONNX์ ์ฝ์์ธ ์คํ ์ ๊ฒฝ๋ง ๊ตํ์ Facebook๊ณผ Microsoft๊ฐ ์ฒ์์ ๊ฐ๋ฐํ ์ปค๋ฎค๋ํฐ ํ๋ก์ ํธ์ ๋๋ค. ONNX ์ ์ง์์ ์ธ ๊ฐ๋ฐ์ IBM, Amazon(AWS๋ฅผ ํตํด), Google๊ณผ ๊ฐ์ ๋ค์ํ ์กฐ์ง์์ ์ง์ํ๋ ๊ณต๋์ ๋ ธ๋ ฅ์ ๋๋ค. ์ด ํ๋ก์ ํธ๋ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ๋ค์ํ AI ํ๋ ์์ํฌ์ ํ๋์จ์ด์์ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ์์ผ๋ก ํํํ๋๋ก ์ค๊ณ๋ ๊ฐ๋ฐฉํ ํ์ผ ํ์์ ๋ง๋๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
ONNX ๋ชจ๋ธ์ ์ฌ์ฉํ์ฌ ์๋ก ๋ค๋ฅธ ํ๋ ์์ํฌ ๊ฐ์ ์ํํ๊ฒ ์ ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด PyTorch ์์ ํ์ต๋ ๋ฅ ๋ฌ๋ ๋ชจ๋ธ์ ONNX ํ์์ผ๋ก ๋ด๋ณด๋ธ ๋ค์ TensorFlow ๋ก ์ฝ๊ฒ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
๋๋ ONNX ๋ชจ๋ธ์ ONNX ๋ฐํ์๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค. ONNX ๋ฐํ์์ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ์ํ ๋ค๋ชฉ์ ํฌ๋ก์ค ํ๋ซํผ ๊ฐ์๊ธฐ๋ก PyTorch, TensorFlow, TFLite, scikit-learn ๋ฑ๊ณผ ๊ฐ์ ํ๋ ์์ํฌ์ ํธํ๋ฉ๋๋ค.
ONNX ๋ฐํ์์ ํ๋์จ์ด๋ณ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ONNX ๋ชจ๋ธ์ ์คํ์ ์ต์ ํํฉ๋๋ค. ์ด๋ฌํ ์ต์ ํ๋ฅผ ํตํด CPU, GPU, ํน์ ๊ฐ์๊ธฐ ๋ฑ ๋ค์ํ ํ๋์จ์ด ํ๋ซํผ์์ ๋ชจ๋ธ์ ํจ์จ์ ์ผ๋ก ๊ณ ์ฑ๋ฅ์ผ๋ก ์คํํ ์ ์์ต๋๋ค.
๋ ๋ฆฝ์ ์ผ๋ก ์ฌ์ฉํ๋ ONNX ๋ฐํ์๊ณผ ํจ๊ป ์ฌ์ฉํ๋ , ONNX ์ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ ๋ฐฐํฌ ๋ฐ ํธํ์ฑ์ ์ํ ์ ์ฐํ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค.
ONNX ๋ชจ๋ธ์ ์ฃผ์ ๊ธฐ๋ฅ
ONNX ์์ ๋ค์ํ ํ์์ ์ฒ๋ฆฌํ ์ ์๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ์ฃผ์ ๊ธฐ๋ฅ ๋๋ถ์ ๋๋ค:
-
๊ณตํต ๋ชจ๋ธ ํํ: ONNX ์ ๊ณตํต ์ฐ์ฐ์ ์งํฉ(์ปจ๋ณผ๋ฃจ์ , ๋ ์ด์ด ๋ฑ)๊ณผ ํ์ค ๋ฐ์ดํฐ ํ์์ ์ ์ํฉ๋๋ค. ๋ชจ๋ธ์ ONNX ํ์์ผ๋ก ๋ณํํ๋ฉด ํด๋น ๋ชจ๋ธ์ ์ํคํ ์ฒ์ ๊ฐ์ค์น๊ฐ ์ด ๊ณตํต ํํ์ผ๋ก ๋ณํ๋ฉ๋๋ค. ์ด๋ฌํ ํต์ผ์ฑ์ ํตํด ONNX ์ ์ง์ํ๋ ๋ชจ๋ ํ๋ ์์ํฌ์์ ๋ชจ๋ธ์ ์ดํดํ ์ ์์ต๋๋ค.
-
๋ฒ์ ๊ด๋ฆฌ ๋ฐ ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ: ONNX ์์๋ ์ด์์๋ฅผ ์ํ ๋ฒ์ ๊ด๋ฆฌ ์์คํ ์ ์ ์ง ๊ด๋ฆฌํฉ๋๋ค. ์ด๋ฅผ ํตํด ํ์ค์ด ๋ฐ์ ํ๋๋ผ๋ ์ด์ ๋ฒ์ ์์ ๋ง๋ ๋ชจ๋ธ์ ๊ณ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ๋ชจ๋ธ์ด ๋น ๋ฅด๊ฒ ๊ตฌ์์ด ๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ ์ค์ํ ๊ธฐ๋ฅ์ ๋๋ค.
-
๊ทธ๋ํ ๊ธฐ๋ฐ ๋ชจ๋ธ ํํ: ONNX ์ ๋ชจ๋ธ์ ๊ณ์ฐ ๊ทธ๋ํ๋ก ํํํฉ๋๋ค. ์ด ๊ทธ๋ํ ๊ธฐ๋ฐ ๊ตฌ์กฐ๋ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ํํํ๋ ๋ณดํธ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก, ๋ ธ๋๋ ์ฐ์ฐ ๋๋ ๊ณ์ฐ์ ๋ํ๋ด๊ณ ์์ง๋ ๊ทธ ์ฌ์ด๋ฅผ ํ๋ฅด๋ ํ ์๋ฅผ ๋ํ๋ ๋๋ค. ์ด ํ์์ ๋ชจ๋ธ์ ๊ทธ๋ํ๋ก ํํํ๋ ๋ค์ํ ํ๋ ์์ํฌ์ ์ฝ๊ฒ ์ ์ฉํ ์ ์์ต๋๋ค.
-
๋๊ตฌ ๋ฐ ์์ฝ์์คํ : ONNX ์๋ ๋ชจ๋ธ ๋ณํ, ์๊ฐํ ๋ฐ ์ต์ ํ๋ฅผ ์ง์ํ๋ ํ๋ถํ ๋๊ตฌ ์ํ๊ณ๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๊ฐ ONNX ๋ชจ๋ธ๋ก ๋ ์ฝ๊ฒ ์์ ํ๊ณ ์๋ก ๋ค๋ฅธ ํ๋ ์์ํฌ ๊ฐ์ ๋ชจ๋ธ์ ์ํํ๊ฒ ๋ณํํ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ธ ์ฌ์ฉ๋ฒ ONNX
YOLOv8 ๋ชจ๋ธ์ ONNX ํ์์ผ๋ก ๋ด๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ธฐ ์ ์ ONNX ๋ชจ๋ธ์ด ์ผ๋ฐ์ ์ผ๋ก ์ด๋์ ์ฌ์ฉ๋๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
CPU ๋ฐฐํฌ
ONNX ๋ชจ๋ธ์ ONNX ๋ฐํ์๊ณผ์ ํธํ์ฑ ๋๋ฌธ์ CPU์ ๋ฐฐํฌ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด ๋ฐํ์์ CPU ์คํ์ ์ต์ ํ๋์ด ์์ต๋๋ค. ์ถ๋ก ์๋๋ฅผ ํฌ๊ฒ ํฅ์์ํค๊ณ ์ค์๊ฐ CPU ๋ฐฐํฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
์ง์๋๋ ๋ฐฐํฌ ์ต์
ONNX ๋ชจ๋ธ์ ์ผ๋ฐ์ ์ผ๋ก CPU์์ ์ฌ์ฉ๋์ง๋ง ๋ค์ ํ๋ซํผ์๋ ๋ฐฐํฌํ ์ ์์ต๋๋ค:
-
GPU ๊ฐ์: ONNX ์ GPU ๊ฐ์, ํนํ NVIDIA CUDA๋ฅผ ์๋ฒฝํ๊ฒ ์ง์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋์ ์ฐ์ฐ ๋ฅ๋ ฅ์ด ์๊ตฌ๋๋ ์์ ์ NVIDIA GPU์์ ํจ์จ์ ์ผ๋ก ์คํํ ์ ์์ต๋๋ค.
-
์ฃ์ง ๋ฐ ๋ชจ๋ฐ์ผ ๋๋ฐ์ด์ค: ONNX ๋ ์ฃ์ง ๋ฐ ๋ชจ๋ฐ์ผ ๋๋ฐ์ด์ค๋ก ํ์ฅ๋์ด ์จ๋๋ฐ์ด์ค ๋ฐ ์ค์๊ฐ ์ถ๋ก ์๋๋ฆฌ์ค์ ์ ํฉํฉ๋๋ค. ๊ฐ๋ณ๊ณ ์ฃ์ง ํ๋์จ์ด์ ํธํ๋ฉ๋๋ค.
-
์น ๋ธ๋ผ์ฐ์ : ONNX ์น ๋ธ๋ผ์ฐ์ ์์ ์ง์ ์คํํ์ฌ ๋ํํ ๋ฐ ๋์ ์น ๊ธฐ๋ฐ AI ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ๋ํ ์ ์์ต๋๋ค.
YOLOv8 ๋ชจ๋ธ๋ก ๋ด๋ณด๋ด๊ธฐ ONNX
YOLOv8 ๋ชจ๋ธ์ ONNX ํ์์ผ๋ก ๋ณํํ์ฌ ๋ชจ๋ธ ํธํ์ฑ ๋ฐ ๋ฐฐํฌ ์ ์ฐ์ฑ์ ํ์ฅํ ์ ์์ต๋๋ค.
์ค์น
ํ์ํ ํจํค์ง๋ฅผ ์ค์นํ๋ ค๋ฉด ์คํํฉ๋๋ค:
์ค์น ๊ณผ์ ๊ณผ ๊ด๋ จ๋ ์์ธํ ์ง์นจ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ YOLOv8 ์ค์น ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์. YOLOv8 ์ ํ์ํ ํจํค์ง๋ฅผ ์ค์นํ๋ ๋์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ผ๋ฐ์ ์ธ ๋ฌธ์ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ๊ณผ ํ์ ํ์ธํ์ธ์.
์ฌ์ฉ๋ฒ
์ฌ์ฉ ์ง์นจ์ ์ดํด๋ณด๊ธฐ ์ ์ Ultralytics ์์ ์ ๊ณตํ๋ ๋ค์ํ YOLOv8 ๋ชจ๋ธ์ ํ์ธํ์ธ์. ํ๋ก์ ํธ ์๊ตฌ ์ฌํญ์ ๊ฐ์ฅ ์ ํฉํ ๋ชจ๋ธ์ ์ ํํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
์ฌ์ฉ๋ฒ
from ultralytics import YOLO
# Load the YOLOv8 model
model = YOLO('yolov8n.pt')
# Export the model to ONNX format
model.export(format='onnx') # creates 'yolov8n.onnx'
# Load the exported ONNX model
onnx_model = YOLO('yolov8n.onnx')
# Run inference
results = onnx_model('https://ultralytics.com/images/bus.jpg')
๋ด๋ณด๋ด๊ธฐ ํ๋ก์ธ์ค์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ด๋ณด๋ด๊ธฐ ๊ด๋ จ ๋ฌธ์ ํ์ด์ง(Ultralytics )๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ด๋ณด๋ธ YOLOv8 ONNX ๋ชจ๋ธ ๋ฐฐํฌ
Ultralytics YOLOv8 ๋ชจ๋ธ์ ONNX ํ์์ผ๋ก ์ฑ๊ณต์ ์ผ๋ก ๋ด๋ณด๋๋ค๋ฉด ๋ค์ ๋จ๊ณ๋ ์ด๋ฌํ ๋ชจ๋ธ์ ๋ค์ํ ํ๊ฒฝ์ ๋ฐฐํฌํ๋ ๊ฒ์ ๋๋ค. ONNX ๋ชจ๋ธ ๋ฐฐํฌ์ ๋ํ ์์ธํ ์ง์นจ์ ๋ค์ ๋ฆฌ์์ค๋ฅผ ์ฐธ์กฐํ์ธ์:
-
ONNX ๋ฐํ์ Python API ๋ฌธ์: ์ด ๊ฐ์ด๋๋ ONNX ๋ฐํ์์ ์ฌ์ฉํ์ฌ ONNX ๋ชจ๋ธ์ ๋ก๋ํ๊ณ ์คํํ๋ ๋ฐ ํ์ํ ํ์ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
-
์ฃ์ง ๋๋ฐ์ด์ค์ ๋ฐฐํฌ: ์ด ๋ฌธ์ ํ์ด์ง์์ ONNX ๋ชจ๋ธ์ ์ฃ์ง์ ๋ฐฐํฌํ๋ ๋ค์ํ ์์๋ฅผ ํ์ธํ์ธ์.
-
ONNX GitHub์ ํํ ๋ฆฌ์ผ: ๋ค์ํ ์๋๋ฆฌ์ค์์ ONNX ๋ชจ๋ธ์ ์ฌ์ฉํ๊ณ ๊ตฌํํ๋ ๋ค์ํ ์ธก๋ฉด์ ๋ค๋ฃจ๋ ํฌ๊ด์ ์ธ ์์ต์ ๋ชจ์์ ๋๋ค.
์์ฝ
์ด ๊ฐ์ด๋์์๋ Ultralytics YOLOv8 ๋ชจ๋ธ์ ONNX ํ์์ผ๋ก ๋ด๋ณด๋ด ๋ค์ํ ํ๋ซํผ์์ ์ํธ ์ด์ฉ์ฑ๊ณผ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ์ต๋๋ค. ๋ํ ONNX ๋ฐํ์ ๋ฐ ONNX ๋ฐฐํฌ ์ต์ ์ ๋ํด์๋ ์๊ฐํ์ต๋๋ค.
์ฌ์ฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ONNX ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ํ Ultralytics YOLOv8 ํตํฉ์ ๋ํด ๋ ์์ธํ ์๊ณ ์ถ๋ค๋ฉด ํตํฉ ๊ฐ์ด๋ ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ์ธ์. ์ ์ฉํ ๋ฆฌ์์ค์ ์ธ์ฌ์ดํธ๋ฅผ ๋ง์ด ์ฐพ์ ์ ์์ต๋๋ค.