Register
Login
Resources
Docs Blog Datasets Glossary Case Studies Tutorials & Webinars
Product
Data Engine LLMs Platform Enterprise
Pricing Explore
Connect to our Discord channel

sam.md 14 KB

You have to be logged in to leave a comment. Sign In
comments description keywords
true ์–ผํŠธ๋ผ๋ฆฌ์–ผ๋ฆฌํ‹ฑ์Šค(Ultralytics)์˜ ์ตœ์ฒจ๋‹จ ์ด๋ฏธ์ง€ ์„ธ๋ถ„ํ™” ๋ชจ๋ธ์ธ Segment Anything Model(SAM)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์„ธ์š”. ํ•ด๋‹น ๋ชจ๋ธ์€ ์‹ค์‹œ๊ฐ„ ์ด๋ฏธ์ง€ ์„ธ๋ถ„ํ™”๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ฉฐ, ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ด์šฉํ•œ ์„ธ๋ถ„ํ™”, ์ œ๋กœ์ƒท ์„ฑ๋Šฅ ๋ฐ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ด…๋‹ˆ๋‹ค. ์–ผํŠธ๋ผ๋ฆฌ์–ผ๋ฆฌํ‹ฑ์Šค, ์ด๋ฏธ์ง€ ์„ธ๋ถ„ํ™”, Segment Anything Model, SAM, SA-1B ๋ฐ์ดํ„ฐ์…‹, ์‹ค์‹œ๊ฐ„ ์„ฑ๋Šฅ, ์ œ๋กœ์ƒท ์ „์ด, ๊ฐ์ฒด ๊ฐ์ง€, ์ด๋ฏธ์ง€ ๋ถ„์„, ๋จธ์‹  ๋Ÿฌ๋‹

Segment Anything Model (SAM)

Segment Anything Model(SAM) ์„ ์–ด์„œ ์˜ค์„ธ์š”. ์ด ํ˜์‹ ์ ์ธ ๋ชจ๋ธ์€ ํ”„๋กฌํ”„ํŠธ ๊ธฐ๋ฐ˜์˜ ์‹ค์‹œ๊ฐ„ ์„ธ๋ถ„ํ™”๋ฅผ ํ†ตํ•ด ์„ธ๋ถ„ํ™” ๋ถ„์•ผ์—์„œ ์ƒˆ๋กœ์šด ๊ธฐ์ค€์„ ์„ธ์› ์Šต๋‹ˆ๋‹ค.

SAM ์†Œ๊ฐœ: Segment Anything Model์˜ ์†Œ๊ฐœ

Segment Anything Model(SAM)์€ ํ”„๋กฌํ”„ํŠธ ๊ธฐ๋ฐ˜์˜ ์„ธ๋ถ„ํ™”๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๋›ฐ์–ด๋‚œ ์ด๋ฏธ์ง€ ์„ธ๋ถ„ํ™” ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. SAM์€ ์ด๋ฏธ์ง€ ์„ธ๋ถ„์„ ์ž‘์—…์—์„œ ๋…์ฐฝ์„ฑ์„ ๋ณด์—ฌ์ฃผ๋Š” Segment Anything ์ด๋‹ˆ์…”ํ‹ฐ๋ธŒ์˜ ํ•ต์‹ฌ์„ ํ˜•์„ฑํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ด๋ฏธ์ง€ ์„ธ๋ถ„ํ™”๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋ชจ๋ธ, ์ž‘์—… ๋ฐ ๋ฐ์ดํ„ฐ์…‹์„ ์†Œ๊ฐœํ•˜๋Š” ํ˜์‹ ์ ์ธ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

