Ultralytics ํ์๊ธฐ API
์ปค๋ฎค๋ํฐ ๋ ธํธ โ ๏ธ
๊ธฐ์ค ultralytics>=8.3.10
, Ultralytics ํ์๊ธฐ ์ง์์ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ํ์ง๋ง ๊ฑฑ์ ํ์ง ๋ง์ธ์! ์ด์ ๋ค์์ ํตํด ์ ์ฌํ๊ฑฐ๋ ๋์ฑ ํฅ์๋ ๊ธฐ๋ฅ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. Ultralytics HUB๋ ์ํฌํ๋ก์ฐ๋ฅผ ๊ฐ์ํํ๋๋ก ์ค๊ณ๋ ์ง๊ด์ ์ธ ๋
ธ์ฝ๋ ํ๋ซํผ์
๋๋ค. Ultralytics HUB๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋ ํ ์ค ์์ฑํ์ง ์๊ณ ๋ ๋ฐ์ดํฐ๋ฅผ ์์ฝ๊ฒ ํ์, ์๊ฐํ, ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ๊ผญ ํ์ธํ์๊ณ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ํ์ฉํด ๋ณด์ธ์!
์๊ฐ
Explorer API๋ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํ์ํ๊ธฐ ์ํ Python API์ ๋๋ค. SQL ์ฟผ๋ฆฌ, ๋ฒกํฐ ์ ์ฌ์ฑ ๊ฒ์, ์๋งจํฑ ๊ฒ์์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์งํฉ์ ํํฐ๋งํ๊ณ ๊ฒ์ํ ์ ์์ต๋๋ค.
Watch: Ultralytics Explorer API ๊ฐ์
์ค์น
Explorer๋ ์ผ๋ถ ๊ธฐ๋ฅ์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํฉ๋๋ค. ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฌ์ฉ ์ ์๋์ผ๋ก ์ค์น๋ฉ๋๋ค. ์ด๋ฌํ ์ข ์์ฑ์ ์๋์ผ๋ก ์ค์นํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ธ์:
์ฌ์ฉ๋ฒ
from ultralytics import Explorer
# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolo11n.pt")
# Create embeddings for your dataset
explorer.create_embeddings_table()
# Search for similar images to a given image/images
dataframe = explorer.get_similar(img="path/to/image.jpg")
# Or search for similar images to a given index/indices
dataframe = explorer.get_similar(idx=0)
์ฐธ๊ณ
์ฃผ์ด์ง ๋ฐ์ดํฐ ์ธํธ์ ๋ชจ๋ธ ์์ ๋ํ ์๋ฒ ๋ฉ ํ ์ด๋ธ์ ํ ๋ฒ๋ง ์์ฑ๋์ด ์ฌ์ฌ์ฉ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ ์จ๋์คํฌ๋ก ํ์ฅ๋๋ LanceDB๊ฐ ์ฌ์ฉ๋๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์์ด COCO์ ๊ฐ์ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ์ ๋ํ ์๋ฒ ๋ฉ์ ์์ฑํ๊ณ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ฒ ๋ฉ ํ
์ด๋ธ์ ๊ฐ์ ๋ก ์
๋ฐ์ดํธํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ ๋ฌํ ์ ์์ต๋๋ค. force=True
์ create_embeddings_table
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
LanceDB ํ ์ด๋ธ ๊ฐ์ฒด์ ์ง์ ์ก์ธ์คํ์ฌ ๊ณ ๊ธ ๋ถ์์ ์ํํ ์ ์์ต๋๋ค. ์๋ฒ ๋ฉ ํ ์ด๋ธ๋ก ์์ ํ๊ธฐ ์น์ ์์ ์์ธํ ์์๋ณด์ธ์.
1. ์ ์ฌ ๊ฒ์
์ ์ฌ๋ ๊ฒ์์ ์ฃผ์ด์ง ์ด๋ฏธ์ง์ ์ ์ฌํ ์ด๋ฏธ์ง๋ฅผ ์ฐพ๋ ๊ธฐ์ ์ ๋๋ค. ๋น์ทํ ์ด๋ฏธ์ง์๋ ๋น์ทํ ์๋ฒ ๋ฉ์ด ์์ ๊ฒ์ด๋ผ๋ ์๊ฐ์ ๊ธฐ๋ฐํฉ๋๋ค. ์๋ฒ ๋ฉ ํ ์ด๋ธ์ด ๊ตฌ์ถ๋๋ฉด ๋ค์ ์ค ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์๋งจํฑ ๊ฒ์์ ์คํํ ์ ์์ต๋๋ค:
- ๋ฐ์ดํฐ ์งํฉ์ ์ง์ ๋ ์ธ๋ฑ์ค ๋๋ ์ธ๋ฑ์ค ๋ชฉ๋ก์์:
exp.get_similar(idx=[1,10], limit=10)
- ๋ฐ์ดํฐ ์ธํธ์ ์๋ ์ด๋ฏธ์ง ๋๋ ์ด๋ฏธ์ง ๋ชฉ๋ก์์:
exp.get_similar(img=["path/to/img1", "path/to/img2"], limit=10)
์ฌ๋ฌ ๊ฐ์ ์ ๋ ฅ์ด ์๋ ๊ฒฝ์ฐ ์๋ฒ ๋ฉ๋ ํญ๋ชฉ์ ํฉ์ฐ๊ฐ์ด ์ฌ์ฉ๋ฉ๋๋ค.
ํ๋ค ๋ฐ์ดํฐ ํ๋ ์์ด ํฌํจ๋ limit
์๋ฒ ๋ฉ ๊ณต๊ฐ์์์ ๊ฑฐ๋ฆฌ์ ํจ๊ป ์
๋ ฅ๊ณผ ๊ฐ์ฅ ์ ์ฌํ ๋ฐ์ดํฐ ํฌ์ธํธ์ ์์
๋๋ค. ์ด ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ถ๊ฐ ํํฐ๋ง์ ์ํํ ์ ์์ต๋๋ค.
์๋งจํฑ ๊ฒ์
from ultralytics import Explorer
# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()
similar = exp.get_similar(img="https://ultralytics.com/images/bus.jpg", limit=10)
print(similar.head())
# Search using multiple indices
similar = exp.get_similar(
img=["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/bus.jpg"],
limit=10,
)
print(similar.head())
from ultralytics import Explorer
# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()
similar = exp.get_similar(idx=1, limit=10)
print(similar.head())
# Search using multiple indices
similar = exp.get_similar(idx=[1, 10], limit=10)
print(similar.head())
์ ์ฌํ ์ด๋ฏธ์ง ํ๋กํ
์ ์ฌํ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์ฌ ํ๋กํ
ํ ์๋ ์์ต๋๋ค. plot_similar
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ๋ฉ์๋๋ ๋ค์๊ณผ ๋์ผํ ์ธ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. get_similar
๋ฅผ ํด๋ฆญํ๊ณ ์ ์ฌํ ์ด๋ฏธ์ง๋ฅผ ๊ทธ๋ฆฌ๋์ ํ์ํฉ๋๋ค.
์ ์ฌํ ์ด๋ฏธ์ง ํ๋กํ
2. AI์๊ฒ ์ง๋ฌธ(์์ฐ์ด ์ฟผ๋ฆฌ)
์ด๋ฅผ ํตํด ์์ฐ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์งํฉ์ ํํฐ๋งํ๋ ๋ฐฉ๋ฒ์ ์์ฑํ ์ ์์ต๋๋ค. SQL ์ฟผ๋ฆฌ ์์ฑ์ ๋ฅ์ํ ํ์๋ ์์ต๋๋ค. AI ๊ธฐ๋ฐ ์ฟผ๋ฆฌ ์์ฑ๊ธฐ๊ฐ ์๋์ผ๋ก ์ฒ๋ฆฌํด ์ค๋๋ค. ์๋ฅผ ๋ค์ด, "์ฌ๋๊ณผ ๊ฐ๊ฐ ์ ํํ ํ ๋ง๋ฆฌ์ฉ ์๋ ์ด๋ฏธ์ง 100์ฅ์ ๋ณด์ฌ์ฃผ์ธ์. ๋ค๋ฅธ ๊ฐ์ฒด๋ ์์ ์ ์์ด"๋ผ๊ณ ๋งํ๋ฉด ๋ด๋ถ์ ์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์ฐธ๊ณ : ์ด ๊ธฐ๋ฅ์ ๋ด๋ถ์ ์ผ๋ก LLM์ ์ฌ์ฉํ์ฌ ์๋ํ๋ฏ๋ก ๊ฒฐ๊ณผ๋ ํ๋ฅ ์ ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋ ์๋ชป๋ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ์ ์์ต๋๋ค.
AI์ ์ง๋ฌธํ๊ธฐ
from ultralytics import Explorer
from ultralytics.data.explorer import plot_query_result
# create an Explorer object
exp = Explorer(data="coco128.yaml", model="yolo11n.pt")
exp.create_embeddings_table()
df = exp.ask_ai("show me 100 images with exactly one person and 2 dogs. There can be other objects too")
print(df.head())
# plot the results
plt = plot_query_result(df)
plt.show()
3. SQL ์ฟผ๋ฆฌ
๋ค์์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์งํฉ์์ SQL ์ฟผ๋ฆฌ๋ฅผ ์คํํ ์ ์์ต๋๋ค. sql_query
๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค. ์ด ๋ฉ์๋๋ SQL ์ฟผ๋ฆฌ๋ฅผ ์
๋ ฅ์ผ๋ก ๋ฐ์ ๊ฒฐ๊ณผ์ ํจ๊ป ํ๋ค์ค ๋ฐ์ดํฐ ํ๋ ์์ ๋ฐํํฉ๋๋ค.
SQL ์ฟผ๋ฆฌ
SQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ํ๋กํ
๋ํ ๋ค์์ ์ฌ์ฉํ์ฌ SQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ํ๋กํ
ํ ์๋ ์์ต๋๋ค. plot_sql_query
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ๋ฉ์๋๋ ๋ค์๊ณผ ๋์ผํ ์ธ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. sql_query
๋ฅผ ํด๋ฆญํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๊ทธ๋ฆฌ๋์ ํ์ํฉ๋๋ค.
SQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ํ๋กํ
4. ์๋ฒ ๋ฉ ํ ์ด๋ธ๋ก ์์ ํ๊ธฐ
์๋ฒ ๋ฉ ํ
์ด๋ธ๋ก ์ง์ ์์
ํ ์๋ ์์ต๋๋ค. ์๋ฒ ๋ฉ ํ
์ด๋ธ์ด ์์ฑ๋๋ฉด ์๋ฒ ๋ฉ ํ
์ด๋ธ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. Explorer.table
ํ
ํ์๊ธฐ๋ ๋ค์์์ ์๋ํฉ๋๋ค. LanceDB ํ
์ด๋ธ์ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค. ๋ค์์ ์ฌ์ฉํ์ฌ ์ด ํ
์ด๋ธ์ ์ง์ ์ก์ธ์คํ ์ ์์ต๋๋ค. Explorer.table
๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ , ์ฌ์ ๋ฐ ์ฌํ ํํฐ๋ฅผ ํธ์ ๋ค์ดํ๋ ๋ฑ์ ์์
์ ์ํํฉ๋๋ค.
๋ค์์ ํ๋ก ํ ์ ์๋ ๋ช ๊ฐ์ง ์์์ ๋๋ค:
์์ ์๋ฒ ๋ฉ ๊ฐ์ ธ์ค๊ธฐ
์
์ฌ์ ๋ฐ ์ฌํ ํํฐ๋ฅผ ์ฌ์ฉํ ๊ณ ๊ธ ์ฟผ๋ฆฌ ๊ธฐ๋ฅ
์
๋ฒกํฐ ์ธ๋ฑ์ค ์์ฑ
๋๊ท๋ชจ ๋ฐ์ดํฐ ์งํฉ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ ๋น ๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ์ํด ์ ์ฉ ๋ฒกํฐ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค ์๋ ์์ต๋๋ค. ์ด ์์
์ create_index
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ๋ฒกํฐ ์ธ๋ฑ์ค ์ ํ ๋ฐ ๋งค๊ฐ๋ณ์์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ์์ ํ์ธํ์ธ์. ํฅํ์๋ ํ์๊ธฐ API์์ ์ง์ ๋ฒกํฐ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ์ ์๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์์ ์ ๋๋ค.
5. ์๋ฒ ๋ฉ ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ ๋ฉ ํ ์ด๋ธ์ ์ฌ์ฉํ์ฌ ๋ค์ํ ํ์ ๋ถ์์ ์ํํ ์ ์์ต๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ์์ ๋๋ค:
์ ์ฌ์ฑ ์ง์
Explorer๋ ๋ค์๊ณผ ๊ฐ์ด ์ ๊ณต๋ฉ๋๋ค. similarity_index
์๋ํฉ๋๋ค:
- ๊ฐ ๋ฐ์ดํฐ ํฌ์ธํธ๊ฐ ๋๋จธ์ง ๋ฐ์ดํฐ ์ธํธ์ ์ผ๋ง๋ ์ ์ฌํ์ง ์ถ์ ํฉ๋๋ค.
- ์ผ๋ง๋ ๋ง์ ์ด๋ฏธ์ง ์๋ฒ ๋ฉ์ด ๋ค์๋ณด๋ค ๊ฐ๊น์ด ๊ณณ์ ์๋์ง ๊ณ์ฐํ์ฌ ์ด๋ฅผ ์ํํฉ๋๋ค.
max_dist
๋ฅผ ์์ฑ๋ ์๋ฒ ๋ฉ ๊ณต๊ฐ์ ํ์ฌ ์ด๋ฏธ์ง์ ์ถ๊ฐํฉ๋๋ค.top_k
๋น์ทํ ์ด๋ฏธ์ง๋ฅผ ํ ๋ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๋ค์ ์ด์ด ํฌํจ๋ ํ๋ค ๋ฐ์ดํฐ ํ๋ ์์ ๋ฐํํฉ๋๋ค:
idx
: ๋ฐ์ดํฐ ์ธํธ์ ์ด๋ฏธ์ง ์ธ๋ฑ์คim_file
: ์ด๋ฏธ์ง ํ์ผ ๊ฒฝ๋กcount
: ๋ฐ์ดํฐ ์ธํธ์์ ๋ค์๋ณด๋ค ๊ฐ๊น์ด ์ด๋ฏธ์ง ์max_dist
๋ฅผ ํ์ฌ ์ด๋ฏธ์ง๋กsim_im_files
: ๊ฒฝ๋ก ๋ชฉ๋กcount
์ ์ฌํ ์ด๋ฏธ์ง
ํ
์ฃผ์ด์ง ๋ฐ์ดํฐ ์งํฉ์ ๋ํด ๋ชจ๋ธ๋งํฉ๋๋ค, max_dist
& top_k
๋ก ์ค์ ํ๋ฉด ํ ๋ฒ ์์ฑ๋ ์ ์ฌ๋ ์ธ๋ฑ์ค๊ฐ ์ฌ์ฌ์ฉ๋ฉ๋๋ค. ๋ฐ์ดํฐ ์ธํธ๊ฐ ๋ณ๊ฒฝ๋์๊ฑฐ๋ ๋จ์ํ ์ ์ฌ๋ ์ธ๋ฑ์ค๋ฅผ ๋ค์ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ, ๋ค์๊ณผ ๊ฐ์ด ์ ๋ฌํ ์ ์์ต๋๋ค. force=True
.
์ ์ฌ์ฑ ์ง์
์ ์ฌ์ฑ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ง์ ์กฐ๊ฑด์ ์์ฑํ์ฌ ๋ฐ์ดํฐ ์งํฉ์ ํํฐ๋งํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ธํธ์ ๋ค๋ฅธ ์ด๋ฏธ์ง์ ์ ์ฌํ์ง ์์ ์ด๋ฏธ์ง๋ฅผ ํํฐ๋งํ ์ ์์ต๋๋ค:
์๋ฒ ๋ฉ ๊ณต๊ฐ ์๊ฐํ
์ํ๋ ํ๋กํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ ๋ฉ ๊ณต๊ฐ์ ์๊ฐํํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์์ matplotlib๋ฅผ ์ฌ์ฉํ ๊ฐ๋จํ ์์์ ๋๋ค:
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
# Reduce dimensions using PCA to 3 components for visualization in 3D
pca = PCA(n_components=3)
reduced_data = pca.fit_transform(embeddings)
# Create a 3D scatter plot using Matplotlib Axes3D
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection="3d")
# Scatter plot
ax.scatter(reduced_data[:, 0], reduced_data[:, 1], reduced_data[:, 2], alpha=0.5)
ax.set_title("3D Scatter Plot of Reduced 256-Dimensional Data (PCA)")
ax.set_xlabel("Component 1")
ax.set_ylabel("Component 2")
ax.set_zlabel("Component 3")
plt.show()
ํ์๊ธฐ API๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ง์ ์ด๋ ฅ์ ๋ฐ์ดํฐ ์ธํธ ํ์ ๋ณด๊ณ ์๋ฅผ ๋ง๋ค์ด ๋ณด์ธ์. ์๊ฐ์ ์ป์ผ๋ ค๋ฉด
Ultralytics ํ์๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ถํ ์ฑ
์ต์คํ๋ก๋ฌ API ๊ธฐ๋ฐ GUI ๋ฐ๋ชจ ์ฒดํํ๊ธฐ
๊ณง ์ถ์ ์์
- [ ] ๋ฐ์ดํฐ ์งํฉ์์ ํน์ ๋ ์ด๋ธ์ ๋ณํฉํฉ๋๋ค. ์ - ๋ชจ๋ ๊ฐ์ ธ์ค๊ธฐ
person
๋ผ๋ฒจ๊ณผcar
๋์ ํ๊ฒฝ์ ๋ ์ด๋ธ - [ ] ์ง์ ๋ ์๊ณ๊ฐ๋ณด๋ค ์ ์ฌ๋ ์ง์๊ฐ ๋์ ์ด๋ฏธ์ง๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
- [ ] ํญ๋ชฉ ๋ณํฉ/์ ๊ฑฐ ํ ์ ๋ฐ์ดํฐ ์ธํธ ์๋ ์ ์ง
- [ ] ๊ณ ๊ธ ๋ฐ์ดํฐ ์งํฉ ์๊ฐํ
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
Ultralytics ์ต์คํ๋ก๋ฌ API๋ ์ด๋ค ์ฉ๋๋ก ์ฌ์ฉ๋๋์?
Ultralytics Explorer API๋ ํฌ๊ด์ ์ธ ๋ฐ์ดํฐ ์ธํธ ํ์์ ์ํด ์ค๊ณ๋์์ต๋๋ค. ์ฌ์ฉ์๋ SQL ์ฟผ๋ฆฌ, ๋ฒกํฐ ์ ์ฌ์ฑ ๊ฒ์, ์๋งจํฑ ๊ฒ์์ ์ฌ์ฉํด ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํํฐ๋งํ๊ณ ๊ฒ์ํ ์ ์์ต๋๋ค. ์ด ๊ฐ๋ ฅํ Python API๋ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ด Ultralytics ๋ชจ๋ธ์ ์ฌ์ฉํ๋ ๋ค์ํ ์ปดํจํฐ ๋น์ ์์ ์ ์ด์์ ์ ๋๋ค.
Ultralytics ์ต์คํ๋ก๋ฌ API๋ ์ด๋ป๊ฒ ์ค์นํ๋์?
Ultralytics Explorer API๋ฅผ ์ข ์ ์์์ ํจ๊ป ์ค์นํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค:
์ด๋ ๊ฒ ํ๋ฉด ํ์๊ธฐ API ๊ธฐ๋ฅ์ ํ์ํ ๋ชจ๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋์ผ๋ก ์ค์น๋ฉ๋๋ค. ์ถ๊ฐ ์ค์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ฌธ์์ ์ค์น ์น์ ์ ์ฐธ์กฐํ์ธ์.
์ ์ฌ๋ ๊ฒ์์ Ultralytics ์ต์คํ๋ก๋ฌ API๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์?
Ultralytics Explorer API๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ ๋ฉ ํ ์ด๋ธ์ ์์ฑํ๊ณ ์ ์ฌํ ์ด๋ฏธ์ง๋ฅผ ์ฟผ๋ฆฌํ์ฌ ์ ์ฌ์ฑ ๊ฒ์์ ์ํํ ์ ์์ต๋๋ค. ๋ค์์ ๊ธฐ๋ณธ์ ์ธ ์์์ ๋๋ค:
from ultralytics import Explorer
# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolo11n.pt")
explorer.create_embeddings_table()
# Search for similar images to a given image
similar_images_df = explorer.get_similar(img="path/to/image.jpg")
print(similar_images_df.head())
์์ธํ ๋ด์ฉ์ ์ ์ฌ๋ ๊ฒ์ ์น์ ์ ์ฐธ์กฐํ์ธ์.
Ultralytics Explorer์ ํจ๊ป LanceDB๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ค ์ด์ ์ด ์๋์?
Ultralytics Explorer์์ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉํ๋ LanceDB๋ ํ์ฅ ๊ฐ๋ฅํ ์จ๋์คํฌ ์๋ฒ ๋ฉ ํ ์ด๋ธ์ ์ ๊ณตํฉ๋๋ค. ๋ฐ๋ผ์ COCO์ ๊ฐ์ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ์ ๋ํด ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์์ด ์๋ฒ ๋ฉ์ ์์ฑํ๊ณ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ํ ์ด๋ธ์ ํ ๋ฒ๋ง ์์ฑ๋๊ณ ์ฌ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ํจ์จ์ฑ์ด ํฅ์๋ฉ๋๋ค.
'AI์๊ฒ ์ง๋ฌธ' ๊ธฐ๋ฅ์ Ultralytics ํ์๊ธฐ API์์ ์ด๋ป๊ฒ ์๋ํ๋์?
'AI์ ์ง๋ฌธ' ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์์ฐ์ด ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ํํฐ๋งํ ์ ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ LLM์ ํ์ฉํ์ฌ ์ด๋ฌํ ์ฟผ๋ฆฌ๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ SQL ์ฟผ๋ฆฌ๋ก ๋ณํํฉ๋๋ค. ๋ค์์ ์์์ ๋๋ค:
from ultralytics import Explorer
# Create an Explorer object
explorer = Explorer(data="coco128.yaml", model="yolo11n.pt")
explorer.create_embeddings_table()
# Query with natural language
query_result = explorer.ask_ai("show me 100 images with exactly one person and 2 dogs. There can be other objects too")
print(query_result.head())
๋ ๋ง์ ์์๋ฅผ ๋ณด๋ ค๋ฉด AI์๊ฒ ์ง๋ฌธํ๊ธฐ ์น์ ์ ์ฐธ์กฐํ์ธ์.