SAM 2.1
๋ณด๋ค ์ ํํ SAM2.1 ๋ชจ๋ธ์ ์ง์ํ๊ฒ ๋์์ต๋๋ค. ๊ผญ ์ฌ์ฉํด ๋ณด์ธ์!
SAM 2: ๋ฌด์์ด๋ ์ธ๊ทธ๋จผํธ ๋ชจ๋ธ 2
SAM 2๋ ์ด๋ฏธ์ง์ ๋์์ ๋ชจ๋์์ ํฌ๊ด์ ์ธ ๊ฐ์ฒด ๋ถํ ์ ์ํด ์ค๊ณ๋ ์ต์ฒจ๋จ ๋๊ตฌ๋ก, ๋ฉํ์ Segment Anything Model(SAM)์ ํ์ ๋ฒ์ ์ ๋๋ค. ์ค์๊ฐ ์ฒ๋ฆฌ์ ์ ๋ก ์ท ์ผ๋ฐํ๋ฅผ ์ง์ํ๋ ํตํฉ์ ์ด๊ณ ์ ์ํ ๋ชจ๋ธ ์ํคํ ์ฒ๋ฅผ ํตํด ๋ณต์กํ ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ํ์ํฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ
Watch: ๋ฉํ๋ฅผ ์ฌ์ฉํ์ฌ ์ถ๋ก ์ ์คํํ๋ ๋ฐฉ๋ฒ SAM2 Ultralytics | ๋จ๊ณ๋ณ ๊ฐ์ด๋ ๐
ํตํฉ ๋ชจ๋ธ ์ํคํ ์ฒ
SAM 2๋ ์ด๋ฏธ์ง ๋ฐ ๋น๋์ค ์ธ๋ถํ ๊ธฐ๋ฅ์ ๋จ์ผ ๋ชจ๋ธ์ ๊ฒฐํฉํฉ๋๋ค. ์ด๋ฌํ ํตํฉ์ผ๋ก ๋ฐฐํฌ๊ฐ ๊ฐ์ํ๋๊ณ ๋ค์ํ ๋ฏธ๋์ด ์ ํ์์ ์ผ๊ด๋ ์ฑ๋ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ ์ฐํ ํ๋กฌํํธ ๊ธฐ๋ฐ ์ธํฐํ์ด์ค๋ฅผ ํ์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ํฌ์ธํธ, ๊ฒฝ๊ณ ์์ ๋๋ ๋ง์คํฌ์ ๊ฐ์ ๋ค์ํ ํ๋กฌํํธ ์ ํ์ ํตํด ๊ด์ฌ ์๋ ๊ฐ์ฒด๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
์ค์๊ฐ ์ฑ๋ฅ
์ด ๋ชจ๋ธ์ ์ด๋น ์ฝ 44ํ๋ ์์ ์ฒ๋ฆฌํ๋ ์ค์๊ฐ ์ถ๋ก ์๋๋ฅผ ๋ฌ์ฑํฉ๋๋ค. ๋ฐ๋ผ์ SAM 2๋ ๋น๋์ค ํธ์ง ๋ฐ ์ฆ๊ฐ ํ์ค๊ณผ ๊ฐ์ด ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ์ด ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํฉ๋๋ค.
์ ๋ก ์ท ์ผ๋ฐํ
SAM 2๋ ์ด์ ์ ๋ณธ ์ ์ด ์๋ ๋ฌผ์ฒด๋ฅผ ์ธ๋ถํํ์ฌ ๊ฐ๋ ฅํ ์ ๋ก ์ท ์ผ๋ฐํ๋ฅผ ๋ณด์ฌ์ค ์ ์์ต๋๋ค. ์ด๋ ์ฌ์ ์ ์๋ ์นดํ ๊ณ ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ํฌ๊ดํ์ง ๋ชปํ ์ ์๋ ๋ค์ํ๊ฑฐ๋ ์งํํ๋ ์๊ฐ์ ์์ญ์์ ํนํ ์ ์ฉํฉ๋๋ค.
๋ํํ ๊ฐ์
์ฌ์ฉ์๋ ์ถ๊ฐ ํ๋กฌํํธ๋ฅผ ์ ๊ณตํ์ฌ ์ธ๋ถํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ธ๋ถํํ ์ ์์ผ๋ฏ๋ก ์ถ๋ ฅ์ ์ ๋ฐํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ํธ์์ฉ ๊ธฐ๋ฅ์ ๋น๋์ค ์ฃผ์์ด๋ ์๋ฃ ์์๊ณผ ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ฏธ์ธ ์กฐ์ ํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
์๊ฐ์ ๊ณผ์ ์ ๋ํ ๊ณ ๊ธ ์ฒ๋ฆฌ
SAM 2์๋ ์ค๋ธ์ ํธ ์คํด๋ฃจ์ ๋ฐ ์ฌ์ถํ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๋น๋์ค ๋ถํ ๋ฌธ์ ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ ๋ฉ์ปค๋์ฆ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ ๊ตํ ๋ฉ๋ชจ๋ฆฌ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ํ๋ ์์ ๊ฑธ์ณ ๊ฐ์ฒด๋ฅผ ์ถ์ ํจ์ผ๋ก์จ ๊ฐ์ฒด๊ฐ ์ผ์์ ์ผ๋ก ๊ฐ๋ ค์ง๊ฑฐ๋ ์ฅ๋ฉด์์ ๋น ์ ธ๋๊ฐ๋ค๊ฐ ๋ค์ ๋ค์ด์ค๋ ๊ฒฝ์ฐ์๋ ์ฐ์์ฑ์ ๋ณด์ฅํฉ๋๋ค.
SAM 2์ ์ํคํ ์ฒ์ ๊ธฐ๋ฅ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด SAM 2 ์ฐ๊ตฌ ๋ ผ๋ฌธ์ ์ฐธ์กฐํ์ธ์.
์ฑ๋ฅ ๋ฐ ๊ธฐ์ ์ธ๋ถ ์ ๋ณด
SAM 2๋ ๋ค์ํ ์งํ์์ ์ด์ ๋ชจ๋ธ์ ๋ฅ๊ฐํ๋ ์๋ก์ด ๋ฒค์น๋งํฌ๋ฅผ ์ ์ํฉ๋๋ค:
Metric | SAM 2 | ์ด์ SOTA |
---|---|---|
์ธํฐ๋ํฐ๋ธ ๋น๋์ค ์ธ๋ถํ | ์ต๊ณ | - |
์ฌ๋๊ณผ์ ์ํธ์์ฉ ํ์ | 3๋ฐฐ ๋ ์ ์ | ๊ธฐ์ค์ |
์ด๋ฏธ์ง ์ธ๋ถํ ์ ํ๋ | ๊ฐ์ ๋จ | SAM |
์ถ๋ก ์๋ | 6๋ฐฐ ๋น ๋ฅธ ์๋ | SAM |
๋ชจ๋ธ ์ํคํ ์ฒ
ํต์ฌ ๊ตฌ์ฑ ์์
- ์ด๋ฏธ์ง ๋ฐ ๋น๋์ค ์ธ์ฝ๋: ํธ๋์คํฌ๋จธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ฅผ ํ์ฉํ์ฌ ์ด๋ฏธ์ง์ ๋น๋์ค ํ๋ ์ ๋ชจ๋์์ ๋์ ์์ค์ ํน์ง์ ์ถ์ถํฉ๋๋ค. ์ด ๊ตฌ์ฑ ์์๋ ๊ฐ ํ์์คํ ์์ ์๊ฐ์ ์ฝํ ์ธ ๋ฅผ ์ดํดํ๋ ์ญํ ์ ๋ด๋นํฉ๋๋ค.
- ํ๋กฌํํธ ์ธ์ฝ๋: ์ฌ์ฉ์๊ฐ ์ ๊ณตํ ํ๋กฌํํธ(์ , ์์, ๋ง์คํฌ)๋ฅผ ์ฒ๋ฆฌํ์ฌ ์ธ๋ถํ ์์ ์ ์๋ดํฉ๋๋ค. ์ด๋ฅผ ํตํด SAM 2๋ ์ฌ์ฉ์ ์ ๋ ฅ์ ์ ์ํ๊ณ ์ฅ๋ฉด ๋ด์ ํน์ ๊ฐ์ฒด๋ฅผ ๋์์ผ๋ก ์ง์ ํ ์ ์์ต๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๋ฉ์ปค๋์ฆ: ๋ฉ๋ชจ๋ฆฌ ์ธ์ฝ๋, ๋ฉ๋ชจ๋ฆฌ ๋ฑ ํฌ, ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๋ชจ๋์ด ํฌํจ๋ฉ๋๋ค. ์ด๋ฌํ ๊ตฌ์ฑ ์์๋ ๊ณผ๊ฑฐ ํ๋ ์์ ์ ๋ณด๋ฅผ ์ข ํฉ์ ์ผ๋ก ์ ์ฅํ๊ณ ํ์ฉํ์ฌ ๋ชจ๋ธ์ด ์๊ฐ์ด ์ง๋๋ ์ผ๊ด๋ ๊ฐ์ฒด ์ถ์ ์ ์ ์งํ ์ ์๋๋ก ํฉ๋๋ค.
- ๋ง์คํฌ ๋์ฝ๋: ์ธ์ฝ๋ฉ๋ ์ด๋ฏธ์ง ํน์ง๊ณผ ํ๋กฌํํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ต์ข ์ธ๊ทธ๋จผํ ์ด์ ๋ง์คํฌ๋ฅผ ์์ฑํฉ๋๋ค. ๋น๋์ค์์๋ ๋ฉ๋ชจ๋ฆฌ ์ปจํ ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ ์ ์ ์ฒด์ ๊ฑธ์ณ ์ ํํ ์ถ์ ์ ๋ณด์ฅํฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋ฉ์ปค๋์ฆ ๋ฐ ์คํด๋ฃจ์ ์ฒ๋ฆฌ
๋ฉ๋ชจ๋ฆฌ ๋ฉ์ปค๋์ฆ์ ํตํด SAM 2๋ ๋น๋์ค ๋ฐ์ดํฐ์ ์๊ฐ์ ์ข ์์ฑ๊ณผ ์คํด๋ฃจ์ ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ๊ฐ์ฒด๊ฐ ์์ง์ด๊ณ ์ํธ ์์ฉํ ๋ SAM 2๋ ๊ฐ์ฒด์ ํน์ง์ ๋ฉ๋ชจ๋ฆฌ ๋ฑ ํฌ์ ๊ธฐ๋กํฉ๋๋ค. ์ค๋ธ์ ํธ๊ฐ ๊ฐ๋ ค์ง๋ฉด ๋ชจ๋ธ์ ์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ ๋ํ๋ ๋์ ์์น์ ๋ชจ์์ ์์ธกํ ์ ์์ต๋๋ค. ์คํด๋ฃจ์ ํค๋๋ ํนํ ์ค๋ธ์ ํธ๊ฐ ๋ณด์ด์ง ์๋ ์๋๋ฆฌ์ค๋ฅผ ์ฒ๋ฆฌํ์ฌ ์ค๋ธ์ ํธ๊ฐ ๊ฐ๋ ค์ง ๊ฐ๋ฅ์ฑ์ ์์ธกํฉ๋๋ค.
๋ฉํฐ ๋ง์คํฌ ๋ชจํธ์ฑ ํด๊ฒฐ
๋ฌผ์ฒด๊ฐ ๊ฒน์น๋ ๋ฑ ๋ชจํธํ ์ํฉ์์๋ SAM 2์์ ์ฌ๋ฌ ๊ฐ์ ๋ง์คํฌ ์์ธก์ ์์ฑํ ์ ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ๋จ์ผ ๋ง์คํฌ๋ก ์ฅ๋ฉด์ ๋์์ค๋ฅผ ์ถฉ๋ถํ ์ค๋ช ํ์ง ๋ชปํ ์ ์๋ ๋ณต์กํ ์ฅ๋ฉด์ ์ ํํ๊ฒ ํํํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
SA-V ๋ฐ์ดํฐ ์ธํธ
SAM 2์ ๊ต์ก์ ์ํด ๊ฐ๋ฐ๋ SA-V ๋ฐ์ดํฐ ์ธํธ๋ ๊ฐ์ฅ ํฌ๊ณ ๋ค์ํ ๋น๋์ค ์ธ๋ถํ ๋ฐ์ดํฐ ์ธํธ ์ค ํ๋์ ๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค:
- 51,000๊ฐ ์ด์์ ๋์์: 47๊ฐ๊ตญ์์ ์ดฌ์ํ์ฌ ๋ค์ํ ์ค์ ์๋๋ฆฌ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
- 600,000๊ฐ ์ด์์ ๋ง์คํฌ ์ฃผ์: '๋ง์คํฌ ๋ฆฟ'์ด๋ผ๊ณ ํ๋ ์์ธํ ์๊ณต๊ฐ ๋ง์คํฌ ์ฃผ์์ผ๋ก ์ ์ฒด ์ค๋ธ์ ํธ์ ๋ถํ์ ํฌ๊ดํฉ๋๋ค.
- ๋ฐ์ดํฐ ์ธํธ ๊ท๋ชจ: ์ด์ ์ต๋ ๋ฐ์ดํฐ ์ธํธ๋ณด๋ค 4.5๋ฐฐ ๋ ๋ง์ ๋์์๊ณผ 53๋ฐฐ ๋ ๋ง์ ์ฃผ์์ด ํฌํจ๋์ด ์์ด ์ ๋ก ์๋ ๋ค์์ฑ๊ณผ ๋ณต์ก์ฑ์ ์ ๊ณตํฉ๋๋ค.
๋ฒค์น๋งํฌ
๋น๋์ค ์ค๋ธ์ ํธ ์ธ๋ถํ
SAM 2๋ ์ฃผ์ ๋น๋์ค ์ธ๋ถํ ๋ฒค์น๋งํฌ์์ ์ฐ์ํ ์ฑ๋ฅ์ ์ ์ฆํ์ต๋๋ค:
๋ฐ์ดํฐ ์ธํธ | J&F | J | F |
---|---|---|---|
DAVIS 2017 | 82.5 | 79.8 | 85.2 |
YouTube-VOS | 81.2 | 78.9 | 83.5 |
๋ํํ ์ธ๋ถํ
๋ํํ ์ธ๋ถํ ์์ ์์ SAM 2๋ ์๋นํ ํจ์จ์ฑ๊ณผ ์ ํ์ฑ์ ๋ณด์ฌ์ค๋๋ค:
๋ฐ์ดํฐ ์ธํธ | NoC@90 | AUC |
---|---|---|
๋ฐ์ด๋น์ค ์ธํฐ๋ํฐ๋ธ | 1.54 | 0.872 |
์ค์น
SAM 2๋ฅผ ์ค์นํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค. ๋ชจ๋ SAM 2 ๋ชจ๋ธ์ ์ฒ์ ์ฌ์ฉํ ๋ ์๋์ผ๋ก ๋ค์ด๋ก๋๋ฉ๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ SAM 2: ์ด๋ฏธ์ง ๋ฐ ๋์์ ์ธ๋ถํ์ ๋ค์์ฑ
๋ค์ ํ์์๋ ์ฌ์ฉ ๊ฐ๋ฅํ SAM 2 ๋ชจ๋ธ, ์ฌ์ ํ์ต๋ ๊ฐ์ค์น, ์ง์๋๋ ์์ , ์ถ๋ก , ๊ฒ์ฆ, ํ์ต, ๋ด๋ณด๋ด๊ธฐ ๋ฑ ๋ค์ํ ์ด์ ๋ชจ๋์์ ํธํ์ฑ์ ๋ํด ์์ธํ ์ค๋ช ํฉ๋๋ค.
๋ชจ๋ธ ์ ํ | ์ฌ์ ํ์ต๋ ๊ฐ์ค์น | ์ง์๋๋ ์์ | ์ถ๋ก | ์ ํจ์ฑ ๊ฒ์ฌ | ๊ต์ก | ๋ด๋ณด๋ด๊ธฐ |
---|---|---|---|---|---|---|
SAM 2 ์์ | sam2_t.pt | ์ธ์คํด์ค ์ธ๋ถํ | โ | โ | โ | โ |
SAM 2 ์์ | sam2_s.pt | ์ธ์คํด์ค ์ธ๋ถํ | โ | โ | โ | โ |
SAM 2 ๋ฒ ์ด์ค | sam2_b.pt | ์ธ์คํด์ค ์ธ๋ถํ | โ | โ | โ | โ |
SAM ๋ํ 2๊ฐ | sam2_l.pt | ์ธ์คํด์ค ์ธ๋ถํ | โ | โ | โ | โ |
SAM 2.1 ์์ | sam2.1_t.pt | ์ธ์คํด์ค ์ธ๋ถํ | โ | โ | โ | โ |
SAM 2.1 ์์ | sam2.1_s.pt | ์ธ์คํด์ค ์ธ๋ถํ | โ | โ | โ | โ |
SAM 2.1 ๊ธฐ๋ณธ | sam2.1_b.pt | ์ธ์คํด์ค ์ธ๋ถํ | โ | โ | โ | โ |
SAM 2.1 ๋ํ | sam2.1_l.pt | ์ธ์คํด์ค ์ธ๋ถํ | โ | โ | โ | โ |
SAM 2 ์์ธก ์์
SAM 2๋ ์ค์๊ฐ ๋น๋์ค ํธ์ง, ์๋ฃ ์์, ์์จ ์์คํ ๋ฑ ๋ค์ํ ์์ ์์ ํ์ฉํ ์ ์์ต๋๋ค. ์ ์ ๋ฐ ๋์ ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ธ๋ถํํ ์ ์์ด ์ฐ๊ตฌ์์ ๊ฐ๋ฐ์๋ฅผ ์ํ ๋ค์ฉ๋ ๋๊ตฌ๋ก ํ์ฉํ ์ ์์ต๋๋ค.
ํ๋กฌํํธ๊ฐ ์๋ ์ธ๊ทธ๋จผํธ
ํ๋กฌํํธ๊ฐ ์๋ ์ธ๊ทธ๋จผํธ
ํ๋กฌํํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ๋๋ ๋์์์์ ํน์ ๊ฐ์ฒด๋ฅผ ๋ถํ ํ ์ ์์ต๋๋ค.
from ultralytics import SAM
# Load a model
model = SAM("sam2.1_b.pt")
# Display model information (optional)
model.info()
# Run inference with bboxes prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])
# Run inference with single point
results = model(points=[900, 370], labels=[1])
# Run inference with multiple points
results = model(points=[[400, 370], [900, 370]], labels=[1, 1])
# Run inference with multiple points prompt per object
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 1]])
# Run inference with negative points prompt
results = model(points=[[[400, 370], [900, 370]]], labels=[[1, 0]])
๋ชจ๋ ๊ฒ์ ์ธ๋ถํ
๋ชจ๋ ๊ฒ์ ์ธ๋ถํ
ํน์ ํ๋กฌํํธ ์์ด ์ ์ฒด ์ด๋ฏธ์ง ๋๋ ๋์์ ์ฝํ ์ธ ๋ฅผ ์ธ๊ทธ๋จผํธํํฉ๋๋ค.
๋น๋์ค ๋ถํ ๋ฐ ๊ฐ์ฒด ์ถ์
์ธ๊ทธ๋จผํธ ๋น๋์ค
ํน์ ํ๋กฌํํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ฒด ๋์์ ์ฝํ ์ธ ๋ฅผ ์ธ๋ถํํ๊ณ ๊ฐ์ฒด๋ฅผ ์ถ์ ํฉ๋๋ค.
from ultralytics.models.sam import SAM2VideoPredictor
# Create SAM2VideoPredictor
overrides = dict(conf=0.25, task="segment", mode="predict", imgsz=1024, model="sam2_b.pt")
predictor = SAM2VideoPredictor(overrides=overrides)
# Run inference with single point
results = predictor(source="test.mp4", points=[920, 470], labels=1)
# Run inference with multiple points
results = predictor(source="test.mp4", points=[[920, 470], [909, 138]], labels=[1, 1])
# Run inference with multiple points prompt per object
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 1]])
# Run inference with negative points prompt
results = predictor(source="test.mp4", points=[[[920, 470], [909, 138]]], labels=[[1, 0]])
- ์ด ์๋ ํ๋กฌํํธ(b๋ฐ์ค/ํฌ์ธํธ/๋ง์คํฌ)๊ฐ ์ ๊ณต๋์ง ์์ ๊ฒฝ์ฐ SAM 2๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ๋๋ ๋์์์ ์ ์ฒด ์ฝํ ์ธ ๋ฅผ ์ธ๊ทธ๋จผํธํํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
SAM 2 ๋น๊ต vs YOLOv8
YOLOv8n์ฌ๊ธฐ์๋ Meta์ ๊ฐ์ฅ ์์ SAM 2 ๋ชจ๋ธ์ธ SAM2-t์ ๊ฐ์ฅ ์์ ์ธ๋ถํ ๋ชจ๋ธ์ธ Ultralytics -seg๋ฅผ ๋น๊ตํฉ๋๋ค :
๋ชจ๋ธ | ํฌ๊ธฐ (MB) |
๋งค๊ฐ๋ณ์ (M) |
์๋ (CPU) (ms/im) |
---|---|---|---|
๋ฉํ SAM-b | 375 | 93.7 | 161440 |
๋ฉํ SAM2-b | 162 | 80.8 | 121923 |
๋ฉํ SAM2-t | 78.1 | 38.9 | 85155 |
MobileSAM | 40.7 | 10.1 | 98543 |
FastSAM-s์ YOLOv8 ๋ฐฑ๋ณธ | 23.7 | 11.8 | 140 |
Ultralytics YOLOv8n-seg | 6.7 (11.7๋ฐฐ ์์์ง) | 3.4 (11.4๋ฐฐ ๊ฐ์) | 79.5 (1071๋ฐฐ ๋นจ๋ผ์ง) |
์ด ๋น๊ต๋ ๋ชจ๋ธ ๊ฐ์ ๋ชจ๋ธ ํฌ๊ธฐ์ ์๋์์ ์์ฒญ๋ ์ฐจ์ด๋ฅผ ๋ณด์ฌ์ค๋๋ค. SAM ์ ์๋ ์ธ๊ทธ๋จผํธ๋ฅผ ์ํ ๊ณ ์ ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง, ๋ ์๊ณ ๋น ๋ฅด๋ฉฐ ํจ์จ์ ์ธ YOLOv8 ์ธ๊ทธ๋จผํธ ๋ชจ๋ธ๊ณผ ์ง์ ์ ์ผ๋ก ๊ฒฝ์ํ๋ ๊ฒ์ ์๋๋๋ค.
ํ
์คํธ๋ 16GB RAM์ด ์ฅ์ฐฉ๋ 2023๋
ํ Apple M2 Macbook์์ ๋ค์์ ์ฌ์ฉํ์ฌ ์คํ๋์์ต๋๋ค. torch==2.3.1
๊ทธ๋ฆฌ๊ณ ultralytics==8.3.82
. ์ด ํ
์คํธ๋ฅผ ์ฌํํ๋ ค๋ฉด:
์
from ultralytics import ASSETS, SAM, YOLO, FastSAM
# Profile SAM2-t, SAM2-b, SAM-b, MobileSAM
for file in ["sam_b.pt", "sam2_b.pt", "sam2_t.pt", "mobile_sam.pt"]:
model = SAM(file)
model.info()
model(ASSETS)
# Profile FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)
# Profile YOLOv8n-seg
model = YOLO("yolov8n-seg.pt")
model.info()
model(ASSETS)
์๋ ์ฃผ์: ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์งํฉ ์์ฑ
์๋ ์ฃผ์์ SAM 2์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ผ๋ก, ์ฌ์ฉ์๋ ์ฌ์ ํ์ต๋ ๋ชจ๋ธ์ ํ์ฉํ์ฌ ๋น ๋ฅด๊ณ ์ ํํ๊ฒ ์ธ๋ถํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ๋ง์ ์์์ ์์ด ๋๊ท๋ชจ์ ๊ณ ํ์ง ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์์ฑํ๋ ๋ฐ ํนํ ์ ์ฉํฉ๋๋ค.
SAM 2๋ก ์๋ ์ฃผ์์ ๋ค๋ ๋ฐฉ๋ฒ
Watch: Ultralytics | ๋ฐ์ดํฐ ๋ผ๋ฒจ๋ง์ ์ฌ์ฉํ์ฌ ๋ฉํ์ Segment Anything 2 ๋ชจ๋ธ๋ก ์๋ ์ฃผ์ ๋ฌ๊ธฐ
SAM 2๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์งํฉ์ ์๋ ์ฃผ์์ ๋ฌ๋ ค๋ฉด ์ด ์์ ๋ฅผ ๋ฐ๋ฅด์ธ์:
์๋ ์ฃผ์ ์์
์ธ์ | ์ ํ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
---|---|---|---|
data |
str |
required | Path to directory containing target images/videos for annotation or segmentation. |
det_model |
str |
"yolo11x.pt" |
YOLO detection model path for initial object detection. |
sam_model |
str |
"sam2_b.pt" |
SAM2 model path for segmentation (supports t/s/b/l variants and SAM2.1) and mobile_sam models. |
device |
str |
"" |
Computation device (e.g., 'cuda:0', 'cpu', or '' for automatic device detection). |
conf |
float |
0.25 |
YOLO detection confidence threshold for filtering weak detections. |
iou |
float |
0.45 |
IoU threshold for Non-Maximum Suppression to filter overlapping boxes. |
imgsz |
int |
640 |
Input size for resizing images (must be multiple of 32). |
max_det |
int |
300 |
Maximum number of detections per image for memory efficiency. |
classes |
list[int] |
None |
List of class indices to detect (e.g., [0, 1] for person & bicycle). |
output_dir |
str |
None |
Save directory for annotations (defaults to './labels' relative to data path). |
์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ๊ณ ํ์ง์ ์ธ๋ถํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋น ๋ฅด๊ฒ ์์ฑํ ์ ์์ด ํ๋ก์ ํธ ์๋๋ฅผ ๋์ด๋ ค๋ ์ฐ๊ตฌ์์ ๊ฐ๋ฐ์์๊ฒ ์ด์์ ์ ๋๋ค.
์ ํ ์ฌํญ
์ด๋ฌํ ์ฅ์ ์๋ ๋ถ๊ตฌํ๊ณ SAM 2์๋ ๋ช ๊ฐ์ง ํ๊ณ๊ฐ ์์ต๋๋ค:
- ์ถ์ ์์ ์ฑ: SAM 2๋ ์ํ์ค๊ฐ ํ์ฅ๋๊ฑฐ๋ ์์ ์ด ํฌ๊ฒ ๋ณ๊ฒฝ๋๋ ๋์ ์ค๋ธ์ ํธ๋ฅผ ์ถ์ ํ์ง ๋ชปํ ์ ์์ต๋๋ค.
- ์ค๋ธ์ ํธ ํผ๋: ํนํ ํผ์กํ ์ฅ๋ฉด์์ ๋ชจ๋ธ์ด ๋น์ทํ ๋ชจ์์ ๋ฌผ์ฒด๋ฅผ ํผ๋ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
- ์ฌ๋ฌ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ํจ์จ์ฑ: ์ฌ๋ฌ ๊ฐ์ฒด๋ฅผ ๋์์ ์ฒ๋ฆฌํ ๊ฒฝ์ฐ ๊ฐ์ฒด ๊ฐ ํต์ ์ด ๋ถ์กฑํ๊ธฐ ๋๋ฌธ์ ์ธ๋ถํ ํจ์จ์ฑ์ด ๋จ์ด์ง๋๋ค.
- ๋ํ ์ผ ์ ํ๋: ํนํ ๋น ๋ฅด๊ฒ ์์ง์ด๋ ๋ฌผ์ฒด์ ๊ฒฝ์ฐ ๋ฏธ์ธํ ๋ํ ์ผ์ ๋์น ์ ์์ต๋๋ค. ์ถ๊ฐ ํ๋กฌํํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ด ๋ฌธ์ ๋ฅผ ๋ถ๋ถ์ ์ผ๋ก ํด๊ฒฐํ ์ ์์ง๋ง ์๊ฐ์ ๋ถ๋๋ฌ์์ด ๋ณด์ฅ๋์ง๋ ์์ต๋๋ค.
์ธ์ฉ ๋ฐ ๊ฐ์ฌ
SAM 2๊ฐ ์ฐ๊ตฌ ๋๋ ๊ฐ๋ฐ ์์ ์ ์ค์ํ ๋ถ๋ถ์ธ ๊ฒฝ์ฐ ๋ค์ ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฉํด ์ฃผ์ธ์:
@article{ravi2024sam2,
title={SAM 2: Segment Anything in Images and Videos},
author={Ravi, Nikhila and Gabeur, Valentin and Hu, Yuan-Ting and Hu, Ronghang and Ryali, Chaitanya and Ma, Tengyu and Khedr, Haitham and R{\"a}dle, Roman and Rolland, Chloe and Gustafson, Laura and Mintun, Eric and Pan, Junting and Alwala, Kalyan Vasudev and Carion, Nicolas and Wu, Chao-Yuan and Girshick, Ross and Doll{\'a}r, Piotr and Feichtenhofer, Christoph},
journal={arXiv preprint},
year={2024}
}
์ด ํ๊ธฐ์ ์ธ ๋ชจ๋ธ๊ณผ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํตํด AI ์ปค๋ฎค๋ํฐ์ ๊ธฐ์ฌํ Meta AI์ ๊ฐ์ฌ์ ๋ง์์ ์ ํฉ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
SAM 2๋ ๋ฌด์์ด๋ฉฐ ๊ธฐ์กด Segment Anything ๋ชจ๋ธ(SAM)์ ์ด๋ป๊ฒ ๊ฐ์ ํ๋์?
SAM 2๋ ์ด๋ฏธ์ง์ ๋์์ ๋ชจ๋์์ ํฌ๊ด์ ์ธ ๊ฐ์ฒด ๋ถํ ์ ์ํด ์ค๊ณ๋ ์ต์ฒจ๋จ ๋๊ตฌ๋ก, ๋ฉํ์ Segment Anything Model(SAM)์ ํ์ ๋ฒ์ ์ ๋๋ค. ์ค์๊ฐ ์ฒ๋ฆฌ์ ์ ๋ก ์ท ์ผ๋ฐํ๋ฅผ ์ง์ํ๋ ํตํฉ์ ์ด๊ณ ์ ์ํ ๋ชจ๋ธ ์ํคํ ์ฒ๋ฅผ ํตํด ๋ณต์กํ ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ํ์ํฉ๋๋ค. SAM 2๋ ๊ธฐ์กด ๋ฒ์ ( SAM)์ ๋นํด ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ๊ฐ์ ์ฌํญ์ ์ ๊ณตํฉ๋๋ค:
- ํตํฉ ๋ชจ๋ธ ์ํคํ ์ฒ: ์ด๋ฏธ์ง ๋ฐ ๋น๋์ค ์ธ๋ถํ ๊ธฐ๋ฅ์ ๋จ์ผ ๋ชจ๋ธ์ ๊ฒฐํฉํฉ๋๋ค.
- ์ค์๊ฐ ์ฑ๋ฅ: ์ด๋น ์ฝ 44ํ๋ ์์ ์ฒ๋ฆฌํ๋ฏ๋ก ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ์ด ํ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉํฉ๋๋ค.
- ์ ๋ก ์ท ์ผ๋ฐํ: ๋ค์ํ ์๊ฐ์ ์์ญ์์ ์ ์ฉํ, ์ด์ ์ ์ ํ ์ ์ด ์๋ ๊ฐ์ฒด๋ฅผ ์ธ๊ทธ๋จผํธํํฉ๋๋ค.
- ๋ํํ ์ธ๋ถํ: ์ถ๊ฐ ํ๋กฌํํธ๋ฅผ ์ ๊ณตํ์ฌ ์ฌ์ฉ์๊ฐ ์ธ๋ถํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ๊ตฌ์ฒดํํ ์ ์์ต๋๋ค.
- ๊ณ ๊ธ ์๊ฐ์ ๋ฌธ์ ์ฒ๋ฆฌ: ์ค๋ธ์ ํธ ์คํด๋ฃจ์ ๋ฐ ๋ค์ ๋ํ๋๊ธฐ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๋น๋์ค ๋ถํ ๋ฌธ์ ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
SAM 2์ ์ํคํ ์ฒ ๋ฐ ๊ธฐ๋ฅ์ ๋ํ ์์ธํ ๋ด์ฉ์ SAM 2 ์ฐ๊ตฌ ๋ ผ๋ฌธ์ ์ฐธ์กฐํ์ธ์.
์ค์๊ฐ ๋์์ ๋ถํ ์ SAM 2๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์?
SAM 2์ ํ๋กฌํํธ ๊ฐ๋ฅํ ์ธํฐํ์ด์ค์ ์ค์๊ฐ ์ถ๋ก ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์ค์๊ฐ ๋์์ ๋ถํ ์ ํ์ฉํ ์ ์์ต๋๋ค. ๋ค์์ ๊ธฐ๋ณธ์ ์ธ ์์์ ๋๋ค:
ํ๋กฌํํธ๊ฐ ์๋ ์ธ๊ทธ๋จผํธ
ํ๋กฌํํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ๋๋ ๋์์์์ ํน์ ๊ฐ์ฒด๋ฅผ ๋ถํ ํ ์ ์์ต๋๋ค.
from ultralytics import SAM
# Load a model
model = SAM("sam2_b.pt")
# Display model information (optional)
model.info()
# Segment with bounding box prompt
results = model("path/to/image.jpg", bboxes=[100, 100, 200, 200])
# Segment with point prompt
results = model("path/to/image.jpg", points=[150, 150], labels=[1])
๋ณด๋ค ์์ธํ ์ฌ์ฉ ๋ฐฉ๋ฒ์ SAM 2 ์น์ ์ ์ฐธ์กฐํ์ธ์.
SAM 2๋ฅผ ํ์ต์ํค๋ ๋ฐ ์ด๋ค ๋ฐ์ดํฐ ์ธํธ๊ฐ ์ฌ์ฉ๋๋ฉฐ, ์ด๋ป๊ฒ ์ฑ๋ฅ์ ํฅ์์ํค๋์?
SAM 2๋ ๊ฐ์ฅ ํฌ๊ณ ๋ค์ํ ๋น๋์ค ์ธ๋ถํ ๋ฐ์ดํฐ ์ธํธ ์ค ํ๋์ธ SA-V ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ต๋์์ต๋๋ค. SA-V ๋ฐ์ดํฐ ์ธํธ์๋ ๋ค์์ด ํฌํจ๋ฉ๋๋ค:
- 51,000๊ฐ ์ด์์ ๋์์: 47๊ฐ๊ตญ์์ ์ดฌ์ํ์ฌ ๋ค์ํ ์ค์ ์๋๋ฆฌ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
- 600,000๊ฐ ์ด์์ ๋ง์คํฌ ์ฃผ์: '๋ง์คํฌ ๋ฆฟ'์ด๋ผ๊ณ ํ๋ ์์ธํ ์๊ณต๊ฐ ๋ง์คํฌ ์ฃผ์์ผ๋ก ์ ์ฒด ์ค๋ธ์ ํธ์ ๋ถํ์ ํฌ๊ดํฉ๋๋ค.
- ๋ฐ์ดํฐ ์ธํธ ๊ท๋ชจ: ์ด์ ์ต๋ ๋ฐ์ดํฐ ์ธํธ๋ณด๋ค 4.5๋ฐฐ ๋ ๋ง์ ๋์์๊ณผ 53๋ฐฐ ๋ ๋ง์ ์ฃผ์์ด ํฌํจ๋์ด ์์ด ์ ๋ก ์๋ ๋ค์์ฑ๊ณผ ๋ณต์ก์ฑ์ ์ ๊ณตํฉ๋๋ค.
์ด ๊ด๋ฒ์ํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํตํด SAM 2๋ ์ฃผ์ ๋น๋์ค ์ธ๋ถํ ๋ฒค์น๋งํฌ์์ ์ฐ์ํ ์ฑ๋ฅ์ ๋ฌ์ฑํ๊ณ ์ ๋ก ์ท ์ผ๋ฐํ ๊ธฐ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ SA-V ๋ฐ์ดํฐ ์ธํธ ์น์ ์ ์ฐธ์กฐํ์ธ์.
SAM 2๋ ๋น๋์ค ๋ถํ ์์ ์คํด๋ฃจ์ ๋ฐ ์ค๋ธ์ ํธ ์ฌ์ถํ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์?
SAM 2์๋ ๋น๋์ค ๋ฐ์ดํฐ์ ์๊ฐ์ ์ข ์์ฑ๊ณผ ์คํด๋ฃจ์ ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ ๊ตํ ๋ฉ๋ชจ๋ฆฌ ๋ฉ์ปค๋์ฆ์ด ํฌํจ๋์ด ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ๋ฉ์ปค๋์ฆ์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ๋ฉ๋๋ค:
- ๋ฉ๋ชจ๋ฆฌ ์ธ์ฝ๋ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ๋ฑ ํฌ: ์ง๋ ํ๋ ์์ ๊ธฐ๋ฅ์ ์ ์ฅํฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๋ชจ๋: ์ ์ฅ๋ ์ ๋ณด๋ฅผ ํ์ฉํ์ฌ ์๊ฐ์ด ์ง๋๋ ์ผ๊ด๋ ๊ฐ์ฒด ์ถ์ ์ ์ ์งํฉ๋๋ค.
- ์คํด๋ฃจ์ ํค๋: ์ค๋ธ์ ํธ๊ฐ ๋ณด์ด์ง ์๋ ์๋๋ฆฌ์ค๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ์ฒ๋ฆฌํ์ฌ ์ค๋ธ์ ํธ๊ฐ ๊ฐ๋ ค์ง ๊ฐ๋ฅ์ฑ์ ์์ธกํฉ๋๋ค.
์ด ๋ฉ์ปค๋์ฆ์ ์ค๋ธ์ ํธ๊ฐ ์ผ์์ ์ผ๋ก ๊ฐ๋ ค์ง๊ฑฐ๋ ์ฌ์์ ๋๊ฐ๋ค๊ฐ ๋ค์ ๋ค์ด์ค๋ ๊ฒฝ์ฐ์๋ ์ฐ์์ฑ์ ๋ณด์ฅํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ฉ๋ชจ๋ฆฌ ๋ฉ์ปค๋์ฆ ๋ฐ ์คํด๋ฃจ์ ์ฒ๋ฆฌ ์น์ ์ ์ฐธ์กฐํ์ญ์์ค.
SAM 2๋ YOLOv8 ๊ณผ ๊ฐ์ ๋ค๋ฅธ ์ธ๋ถํ ๋ชจ๋ธ๊ณผ ์ด๋ป๊ฒ ๋น๊ต๋๋์?
SAM 2์ Ultralytics YOLOv8 ์ ์๋ก ๋ค๋ฅธ ์ฉ๋๋ก ์ฌ์ฉ๋๋ฉฐ ๊ฐ๊ธฐ ๋ค๋ฅธ ์์ญ์์ ๋ฐ์ด๋ ์ฑ๋ฅ์ ๋ฐํํฉ๋๋ค. SAM 2๋ ์ ๋ก ์ท ์ผ๋ฐํ ๋ฐ ์ค์๊ฐ ์ฑ๋ฅ๊ณผ ๊ฐ์ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ๊ฐ์ถ ํฌ๊ด์ ์ธ ๊ฐ์ฒด ์ธ๋ถํ๋ฅผ ์ํด ์ค๊ณ๋ ๋ฐ๋ฉด, YOLOv8 ์ ๊ฐ์ฒด ๊ฐ์ง ๋ฐ ์ธ๋ถํ ์์ ์ ์๋์ ํจ์จ์ฑ์ ์ต์ ํ๋์ด ์์ต๋๋ค. ๋ค์์ ๋น๊ต์ ๋๋ค:
๋ชจ๋ธ | ํฌ๊ธฐ (MB) |
๋งค๊ฐ๋ณ์ (M) |
์๋ (CPU) (ms/im) |
---|---|---|---|
๋ฉํ SAM-b | 375 | 93.7 | 161440 |
๋ฉํ SAM2-b | 162 | 80.8 | 121923 |
๋ฉํ SAM2-t | 78.1 | 38.9 | 85155 |
MobileSAM | 40.7 | 10.1 | 98543 |
FastSAM-s์ YOLOv8 ๋ฐฑ๋ณธ | 23.7 | 11.8 | 140 |
Ultralytics YOLOv8n-seg | 6.7 (11.7๋ฐฐ ์์์ง) | 3.4 (11.4๋ฐฐ ๊ฐ์) | 79.5 (1071๋ฐฐ ๋นจ๋ผ์ง) |
์์ธํ ๋ด์ฉ์ SAM 2 ๋น๊ต์ YOLOv8 ์น์ ์ ์ฐธ์กฐํ์ธ์.