Ultralytics YOLO ๋ชจ๋ธ์ ๋ํ OpenVINO ์ถ๋ก ์ต์ ํํ๊ธฐ: ์ข ํฉ ๊ฐ์ด๋
์๊ฐ
๋ฅ ๋ฌ๋ ๋ชจ๋ธ, ํนํ Ultralytics YOLO ๋ชจ๋ธ๊ณผ ๊ฐ์ ๊ฐ์ฒด ๊ฐ์ง์ฉ ๋ชจ๋ธ์ ๋ฐฐํฌํ ๋๋ ์ต์ ์ ์ฑ๋ฅ์ ๋ฌ์ฑํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด ๊ฐ์ด๋์์๋ ์ธํ ์ OpenVINO ํดํท์ ํ์ฉํ์ฌ ์ถ๋ก ์ ์ต์ ํํ๋ ๋ฐฉ๋ฒ์ ์ง์ฐ ์๊ฐ๊ณผ ์ฒ๋ฆฌ๋์ ์ด์ ์ ๋ง์ถฐ ์์ธํ ์ค๋ช ํฉ๋๋ค. ์๋น์๊ธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ ํ๋ ๋๊ท๋ชจ ๋ฐฐํฌ์์ ์์ ํ๋ ์ด๋ฌํ ์ต์ ํ ์ ๋ต์ ์ดํดํ๊ณ ์ ์ฉํ๋ฉด ๋ค์ํ ๋๋ฐ์ด์ค์์ ๋ชจ๋ธ์ ํจ์จ์ ์ผ๋ก ์คํํ ์ ์์ต๋๋ค.
์ง์ฐ ์๊ฐ ์ต์ ํ
์ง์ฐ ์๊ฐ ์ต์ ํ๋ ์๋น์ ์๋๋ฆฌ์ค์์ ํํ ๋ณผ ์ ์๋ ๋จ์ผ ์ ๋ ฅ์ ๋ํด ๋จ์ผ ๋ชจ๋ธ์ ์ฆ๊ฐ์ ์ธ ์๋ต์ด ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์์ ์ ๋๋ค. ๋ชฉํ๋ ์ ๋ ฅ๊ณผ ์ถ๋ก ๊ฒฐ๊ณผ ์ฌ์ด์ ์ง์ฐ์ ์ต์ํํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์งง์ ์ง์ฐ ์๊ฐ์ ๋ฌ์ฑํ๋ ค๋ฉด ํนํ ๋์ ์ถ๋ก ์ ์คํํ๊ฑฐ๋ ์ฌ๋ฌ ๋ชจ๋ธ์ ๊ด๋ฆฌํ ๋ ์ ์คํ ๊ณ ๋ ค๊ฐ ํ์ํฉ๋๋ค.
์ง์ฐ ์๊ฐ ์ต์ ํ๋ฅผ ์ํ ์ฃผ์ ์ ๋ต:
- ๋๋ฐ์ด์ค๋น ๋จ์ผ ์ถ๋ก : ์ง์ฐ ์๊ฐ์ ์ค์ด๋ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ๋๋ฐ์ด์ค๋น ํ ๋ฒ์ ํ ๋ฒ์ ์ถ๋ก ์ผ๋ก ์ ํํ๋ ๊ฒ์ ๋๋ค. ๋์์ฑ์ด ์ฆ๊ฐํ๋ฉด ์ง์ฐ ์๊ฐ์ด ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
- ํ์ ์ฅ์น ํ์ฉ: ๋ฉํฐ ์์ผ CPU ๋๋ ๋ฉํฐ ํ์ผ GPU์ ๊ฐ์ ์ฅ์น๋ ๋ด๋ถ ํ์ ์ฅ์น๋ฅผ ํ์ฉํ์ฌ ์ง์ฐ ์๊ฐ ์ฆ๊ฐ๋ฅผ ์ต์ํํ๋ฉด์ ์ฌ๋ฌ ์์ฒญ์ ์คํํ ์ ์์ต๋๋ค.
- OpenVINO ์ฑ๋ฅ ํํธ: OpenVINO ์
ov::hint::PerformanceMode::LATENCY
์ ๋ํov::hint::performance_mode
์์ฑ์ ์ฌ์ฉํ๋ฉด ๋ชจ๋ธ ์ปดํ์ผ ์ค ์ฑ๋ฅ ํ๋์ด ๊ฐ์ํ๋์ด ๊ธฐ๊ธฐ์ ๊ตฌ์ ๋ฐ์ง ์๊ณ ๋ฏธ๋์๋ ์ฌ์ฉํ ์ ์๋ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ์ถ๋ก ์ง์ฐ ์๊ฐ ๊ด๋ฆฌ:
- ๋ชจ๋ธ ์บ์ฑ: ์ง์ฐ ์๊ฐ์ ์ํฅ์ ๋ฏธ์น๋ ๋ชจ๋ธ ๋ก๋ ๋ฐ ์ปดํ์ผ ์๊ฐ์ ์ค์ด๋ ค๋ฉด ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋ชจ๋ธ ์บ์ฑ์ ์ฌ์ฉํ์ธ์. ์บ์ฑ์ ์ฌ์ฉํ ์ ์๋ ์๋๋ฆฌ์ค์ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก CPU๊ฐ ๊ฐ์ฅ ๋น ๋ฅธ ๋ชจ๋ธ ๋ก๋ ์๊ฐ์ ์ ๊ณตํฉ๋๋ค.
- ๋ชจ๋ธ ๋งคํ ๋ ์ฝ๊ธฐ: ๋ก๋ ์๊ฐ์ ์ค์ด๊ธฐ ์ํด OpenVINO ์์ ๋ชจ๋ธ ์ฝ๊ธฐ๋ฅผ ๋งคํ์ผ๋ก ๋์ฒดํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ชจ๋ธ์ด ์ด๋์ ๋๋ ๋คํธ์ํฌ ๋๋ผ์ด๋ธ์ ์๋ ๊ฒฝ์ฐ ๋ค์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ov::enable_mmap(false)
๋ฅผ ํด๋ฆญํ์ฌ ๋ค์ ์ฝ๊ธฐ๋ก ์ ํํฉ๋๋ค. - ์๋ ์ฅ์น ์ ํ: ์ด ๋ชจ๋๋ CPU์์ ์ถ๋ก ์ ์์ํ๊ณ ์ค๋น๊ฐ ๋๋ฉด ๊ฐ์๊ธฐ๋ก ์ ํํ์ฌ ์ฒซ ๋ฒ์งธ ์ถ๋ก ๋๊ธฐ ์๊ฐ์ ์ํํ๊ฒ ์ค์ ๋๋ค.
์ฒ๋ฆฌ๋ ์ต์ ํ
์ฒ๋ฆฌ๋ ์ต์ ํ๋ ์๋ง์ ์ถ๋ก ์์ฒญ์ ๋์์ ์ฒ๋ฆฌํ๋ ์๋๋ฆฌ์ค์์ ๋งค์ฐ ์ค์ํ๋ฉฐ, ๊ฐ๋ณ ์์ฒญ ์ฑ๋ฅ์ ํฌ๊ฒ ์ ํ์ํค์ง ์์ผ๋ฉด์ ๋ฆฌ์์ค ํ์ฉ๋๋ฅผ ๊ทน๋ํํฉ๋๋ค.
์ฒ๋ฆฌ๋ ์ต์ ํ๋ฅผ ์ํ ์ ๊ทผ ๋ฐฉ์:
- OpenVINO ์ฑ๋ฅ ํํธ: ์ฑ๋ฅ ํํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ๋๋ฐ์ด์ค์์ ์ฒ๋ฆฌ๋์ ํฅ์์ํค๋ ๋์ ์์ค์ ๋ฏธ๋ ์งํฅ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค.
import openvino.properties as props
import openvino.properties.hint as hints
config = {hints.performance_mode: hints.PerformanceMode.THROUGHPUT}
compiled_model = core.compile_model(model, "GPU", config)
- ๋ช ์์ ๋ฐฐ์น ๋ฐ ์คํธ๋ฆผ: ๊ณ ๊ธ ์ฑ๋ฅ ํ๋์ ์ํ ๋ช ์์ ์ผ๊ด ์ฒ๋ฆฌ ๋ฐ ์คํธ๋ฆผ ์ฌ์ฉ๊ณผ ๊ด๋ จ๋ ๋ณด๋ค ์ธ๋ถํ๋ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค.
์ฒ๋ฆฌ๋ ์งํฅ ์ ํ๋ฆฌ์ผ์ด์ ์ค๊ณ:
์ฒ๋ฆฌ๋์ ์ต๋ํํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ด ํด์ผ ํฉ๋๋ค:
- ๊ธฐ๊ธฐ์ ๊ธฐ๋ฅ์ ์ต๋ํ ํ์ฉํ์ฌ ์ ๋ ฅ์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
- ๋ฐ์ดํฐ ํ๋ฆ์ ๋ณ๋ ฌ ์คํ์ ์ํด ์์ฝ๋ ๋์ ์ถ๋ก ์์ฒญ์ผ๋ก ๋ถํดํฉ๋๋ค.
- ์ฝ๋ฐฑ์ด ํฌํจ๋ ๋น๋๊ธฐ API๋ฅผ ํ์ฉํ์ฌ ํจ์จ์ฑ์ ์ ์งํ๊ณ ๋๋ฐ์ด์ค ๊ณ ๊ฐ์ ๋ฐฉ์งํ์ธ์.
๋ค์ค ์ฅ์น ์คํ:
OpenVINO์ ๋ฉํฐ ๋๋ฐ์ด์ค ๋ชจ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ค์ ๋๋ฐ์ด์ค ๊ด๋ฆฌ ์์ด๋ ๋๋ฐ์ด์ค ๊ฐ ์ถ๋ก ์์ฒญ์ ๊ท ํ์ ์๋์ผ๋ก ์กฐ์ ํ์ฌ ์ฒ๋ฆฌ๋ ํ์ฅ์ ๊ฐ์ํํฉ๋๋ค.
๊ฒฐ๋ก
Ultralytics YOLO ๋ชจ๋ธ์ ์ง์ฐ ์๊ฐ ๋ฐ ์ฒ๋ฆฌ๋์ ๋ง๊ฒ ์ต์ ํํ๋ฉด OpenVINO ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ด ๊ฐ์ด๋์ ์ค๋ช ๋ ์ ๋ต์ ์ ์คํ๊ฒ ์ ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ ๋ชจ๋ธ์ด ํจ์จ์ ์ผ๋ก ์คํ๋์ด ๋ค์ํ ๋ฐฐํฌ ์๋๋ฆฌ์ค์ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ ์ ์์ต๋๋ค. ์ง์ฐ ์๊ฐ ์ต์ ํ ๋๋ ์ฒ๋ฆฌ๋ ์ต์ ํ ์ค ์ด๋ค ๊ฒ์ ์ ํํ ์ง๋ ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ตฌ ์ฌํญ๊ณผ ๋ฐฐํฌ ํ๊ฒฝ์ ํน์ฑ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ค๋ ์ ์ ๊ธฐ์ตํ์ธ์.
์์ธํ ๊ธฐ์ ์ ๋ณด์ ์ต์ ์ ๋ฐ์ดํธ๋ OpenVINO ๋ฌธ์์ Ultralytics YOLO ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์. ์ด๋ฌํ ๋ฆฌ์์ค์์๋ ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ์ต๋ํ ํ์ฉํ ์ ์๋๋ก ์ฌ์ธต์ ์ธ ๊ฐ์ด๋, ํํ ๋ฆฌ์ผ ๋ฐ ์ปค๋ฎค๋ํฐ ์ง์์ ์ ๊ณตํฉ๋๋ค.
๋ชจ๋ธ์ด ์ต์ ์ ์ฑ๋ฅ์ ๋ฐํํ๋๋ก ํ๋ ค๋ฉด ๋จ์ํ ๊ตฌ์ฑ์ ์กฐ์ ํ๋ ๊ฒ์ด ์๋๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ตฌ ์ฌํญ์ ์ดํดํ๊ณ ์ ๋ณด์ ์ ๊ฐํ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ค์๊ฐ ์๋ต์ ์ต์ ํํ๋ ๋๊ท๋ชจ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ฒ๋ฆฌ๋์ ๊ทน๋ํํ๋ , Ultralytics YOLO ๋ชจ๋ธ๊ณผ OpenVINO ์ ์กฐํฉ์ ๊ฐ๋ฐ์๊ฐ ๊ณ ์ฑ๋ฅ AI ์๋ฃจ์ ์ ๋ฐฐํฌํ ์ ์๋ ๊ฐ๋ ฅํ ํดํท์ ์ ๊ณตํฉ๋๋ค.