SAM์˜ ๊ณ ๊ธ‰์„ค๊ณ„๋Š” ๋ชจ๋ธ์ด ๊ธฐ์กด ์ง€์‹ ์—†์ด๋„ ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€ ๋ถ„ํฌ ๋ฐ ์ž‘์—…์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ธ ์ œ๋กœ์ƒท ์ „์ด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. 1,100๋งŒ ๊ฐœ์˜ ์ •๊ตํ•˜๊ฒŒ ์„ ๋ณ„๋œ ์ด๋ฏธ์ง€์— ๋ถ„ํฌ๋œ 10์–ต ๊ฐœ ์ด์ƒ์˜ ๋งˆ์Šคํฌ๋ฅผ ํฌํ•จํ•œ SA-1B ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ ํ•™์Šต๋œ SAM์€ ๋งŽ์€ ๊ฒฝ์šฐ์— ์ „์ ์œผ๋กœ ๊ฐ๋…๋œ ํ•™์Šต ๊ฒฐ๊ณผ๋ฅผ ๋Šฅ๊ฐ€ํ•˜๋Š” ์ธ์ƒ์ ์ธ ์ œ๋กœ์ƒท ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ์…‹ ์ƒ˜ํ”Œ ์ด๋ฏธ์ง€ ์ƒˆ๋กญ๊ฒŒ ๋„์ž…๋œ SA-1B ๋ฐ์ดํ„ฐ์…‹์—์„œ ์˜ค๋ฒ„๋ ˆ์ด๋œ ๋งˆ์Šคํฌ๋ฅผ ํฌํ•จํ•œ ์˜ˆ์‹œ ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค. SA-1B๋Š” ๋‹ค์–‘ํ•œ ๊ณ ํ•ด์ƒ๋„์˜ ์ด๋ฏธ์ง€๋ฅผ ๋ผ์ด์„ ์Šค ๋ณดํ˜ธํ•˜๋ฉฐ ์‚ฌ์ƒํ™œ์„ ๋ณดํ˜ธํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, 1,100๋งŒ ๊ฐœ์˜ ๊ณ ํ’ˆ์งˆ ์„ธ๋ถ„ํ™” ๋งˆ์Šคํฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋งˆ์Šคํฌ๋Š” SAM์— ์˜ํ•ด ์ž๋™์œผ๋กœ ์ฃผ์„์ด ๋‹ฌ๋ ธ์œผ๋ฉฐ, ์ธ๊ฐ„ ํ‰๊ฐ€ ๋ฐ ๋‹ค์–‘ํ•œ ์‹คํ—˜์„ ํ†ตํ•ด ๋†’์€ ํ’ˆ์งˆ๊ณผ ๋‹ค์–‘์„ฑ์„ ๊ฐ–์ถ”์—ˆ์Œ์ด ๊ฒ€์ฆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐํ™”๋ฅผ ์œ„ํ•ด ์ด๋ฏธ์ง€๋Š” ์ด๋ฏธ์ง€ ๋‹น ํ‰๊ท  100๊ฐœ์˜ ๋งˆ์Šคํฌ๋กœ ๊ทธ๋ฃนํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Segment Anything Model (SAM)์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ํ”„๋กฌํ”„ํŠธ ๊ธฐ๋ฐ˜ ์„ธ๋ถ„ํ™” ์ž‘์—…: SAM์€ ํ”„๋กฌํ”„ํŠธ ๊ธฐ๋ฐ˜์˜ ์„ธ๋ถ„ํ™” ์ž‘์—…์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์–ด, ๊ณต๊ฐ„ ๋˜๋Š” ํ…์ŠคํŠธ ๋‹จ์„œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐœ์ฒด๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ณ ๊ธ‰์„ค๊ณ„: Segment Anything Model์€ ๊ฐ•๋ ฅํ•œ ์ด๋ฏธ์ง€ ์ธ์ฝ”๋”, ํ”„๋กฌํ”„ํŠธ ์ธ์ฝ”๋” ๋ฐ ๊ฐ€๋ฒผ์šด ๋งˆ์Šคํฌ ๋””์ฝ”๋”๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋…ํŠนํ•œ ์•„ํ‚คํ…์ฒ˜๋Š” ์œ ์—ฐํ•œ ํ”„๋กฌํ”„ํŒ…, ์‹ค์‹œ๊ฐ„ ๋งˆ์Šคํฌ ๊ณ„์‚ฐ ๋ฐ ์„ธ๋ถ„ํ™” ์ž‘์—…์—์„œ์˜ ๋ชจํ˜ธ์„ฑ ์ธ์‹์„ ๊ฐ€๋Šฅ์ผ€ ํ•ฉ๋‹ˆ๋‹ค.
  • SA-1B ๋ฐ์ดํ„ฐ์…‹: Segment Anything ํ”„๋กœ์ ํŠธ์—์„œ ์†Œ๊ฐœ๋œ SA-1B ๋ฐ์ดํ„ฐ์…‹์€ 1,100๋งŒ ๊ฐœ์˜ ์ด๋ฏธ์ง€์— 10์–ต ๊ฐœ ์ด์ƒ์˜ ์„ธ๋ถ„ํ™” ๋งˆ์Šคํฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ง€๊ธˆ๊นŒ์ง€ ๊ฐ€์žฅ ํฐ ์„ธ๋ถ„ํ™” ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ, SAM์—๊ฒŒ ๋‹ค์–‘ํ•˜๊ณ  ๋Œ€๊ทœ๋ชจ์˜ ํ•™์Šต ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์ œ๋กœ์ƒท ์„ฑ๋Šฅ: SAM์€ ๋‹ค์–‘ํ•œ ์„ธ๋ถ„ํ™” ์ž‘์—…์—์„œ ๋›ฐ์–ด๋‚œ ์ œ๋กœ์ƒท ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ฃผ๋ฏ€๋กœ, ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง์˜ ํ•„์š”์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

