๋ชจ๋ฐ์ผ ์ธ๊ทธ๋จผํธ ์ ๋์ฝ (MobileSAM)
MobileSAM ๋ ผ๋ฌธ์ ํ์ฌ arXiv์์ ํ์ธํ ์ ์์ต๋๋ค.
CPU ์์ ์คํ๋๋ MobileSAM ๋ฐ๋ชจ๋ ์ด ๋ฐ๋ชจ ๋งํฌ์์ ํ์ธํ ์ ์์ต๋๋ค. Mac i5 CPU ์์์ ์ฑ๋ฅ์ ์ฝ 3์ด๊ฐ ์์๋ฉ๋๋ค. Hugging Face ๋ฐ๋ชจ์์๋ ์ธํฐํ์ด์ค์ ๋ฎ์ ์ฑ๋ฅ์ CPU๋ก ์ธํด ์๋ต ์๋๊ฐ ๋๋ ค์ง์ง๋ง ์ฌ์ ํ ํจ๊ณผ์ ์ผ๋ก ์๋ํฉ๋๋ค.
Watch: How to Run Inference with MobileSAM using Ultralytics | Step-by-Step Guide ๐
MobileSAM ์ ์ง( SAM ) , ์ ๋๋ผ๋ฒจ๋ง, 3D ์ธ๊ทธ๋จผํธ ์ ๋์ฝ ๋ฑ ๋ค์ํ ํ๋ก์ ํธ์์ ๊ตฌํ๋๊ณ ์์ต๋๋ค.
MobileSAM ๋ 100,000๊ฐ์ ๋ฐ์ดํฐ ์ธํธ(์๋ณธ ์ด๋ฏธ์ง์ 1%)๋ก ๊ตฌ์ฑ๋ ๋จ์ผ GPU ์ ๋ํด ํ๋ฃจ๋ ์ฑ ๊ฑธ๋ฆฌ์ง ์๊ณ ํ์ต๋์์ต๋๋ค. ์ด ํ๋ จ์ ๋ํ ์ฝ๋๋ ํฅํ ๊ณต๊ฐ๋ ์์ ์ ๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ธ, ์ง์๋๋ ์์ ๋ฐ ์๋ ๋ชจ๋
์ด ํ์๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ธ๊ณผ ํจ๊ป ํน์ ์ฌ์ ํ์ต๋ ๊ฐ์ค์น, ์ง์๋๋ ์์ , ์ถ๋ก , ๊ฒ์ฆ, ํ์ต ๋ฐ ๋ด๋ณด๋ด๊ธฐ์ ๊ฐ์ ๋ค์ํ ์๋ ๋ชจ๋์์ ํธํ์ฑ์ด ํ์๋์ด ์์ผ๋ฉฐ, ์ง์๋๋ ๋ชจ๋์ ๊ฒฝ์ฐ โ ์ด๋ชจํฐ์ฝ, ์ง์๋์ง ์๋ ๋ชจ๋์ ๊ฒฝ์ฐ โ ์ด๋ชจํฐ์ฝ์ผ๋ก ํ์๋์ด ์์ต๋๋ค.
๋ชจ๋ธ ์ ํ | ์ฌ์ ํ์ต๋ ๊ฐ์ค์น | ์ง์๋๋ ์์ | ์ถ๋ก | ์ ํจ์ฑ ๊ฒ์ฌ | ๊ต์ก | ๋ด๋ณด๋ด๊ธฐ |
---|---|---|---|---|---|---|
MobileSAM | mobile_sam.pt | ์ธ์คํด์ค ์ธ๋ถํ | โ | โ | โ | โ |
SAM ์์ MobileSAM
MobileSAM ์ ์๋ณธ SAM ๊ณผ ๋์ผํ ํ์ดํ๋ผ์ธ์ ์ ์งํ๋ฏ๋ก ์๋ณธ์ ์ ์ฒ๋ฆฌ, ํ์ฒ๋ฆฌ ๋ฐ ๊ธฐํ ๋ชจ๋ ์ธํฐํ์ด์ค๋ฅผ ํตํฉํ์ต๋๋ค. ๋ฐ๋ผ์ ํ์ฌ ์๋ณธ SAM ์ ์ฌ์ฉ ์ค์ธ ์ฌ์ฉ์๋ ์ต์ํ์ ๋ ธ๋ ฅ์ผ๋ก MobileSAM ์ผ๋ก ์ ํํ ์ ์์ต๋๋ค.
MobileSAM ๋ ์ด๋ฏธ์ง ์ธ์ฝ๋์ ๋ณ๊ฒฝ์ ์ ์ธํ๊ณ ๋ ๋์ผํ ํ์ดํ๋ผ์ธ์ ์ ์งํ๋ฉด์ ๊ธฐ์กด SAM ๊ณผ ๋น์ทํ ์ฑ๋ฅ์ ๋ฐํํฉ๋๋ค. ํนํ, ๊ธฐ์กด์ ๋ฌด๊ฑฐ์ด ViT-H ์ธ์ฝ๋(632M)๋ฅผ ๋ ์์ Tiny-ViT(5M)๋ก ๊ต์ฒดํ์ต๋๋ค. ๋จ์ผ GPU, MobileSAM ์์ ์ด๋ฏธ์ง๋น ์ฝ 12ms๋ก ์๋ํฉ๋๋ค: ์ด๋ฏธ์ง ์ธ์ฝ๋์์ 8ms, ๋ง์คํฌ ๋์ฝ๋์์ 4ms์ ๋๋ค.
๋ค์ ํ๋ ViT ๊ธฐ๋ฐ ์ด๋ฏธ์ง ์ธ์ฝ๋๋ฅผ ๋น๊ตํ ๊ฒ์ ๋๋ค:
์ด๋ฏธ์ง ์ธ์ฝ๋ | ์๋ณธ SAM | MobileSAM |
---|---|---|
๋งค๊ฐ๋ณ์ | 611M | 5M |
์๋ | 452ms | 8ms |
์๋ณธ SAM ๋ฐ MobileSAM ๋ชจ๋ ๋์ผํ ํ๋กฌํํธ ์๋ด ๋ง์คํฌ ๋์ฝ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค:
๋ง์คํฌ ๋์ฝ๋ | ์๋ณธ SAM | MobileSAM |
---|---|---|
๋งค๊ฐ๋ณ์ | 3.876M | 3.876M |
์๋ | 4ms | 4ms |
๋ค์์ ์ ์ฒด ํ์ดํ๋ผ์ธ์ ๋น๊ตํ ๊ฒ์ ๋๋ค:
์ ์ฒด ํ์ดํ๋ผ์ธ(Enc+Dec) | ์๋ณธ SAM | MobileSAM |
---|---|---|
๋งค๊ฐ๋ณ์ | 615M | 9.66M |
์๋ | 456ms | 12ms |
MobileSAM ๋ฐ ์๋ณธ SAM ์ ์ฑ๋ฅ์ ์ ๊ณผ ์์๋ฅผ ๋ชจ๋ ํ๋กฌํํธ๋ก ์ฌ์ฉํ์ฌ ์์ฐํฉ๋๋ค.
์ฐ์ํ ์ฑ๋ฅ์ ๊ฐ์ถ MobileSAM ์ ํ์ฌ FastSAM ๋ณด๋ค ์ฝ 5๋ฐฐ ์๊ณ 7๋ฐฐ ๋น ๋ฆ ๋๋ค. ์์ธํ ๋ด์ฉ์ MobileSAM ํ๋ก์ ํธ ํ์ด์ง์์ ํ์ธํ ์ ์์ต๋๋ค.
ํ ์คํธ MobileSAM Ultralytics
๊ธฐ์กด SAM ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก Ultralytics ์์ ํฌ์ธํธ ๋ฐ ๋ฐ์ค ํ๋กฌํํธ ๋ชจ๋๋ฅผ ํฌํจํ ๊ฐ๋จํ ํ ์คํธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
๋ชจ๋ธ ๋ค์ด๋ก๋
์ฌ๊ธฐ์์ ๋ชจ๋ธ์ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค.
ํฌ์ธํธ ํ๋กฌํํธ
์
from ultralytics import SAM
# Load the model
model = SAM("mobile_sam.pt")
# Predict a segment based on a single point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])
# Predict multiple segments based on multiple points prompt
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])
# Predict a segment based on multiple points prompt per object
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])
# Predict a segment using both positive and negative prompts.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])
์์ ํ๋กฌํํธ
์
from ultralytics import SAM
# Load the model
model = SAM("mobile_sam.pt")
# Predict a segment based on a single point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])
# Predict mutiple segments based on multiple points prompt
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])
# Predict a segment based on multiple points prompt per object
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])
# Predict a segment using both positive and negative prompts.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])
์ฐ๋ฆฌ๋ ๊ตฌํํ์ต๋๋ค MobileSAM
๊ทธ๋ฆฌ๊ณ SAM
๋์ผํ API๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์์ธํ ์ฌ์ฉ ์ ๋ณด๋ SAM ํ์ด์ง.
์ธ์ฉ ๋ฐ ๊ฐ์ฌ
์ฐ๊ตฌ ๋๋ ๊ฐ๋ฐ ์์ ์ MobileSAM ์ด ์ ์ฉํ๋ค๊ณ ์๊ฐ๋๋ฉด ์ ํฌ ๋ ผ๋ฌธ์ ์ธ์ฉํด ์ฃผ์ธ์:
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
MobileSAM ์ด๋ ๋ฌด์์ด๋ฉฐ ๊ธฐ์กด SAM ๋ชจ๋ธ๊ณผ ์ด๋ป๊ฒ ๋ค๋ฅธ๊ฐ์?
MobileSAM is a lightweight, fast image segmentation model designed for mobile applications. It retains the same pipeline as the original SAM but replaces the heavyweight ViT-H encoder (632M parameters) with a smaller Tiny-ViT encoder (5M parameters). This change results in MobileSAM being approximately 5 times smaller and 7 times faster than the original SAM. For instance, MobileSAM operates at about 12ms per image, compared to the original SAM's 456ms. You can learn more about the MobileSAM implementation in various projects here.
Ultralytics ์ ์ฌ์ฉํ์ฌ MobileSAM ํ ์คํธํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์?
Ultralytics ์์ MobileSAM ํ ์คํธ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ผ๋ก ์ํํ ์ ์์ต๋๋ค. ํฌ์ธํธ ๋ฐ ๋ฐ์ค ํ๋กฌํํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๊ทธ๋จผํธ๋ฅผ ์์ธกํ ์ ์์ต๋๋ค. ๋ค์์ ํฌ์ธํธ ํ๋กฌํํธ๋ฅผ ์ฌ์ฉํ๋ ์์ ์ ๋๋ค:
from ultralytics import SAM
# Load the model
model = SAM("mobile_sam.pt")
# Predict a segment based on a point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])
์์ธํ ๋ด์ฉ์ ํ ์คํธ MobileSAM ์น์ ์ ์ฐธ์กฐํ์ธ์.
๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ MobileSAM ์ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
MobileSAM ๋ ๊ฐ๋ฒผ์ด ์ํคํ ์ฒ์ ๋น ๋ฅธ ์ถ๋ก ์๋๋ก ์ธํด ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์์ ์ ๋๋ค. ๊ธฐ์กด SAM ๊ณผ ๋น๊ตํ๋ฉด MobileSAM ์ ์ฝ 5๋ฐฐ ์๊ณ 7๋ฐฐ ๋น ๋ฅด๋ฏ๋ก ์ปดํจํ ๋ฆฌ์์ค๊ฐ ์ ํ๋ ํ๊ฒฝ์ ์ ํฉํฉ๋๋ค. ์ด๋ฌํ ํจ์จ์ฑ ๋๋ถ์ ๋ชจ๋ฐ์ผ ๋๋ฐ์ด์ค์์ ์๋นํ ์ง์ฐ ์๊ฐ ์์ด ์ค์๊ฐ ์ด๋ฏธ์ง ๋ถํ ์ ์ํํ ์ ์์ต๋๋ค. ๋ํ MobileSAM ์ ์ถ๋ก ๊ณผ ๊ฐ์ ๋ชจ๋ธ์ ๋ชจ๋ฐ์ผ ์ฑ๋ฅ์ ์ต์ ํ๋์ด ์์ต๋๋ค.
MobileSAM ๊ต์ก์ ์ด๋ป๊ฒ ์งํ๋์์ผ๋ฉฐ, ๊ต์ก ์ฝ๋๋ฅผ ์ฌ์ฉํ ์ ์๋์?
MobileSAM ๋ ์๋ณธ ์ด๋ฏธ์ง์ 1%์ ํด๋นํ๋ 10๋ง ๊ฐ์ ๋ฐ์ดํฐ์ ์ผ๋ก ํ๋ฃจ๋ ์ฑ ์ ๋๋ ์๊ฐ ๋ด์ ๋จ์ผ GPU ๋ก ํ์ต๋์์ต๋๋ค. ํธ๋ ์ด๋ ์ฝ๋๋ ํฅํ ์ ๊ณต๋ ์์ ์ด์ง๋ง, ํ์ฌ๋ MobileSAM GitHub ๋ฆฌํฌ์งํ ๋ฆฌ์์ MobileSAM ์ ๋ค๋ฅธ ์ธก๋ฉด์ ์ดํด๋ณผ ์ ์์ต๋๋ค. ์ด ๋ฆฌํฌ์งํ ๋ฆฌ์๋ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์ฌ์ ํ์ต๋ ๊ฐ์ค์น์ ๊ตฌํ ์ธ๋ถ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
MobileSAM ์ ์ฃผ์ ์ฌ์ฉ ์ฌ๋ก๋ ๋ฌด์์ธ๊ฐ์?
MobileSAM ๋ ๋ชจ๋ฐ์ผ ํ๊ฒฝ์์ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์ด๋ฏธ์ง ๋ถํ ์ ์ํด ์ค๊ณ๋์์ต๋๋ค. ์ฃผ์ ์ฌ์ฉ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- Real-time object detection and segmentation for mobile applications.
- ์ปดํจํ ๋ฆฌ์์ค๊ฐ ์ ํ๋ ๊ธฐ๊ธฐ์์ ์ง์ฐ ์๊ฐ์ด ์งง์ ์ด๋ฏธ์ง ์ฒ๋ฆฌ.
- ์ฆ๊ฐ ํ์ค(AR) ๋ฐ ์ค์๊ฐ ๋ถ์๊ณผ ๊ฐ์ ์์ ์ ์ํด AI ๊ธฐ๋ฐ ๋ชจ๋ฐ์ผ ์ฑ์ ํตํฉํฉ๋๋ค.
์์ธํ ์ฌ์ฉ ์ฌ๋ก์ ์ฑ๋ฅ ๋น๊ต๋ SAM ์์ MobileSAM ์ผ๋ก์ ์ ์ ์น์ ์ ์ฐธ์กฐํ์ธ์.