Segment Anything Model ๋ฐ SA-1B ๋ฐ์ดํ„ฐ์…‹์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Segment Anything ์›น์‚ฌ์ดํŠธ์™€ ์—ฐ๊ตฌ ๋…ผ๋ฌธ Segment Anything์„ ์ฐธ์กฐํ•ด ์ฃผ์„ธ์š”.

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ, ์ง€์›ํ•˜๋Š” ์ž‘์—… ๋ฐ ์šด์˜ ๋ชจ๋“œ

์•„๋ž˜ ํ‘œ๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ๊ณผ ํ•ด๋‹น ๋ชจ๋ธ์˜ ์‚ฌ์ „ ํ›ˆ๋ จ ๊ฐ€์ค‘์น˜, ์ง€์›ํ•˜๋Š” ์ž‘์—… ๋ฐ ์ถ”๋ก , ๊ฒ€์ฆ, ํ›ˆ๋ จ ๋ฐ ๋‚ด๋ณด๋‚ด๊ธฐ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์šด์˜ ๋ชจ๋“œ์™€์˜ ํ˜ธํ™˜์„ฑ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ๋ชจ๋“œ๋Š” โœ… ์ด๋ชจ์ง€๋กœ, ์ง€์›๋˜์ง€ ์•Š๋Š” ๋ชจ๋“œ๋Š” โŒ ์ด๋ชจ์ง€๋กœ ํ‘œ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋ธ ์œ ํ˜• ์‚ฌ์ „ ํ›ˆ๋ จ ๊ฐ€์ค‘์น˜ ์ง€์› ์ž‘์—… ์ถ”๋ก  ๊ฒ€์ฆ ํ›ˆ๋ จ ๋‚ด๋ณด๋‚ด๊ธฐ
SAM base sam_b.pt ์ธ์Šคํ„ด์Šค ์„ธ๋ถ„ํ™” โœ… โŒ โŒ โœ…
SAM large sam_l.pt ์ธ์Šคํ„ด์Šค ์„ธ๋ถ„ํ™” โœ… โŒ โŒ โœ…

SAM ์‚ฌ์šฉ ๋ฐฉ๋ฒ•: ์ด๋ฏธ์ง€ ์„ธ๋ถ„ํ™”์—์„œ์˜ ๋‹ค์žฌ๋‹ค๋Šฅํ•จ๊ณผ ๊ฐ•๋ ฅํ•จ

Segment Anything Model์€ ํ›ˆ๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ์ดˆ์›”ํ•˜๋Š” ๋‹ค์–‘ํ•œ ํ•˜์œ„ ์ž‘์—…์— ๋Œ€ํ•ด์„œ๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์—๋Š” ๊ฐ€์žฅ์ž๋ฆฌ ๊ฒ€์ถœ, ๊ฐ์ฒด ์ œ์•ˆ ์ƒ์„ฑ, ์ธ์Šคํ„ด์Šค ์„ธ๋ถ„์žฅ ๋ฐ ์ดˆ๊ธฐ ํ…์ŠคํŠธ-๋งˆ์Šคํฌ ์˜ˆ์ธก ๋“ฑ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. SAM์€ ํ”„๋กฌํ”„ํŒ… ์—”์ง€๋‹ˆ์–ด๋ง์„ ํ†ตํ•ด ์ƒˆ๋กœ์šด ์ž‘์—… ๋ฐ ๋ฐ์ดํ„ฐ ๋ถ„ํฌ์— ๋น ๋ฅด๊ฒŒ ์ ์‘ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์ด๋ฏธ์ง€ ์„ธ๋ถ„ํ™”์— ๋Œ€ํ•œ ๋‹ค์žฌ๋‹ค๋Šฅํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SAM ์˜ˆ์ธก ์˜ˆ์ œ

!!! Example "ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ด์šฉํ•œ ์„ธ๋ถ„ํ™”"

์ฃผ์–ด์ง„ ํ”„๋กฌํ”„ํŠธ๋กœ ์ด๋ฏธ์ง€ ์„ธ๋ถ„ํ™”๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

=== "ํŒŒ์ด์ฌ"

    ```python
    from ultralytics import SAM

    # ๋ชจ๋ธ ๋กœ๋“œ
    model = SAM('sam_b.pt')

    # ๋ชจ๋ธ ์ •๋ณด ํ‘œ์‹œ (์„ ํƒ ์‚ฌํ•ญ)
    model.info()

    # bboxes ํ”„๋กฌํ”„ํŠธ๋กœ ์ถ”๋ก  ์‹คํ–‰
    model('ultralytics/assets/zidane.jpg', bboxes=[439, 437, 524, 709])

    # points ํ”„๋กฌํ”„ํŠธ๋กœ ์ถ”๋ก  ์‹คํ–‰
    model('ultralytics/assets/zidane.jpg', points=[900, 370], labels=[1])
    ```

!!! Example "์ „์ฒด ์ด๋ฏธ์ง€ ์„ธ๋ถ„ํ™”"

์ „์ฒด ์ด๋ฏธ์ง€ ์„ธ๋ถ„ํ™”๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

=== "ํŒŒ์ด์ฌ"

    ```python
    from ultralytics import SAM

    # ๋ชจ๋ธ ๋กœ๋“œ
    model = SAM('sam_b.pt')

    # ๋ชจ๋ธ ์ •๋ณด ํ‘œ์‹œ (์„ ํƒ ์‚ฌํ•ญ)
    model.info()

    # ์ถ”๋ก  ์‹คํ–‰
    model('path/to/image.jpg')
    ```

=== "CLI"

    ```bash
    # SAM ๋ชจ๋ธ๋กœ ์ถ”๋ก  ์‹คํ–‰
    yolo predict model=sam_b.pt source=path/to/image.jpg
    ```
  • ์—ฌ๊ธฐ์„œ ์ „์ฒด ์ด๋ฏธ์ง€ ์„ธ๋ถ„ํ™”๋Š” ํ”„๋กฌํ”„ํŠธ(bboxes/points/masks)๋ฅผ ์ „๋‹ฌํ•˜์ง€ ์•Š์œผ๋ฉด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

!!! Example "SAMPredictor ์˜ˆ์ œ"

์ด๋ฏธ์ง€๋ฅผ ์„ค์ •ํ•˜๊ณ  ์ด๋ฏธ์ง€ ์ธ์ฝ”๋”๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ๋ฒˆ ํ”„๋กฌํ”„ํŠธ ์ถ”๋ก ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

=== "ํ”„๋กฌํ”„ํŠธ ์ถ”๋ก "

    ```python
    from ultralytics.models.sam import Predictor as SAMPredictor

    # SAMPredictor ์ƒ์„ฑ
    overrides = dict(conf=0.25, task='segment', mode='predict', imgsz=1024, model="mobile_sam.pt")
    predictor = SAMPredictor(overrides=overrides)

    # ์ด๋ฏธ์ง€ ์„ค์ •
    predictor.set_image("ultralytics/assets/zidane.jpg")  # ์ด๋ฏธ์ง€ ํŒŒ์ผ๋กœ ์„ค์ •
    predictor.set_image(cv2.imread("ultralytics/assets/zidane.jpg"))  # np.ndarray๋กœ ์„ค์ •
    results = predictor(bboxes=[439, 437, 524, 709])
    results = predictor(points=[900, 370], labels=[1])

    # ์ด๋ฏธ์ง€ ๋ฆฌ์…‹
    predictor.reset_image()
    ```

์ถ”๊ฐ€ ์ธ์ˆ˜๋กœ ์ „์ฒด ์ด๋ฏธ์ง€๋ฅผ ์„ธ๋ถ„ํ™”ํ•ฉ๋‹ˆ๋‹ค.

=== "์ „์ฒด ์ด๋ฏธ์ง€ ์„ธ๋ถ„ํ™”"

    ```python
    from ultralytics.models.sam import Predictor as SAMPredictor

    # SAMPredictor ์ƒ์„ฑ
    overrides = dict(conf=0.25, task='segment', mode='predict', imgsz=1024, model="mobile_sam.pt")
    predictor = SAMPredictor(overrides=overrides)

    # ์ถ”๊ฐ€ ์ธ์ˆ˜๋กœ ์ด๋ฏธ์ง€ ์„ธ๋ถ„ํ™”
    results = predictor(source="ultralytics/assets/zidane.jpg", crop_n_layers=1, points_stride=64)
    ```
  • ์ „์ฒด ์ด๋ฏธ์ง€ ์„ธ๋ถ„ํ™”์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ถ”๊ฐ€ ์ธ์ˆ˜๋Š” Predictor/generate ์ฐธ์กฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

YOLOv8๊ณผ์˜ SAM ๋น„๊ต

์—ฌ๊ธฐ์„œ๋Š” Meta์˜ ๊ฐ€์žฅ ์ž‘์€ SAM ๋ชจ๋ธ์ธ SAM-b๋ฅผ ์–ผํŠธ๋ผ๋ฆฌ์–ผ๋ฆฌํ‹ฑ์Šค์˜ ๊ฐ€์žฅ ์ž‘์€ ์„ธ๋ถ„ํ™” ๋ชจ๋ธ, YOLOv8n-seg,๊ณผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค:

๋ชจ๋ธ ํฌ๊ธฐ ํŒŒ๋ผ๋ฏธํ„ฐ ์†๋„ (CPU)
Meta's SAM-b 358 MB 94.7 M 51096 ms/im
MobileSAM 40.7 MB 10.1 M 46122 ms/im
FastSAM-s with YOLOv8 backbone 23.7 MB 11.8 M 115 ms/im
Ultralytics YOLOv8n-seg 6.7 MB (53.4๋ฐฐ ์ž‘์Œ) 3.4 M (27.9๋ฐฐ ์ ์Œ) 59 ms/im (866๋ฐฐ ๋น ๋ฆ„)

์ด ๋น„๊ต๋Š” ๋ชจ๋ธ ํฌ๊ธฐ ๋ฐ ์†๋„์— ๋Œ€ํ•œ ์ƒ๋‹นํ•œ ์ฐจ์ด๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. SAM์€ ์ž๋™์œผ๋กœ ์„ธ๋ถ„ํ™”ํ•˜๋Š” ๋…ํŠนํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ์ž‘์€ ํฌ๊ธฐ์™€ ๋†’์€ ์ฒ˜๋ฆฌ ์†๋„๋กœ ์ธํ•ด YOLOv8 ์„ธ๋ถ„ํ™” ๋ชจ๋ธ๊ณผ ์ง์ ‘ ๊ฒฝ์Ÿํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์ด ํ…Œ์ŠคํŠธ๋Š” 2023๋…„ ์• ํ”Œ M2 ๋งฅ๋ถ(16GB RAM)์—์„œ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ…Œ์ŠคํŠธ๋ฅผ ์žฌํ˜„ํ•˜๋ ค๋ฉด:

!!! Example "์˜ˆ์ œ"

=== "ํŒŒ์ด์ฌ"
    ```python
    from ultralytics import FastSAM, SAM, YOLO

    # SAM-b ํ”„๋กœํŒŒ์ผ๋ง
    model = SAM('sam_b.pt')
    model.info()
    model('ultralytics/assets')

    # MobileSAM ํ”„๋กœํŒŒ์ผ๋ง
    model = SAM('mobile_sam.pt')
    model.info()
    model('ultralytics/assets')

    # FastSAM-s ํ”„๋กœํŒŒ์ผ๋ง
    model = FastSAM('FastSAM-s.pt')
    model.info()
    model('ultralytics/assets')

    # YOLOv8n-seg ํ”„๋กœํŒŒ์ผ๋ง
    model = YOLO('yolov8n-seg.pt')
    model.info()
    model('ultralytics/assets')
    ```

์ž๋™ ์ฃผ์„: ์„ธ๋ถ„ํ™” ๋ฐ์ดํ„ฐ์…‹์„ ์œ„ํ•œ ์‹ ์†ํ•œ ๊ฒฝ๋กœ

์ž๋™ ์ฃผ์„์€ SAM์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์œผ๋กœ, ๋ฏธ๋ฆฌ ํ›ˆ๋ จ๋œ ํƒ์ง€ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ๋ถ„ํ™” ๋ฐ์ดํ„ฐ์…‹์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฒˆ๊ฑฐ๋กญ๊ณ  ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ˆ˜์ž‘์—… ์ฃผ์„ ์ž‘์—…์„ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๋Œ€๋Ÿ‰์˜ ์ด๋ฏธ์ง€๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ์ •ํ™•ํ•˜๊ฒŒ ์ฃผ์„์„ ๋‹ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํƒ์ง€ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ๋ถ„ํ™” ๋ฐ์ดํ„ฐ์…‹ ์ƒ์„ฑํ•˜๊ธฐ

Ultralytics ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋ฆฌ ํ›ˆ๋ จ๋œ ํƒ์ง€ ๋ฐ SAM ์„ธ๋ถ„ํ™” ๋ชจ๋ธ๊ณผ ํ•จ๊ป˜ ๋ฐ์ดํ„ฐ์…‹์„ ์ž๋™์œผ๋กœ ์ฃผ์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด auto_annotate ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”:

!!! Example "์˜ˆ์ œ"

=== "ํŒŒ์ด์ฌ"
    ```python
    from ultralytics.data.annotator import auto_annotate

    auto_annotate(data="path/to/images", det_model="yolov8x.pt", sam_model='sam_b.pt')
    ```
์ธ์ˆ˜ ์œ ํ˜• ์„ค๋ช… ๊ธฐ๋ณธ๊ฐ’
data ๋ฌธ์ž์—ด ์ฃผ์„์„ ๋‹ฌ ์ด๋ฏธ์ง€๊ฐ€ ํฌํ•จ๋œ ํด๋” ๊ฒฝ๋กœ.
det_model ๋ฌธ์ž์—ด, ์„ ํƒ์‚ฌํ•ญ ๋ฏธ๋ฆฌ ํ›ˆ๋ จ๋œ YOLO ํƒ์ง€ ๋ชจ๋ธ. ๊ธฐ๋ณธ๊ฐ’์€ 'yolov8x.pt'. 'yolov8x.pt'
sam_model ๋ฌธ์ž์—ด, ์„ ํƒ์‚ฌํ•ญ ๋ฏธ๋ฆฌ ํ›ˆ๋ จ๋œ SAM ์„ธ๋ถ„ํ™” ๋ชจ๋ธ. ๊ธฐ๋ณธ๊ฐ’์€ 'sam_b.pt'. 'sam_b.pt'
device ๋ฌธ์ž์—ด, ์„ ํƒ์‚ฌํ•ญ ๋ชจ๋ธ์„ ์‹คํ–‰ํ•  ๋””๋ฐ”์ด์Šค. ๊ธฐ๋ณธ๊ฐ’์€ ๋นˆ ๋ฌธ์ž์—ด (CPU ๋˜๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ GPU ์‚ฌ์šฉ).
output_dir ๋ฌธ์ž์—ด, None, ์„ ํƒ์‚ฌํ•ญ ์ฃผ์„์ด ํฌํ•จ๋œ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•  ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ. ๊ธฐ๋ณธ๊ฐ’์€ 'data'์™€ ๊ฐ™์€ ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด๋ถ€์˜ 'labels' ํด๋”์ž…๋‹ˆ๋‹ค. None

auto_annotate ํ•จ์ˆ˜๋Š” ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„, ์ž…๋ ฅํ•œ ๋ฏธ๋ฆฌ ํ›ˆ๋ จ๋œ ํƒ์ง€์™€ SAM ์„ธ๋ถ„ํ™” ๋ชจ๋ธ, ์ด ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ๋””๋ฐ”์ด์Šค ๋ฐ ์ฃผ์„์ด ํฌํ•จ๋œ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•  ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ๋ฅผ ์„ ํƒ์ ์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ฏธ๋ฆฌ ํ›ˆ๋ จ๋œ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ ์ž๋™ ์ฃผ์„ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋ฉด ๋†’์€ ํ’ˆ์งˆ์˜ ์„ธ๋ถ„ํ™” ๋ฐ์ดํ„ฐ์…‹์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์„ ํฌ๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ํŠนํžˆ ๋Œ€๋Ÿ‰์˜ ์ด๋ฏธ์ง€ ์ปฌ๋ ‰์…˜์„ ๋‹ค๋ฃจ๋Š” ์—ฐ๊ตฌ์›๊ณผ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์œ ์šฉํ•˜๋ฉฐ, ์ˆ˜์ž‘์—… ์ฃผ์„ ๋Œ€์‹  ๋ชจ๋ธ ๊ฐœ๋ฐœ๊ณผ ํ‰๊ฐ€์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธ์šฉ ๋ฐ ๊ฐ์‚ฌ์˜ ๋ง

๊ท€ํ•˜์˜ ์—ฐ๊ตฌ ๋˜๋Š” ๊ฐœ๋ฐœ ์ž‘์—…์— SAM์ด ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ ๊ฒฝ์šฐ, ์ €ํฌ ๋…ผ๋ฌธ์„ ์ธ์šฉํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค:

!!! Quote ""

=== "BibTeX"

    ```bibtex
    @misc{kirillov2023segment,
          title={Segment Anything},
          author={Alexander Kirillov and Eric Mintun and Nikhila Ravi and Hanzi Mao and Chloe Rolland and Laura Gustafson and Tete Xiao and Spencer Whitehead and Alexander C. Berg and Wan-Yen Lo and Piotr Dollรกr and Ross Girshick},
          year={2023},
          eprint={2304.02643},
          archivePrefix={arXiv},
          primaryClass={cs.CV}
    }
    ```

๋ชจ๋ธ ๊ฐœ๋ฐœ๊ณผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๊ท€์ค‘ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” Meta AI์—๊ฒŒ ๊ฐ์‚ฌ์˜ ๋ง์”€์„ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

keywords: Segment Anything, Segment Anything Model, SAM, Meta SAM, ์ด๋ฏธ์ง€ ์„ธ๋ถ„ํ™”, ํ”„๋กฌํ”„ํŠธ ๊ธฐ๋ฐ˜ ์„ธ๋ถ„ํ™”, ์ œ๋กœ์ƒท ์„ฑ๋Šฅ, SA-1B ๋ฐ์ดํ„ฐ์…‹, ๊ณ ๊ธ‰์„ค๊ณ„, ์ž๋™ ์ฃผ์„, ์–ผํŠธ๋ผ๋ฆฌ์–ผ๋ฆฌํ‹ฑ์Šค, ์‚ฌ์ „ ํ›ˆ๋ จ ๋ชจ๋ธ, SAM base, SAM large, ์ธ์Šคํ„ด์Šค ์„ธ๋ถ„ํ™”, ์ปดํ“จํ„ฐ ๋น„์ „, ์ธ๊ณต ์ง€๋Šฅ, ๋จธ์‹  ๋Ÿฌ๋‹, ๋ฐ์ดํ„ฐ ์ฃผ์„, ์„ธ๋ถ„ํ™” ๋งˆ์Šคํฌ, ํƒ์ง€ ๋ชจ๋ธ, YOLO ํƒ์ง€ ๋ชจ๋ธ, bibtex, Meta AI.

Tip!

Press p or to see the previous file or, n or to see the next file

Comments

Loading...