рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЬрд╛рдПрдВ

Ultralytics рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдПрдкреАрдЖрдИ

рдкрд░рд┐рдЪрдп

Colab рдореЗрдВ рдЦреЛрд▓реЗрдВ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдПрдкреАрдЖрдИ рдПрдХ рд╣реИ Python рдЕрдкрдиреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИред рдпрд╣ SQL рдХреНрд╡реЗрд░реАрдЬрд╝, рд╡реЗрдХреНрдЯрд░ рд╕рдорд╛рдирддрд╛ рдЦреЛрдЬ рдФрд░ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдкрдХреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдФрд░ рдЦреЛрдЬрдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред



рд╕рддрд░реНрдХрддрд╛: Ultralytics рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдПрдкреАрдЖрдИ рдЕрд╡рд▓реЛрдХрди

рд╕рдВрд╕реНрдерд╛рдкрди

рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдЕрдкрдиреА рдХреБрдЫ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдпреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЗрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдЖрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

pip install ultralytics[explorer]

рдЙрдкрдпреЛрдЧ

from ultralytics import Explorer

# Create an Explorer object
explorer = Explorer(data='coco128.yaml', model='yolov8n.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)

рдиреЛрдЯ

рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдбреЗрдЯрд╛рд╕реЗрдЯ рдФрд░ рдореЙрдбрд▓ рдЬреЛрдбрд╝реА рдХреЗ рд▓рд┐рдП рдПрдореНрдмреЗрдбрд┐рдВрдЧ рддрд╛рд▓рд┐рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИред рдпреЗ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рд▓рд╛рдВрд╕рдбреАрдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдСрди-рдбрд┐рд╕реНрдХ рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдореЗрдореЛрд░реА рд╕реЗ рдмрд╛рд╣рд░ рдЪрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рд╕реАрдУрд╕реАрдУ рдЬреИрд╕реЗ рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдмрдирд╛ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк рдПрдореНрдмреЗрдбрд┐рдВрдЧ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ force=True рддрдХ create_embeddings_table рд╡рд┐рдзрд┐ред

рдЙрдиреНрдирдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕реАрдзреЗ рд▓рд╛рдВрд╕рдбреАрдмреА рддрд╛рд▓рд┐рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдПрдореНрдмреЗрдбрд┐рдВрдЧ рддрд╛рд▓рд┐рдХрд╛ рдЕрдиреБрднрд╛рдЧ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВ

рд╕рдорд╛рдирддрд╛ рдЦреЛрдЬ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдЫрд╡рд┐ рдХреЗ рд╕рдорд╛рди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдПрдХ рддрдХрдиреАрдХ рд╣реИред рдпрд╣ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдХрд┐ рд╕рдорд╛рди рдЫрд╡рд┐рдпреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдПрдореНрдмреЗрдбрд┐рдВрдЧ рд╣реЛрдЧреАред рдПрдХ рдмрд╛рд░ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдЯреЗрдмрд▓ рдмрди рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рддрд░реАрдХреЗ рд╕реЗ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рдЦреЛрдЬ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:

  • рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рджрд┐рдП рдЧрдП рд╕реВрдЪрдХрд╛рдВрдХ рдпрд╛ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреА рд╕реВрдЪреА рдкрд░: 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='yolov8n.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='yolov8n.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 рдФрд░ рдПрдХ рдЧреНрд░рд┐рдб рдореЗрдВ рд╕рдорд╛рди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкреНрд▓реЙрдЯ рдХрд░рддрд╛ рд╣реИред

рд╕рдорд╛рди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкреНрд▓реЙрдЯ рдХрд░рдирд╛

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data='coco128.yaml', model='yolov8n.pt')
exp.create_embeddings_table()

plt = exp.plot_similar(img='https://ultralytics.com/images/bus.jpg', limit=10)
plt.show()
from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data='coco128.yaml', model='yolov8n.pt')
exp.create_embeddings_table()

plt = exp.plot_similar(idx=1, limit=10)
plt.show()

2. рдПрдЖрдИ рд╕реЗ рдкреВрдЫреЗрдВ (рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдкреВрдЫрддрд╛рдЫ)

рдпрд╣ рдЖрдкрдХреЛ рдпрд╣ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рдХреИрд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрдкрдХреЛ SQL рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдХреБрд╢рд▓ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░рд╛ рдПрдЖрдИ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХреНрд╡реЗрд░реА рдЬрдирд░реЗрдЯрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдРрд╕рд╛ рдХрд░реЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП - рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ - "рдореБрдЭреЗ рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдФрд░ 2 рдХреБрддреНрддреЛрдВ рдХреЗ рд╕рд╛рде 100 рдЪрд┐рддреНрд░ рджрд┐рдЦрд╛рдПрдВред рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ" рдФрд░ рдпрд╣ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреНрд╡реЗрд░реА рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ рдЙрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджрд┐рдЦрд╛рдПрдЧрд╛ред рдиреЛрдЯ: рдпрд╣ рд╣реБрдб рдХреЗ рдиреАрдЪреЗ рдПрд▓рдПрд▓рдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рд╕рдВрднрд╛рд╡реНрдп рд╣реИрдВ рдФрд░ рдХрднреА-рдХрднреА рдЪреАрдЬреЗрдВ рдЧрд▓рдд рд╣реЛ рд╕рдХрддреА рд╣реИрдВ

рдПрдЖрдИ рд╕реЗ рдкреВрдЫреЗрдВ

from ultralytics import Explorer
from ultralytics.data.explorer import plot_query_result


# create an Explorer object
exp = Explorer(data='coco128.yaml', model='yolov8n.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 рдХреНрд╡реЗрд░реА

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data='coco128.yaml', model='yolov8n.pt')
exp.create_embeddings_table()

df = exp.sql_query("WHERE labels LIKE '%person%' AND labels LIKE '%dog%'")
print(df.head())

SQL рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдо рдкреНрд▓реЙрдЯрд┐рдВрдЧ

рдЖрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ SQL рдХреНрд╡реЗрд░реА рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рднреА рдкреНрд▓реЙрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ plot_sql_query рд╡рд┐рдзрд┐ред рдпрд╣ рд╡рд┐рдзрд┐ рд╕рдорд╛рди рддрд░реНрдХ рд▓реЗрддреА рд╣реИ sql_query рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЧреНрд░рд┐рдб рдореЗрдВ рдкреНрд▓реЙрдЯ рдХрд░рддрд╛ рд╣реИред

SQL рдХреНрд╡реЗрд░реА рдкрд░рд┐рдгрд╛рдо рдкреНрд▓реЙрдЯрд┐рдВрдЧ

from ultralytics import Explorer

# create an Explorer object
exp = Explorer(data='coco128.yaml', model='yolov8n.pt')
exp.create_embeddings_table()

# plot the SQL Query
exp.plot_sql_query("WHERE labels LIKE '%person%' AND labels LIKE '%dog%' LIMIT 10")

4. рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдЯреЗрдмрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛

рдЖрдк рд╕реАрдзреЗ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдЯреЗрдмрд▓ рдХреЗ рд╕рд╛рде рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдмрд╛рд░ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдЯреЗрдмрд▓ рдмрди рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ Explorer.table

рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓рд╛рдВрд╕рдбреАрдмреА рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рддрд╛рд▓рд┐рдХрд╛рдПрдБред рдЖрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕реАрдзреЗ рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ Explorer.table рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ рдХрдЪреНрдЪреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдЪрд▓рд╛рдПрдВ, рдкреВрд░реНрд╡ рдФрд░ рдмрд╛рдж рдХреЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдЖрджрд┐ рдХреЛ рдиреАрдЪреЗ рдзрдХреЗрд▓реЗрдВред

from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()
table = exp.table

рдпрд╣рд╛рдВ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ рдХрд┐ рдЖрдк рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рдХрдЪреНрдЪреЗ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рдЙрджрд╛рд╣рд░рдг

from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()
table = exp.table

embeddings = table.to_pandas()["vector"]
print(embeddings)

рдкреВрд░реНрд╡ рдФрд░ рдмрд╛рдж рдХреЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд╕рд╛рде рдЙрдиреНрдирдд рдХреНрд╡реЗрд░реА

рдЙрджрд╛рд╣рд░рдг

from ultralytics import Explorer

exp = Explorer(model="yolov8n.pt")
exp.create_embeddings_table()
table = exp.table

# Dummy embedding
embedding = [i for i in range(256)]
rs = table.search(embedding).metric("cosine").where("").limit(10)

рд╡реЗрдХреНрдЯрд░ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдПрдВ

рдмрдбрд╝реЗ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рддреЗрдЬреА рд╕реЗ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд░реНрдкрд┐рдд рд╡реЗрдХреНрдЯрд░ рдЗрдВрдбреЗрдХреНрд╕ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ create_index рд▓рд╛рдВрд╕рдбреАрдмреА рдЯреЗрдмрд▓ рдкрд░ рд╡рд┐рдзрд┐ред

table.create_index(num_partitions=..., num_sub_vectors=...)

рдЙрдкрд▓рдмреНрдз рдкреНрд░рдХрд╛рд░ рд╡реЗрдХреНрдЯрд░ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рд╣рдо рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдПрдкреАрдЖрдИ рд╕реЗ рд╕реАрдзреЗ рд╡реЗрдХреНрдЯрд░ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред

5. рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди

рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЦреЛрдЬрдкреВрд░реНрдг рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдореНрдмреЗрдбрд┐рдВрдЧ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ:

рд╕рдорд╛рдирддрд╛ рд╕реВрдЪрдХрд╛рдВрдХ

рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдПрдХ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ similarity_index рдкрд░рд┐рдЪрд╛рд▓рди:

  • рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╢реЗрд╖ рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рдмрд┐рдВрджреБ рдХрд┐рддрдирд╛ рд╕рдорд╛рди рд╣реИред
  • рдпрд╣ рдЧрд┐рдирддреА рдХрд░рдХреЗ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ рдЫрд╡рд┐ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдХрд░реАрдм рдЭреВрда рдмреЛрд▓рддреЗ рд╣реИрдВ max_dist рдЙрддреНрдкрдиреНрди рдПрдореНрдмреЗрдбрд┐рдВрдЧ рд╕реНрдерд╛рди рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реБрдП top_k рдПрдХ рд╕рдордп рдореЗрдВ рдЗрд╕реА рддрд░рд╣ рдХреА рдЫрд╡рд┐рдпрд╛рдВред

рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЙрд▓рдо рдХреЗ рд╕рд╛рде рдПрдХ рдкрд╛рдВрдбрд╛ рдбреЗрдЯрд╛рдлреНрд░реЗрдо рджреЗрддрд╛ рд╣реИ:

  • idx: рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рдЫрд╡рд┐ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ
  • im_file: рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкрде
  • count: рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬреЛ рдЗрд╕рд╕реЗ рдХрд░реАрдм рд╣реИрдВ max_dist рд╡рд░реНрддрдорд╛рди рдЫрд╡рд┐ рдХреЗ рд▓рд┐рдП
  • sim_im_files: рдкрдереЛрдВ рдХреА рд╕реВрдЪреА count рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЪрд┐рддреНрд░

рдиреЛрдХ

рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП, рдореЙрдбрд▓, max_dist & top_k рдПрдХ рдмрд╛рд░ рдЙрддреНрдкрдиреНрди рд╕рдорд╛рдирддрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХрд╛ рдбреЗрдЯрд╛рд╕реЗрдЯ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рдпрд╛ рдЖрдкрдХреЛ рдмрд╕ рд╕рдорд╛рдирддрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ force=True.

рд╕рдорд╛рдирддрд╛ рд╕реВрдЪрдХрд╛рдВрдХ

from ultralytics import Explorer

exp = Explorer()
exp.create_embeddings_table()

sim_idx = exp.similarity_index()

рдЖрдк рдбреЗрдЯрд╛рд╕реЗрдЯ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдирддрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рдореНрди рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛рд╕реЗрдЯ рдореЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдЫрд╡рд┐ рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВ:

import numpy as np

sim_count = np.array(sim_idx["count"])
sim_idx['im_file'][sim_count > 30]

рдПрдореНрдмреЗрдбрд┐рдВрдЧ рд╕реНрдкреЗрд╕ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ

рдЖрдк рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рдкреНрд▓реЙрдЯрд┐рдВрдЧ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рд╕реНрдкреЗрд╕ рдХреА рдХрд▓реНрдкрдирд╛ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ matplotlib рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

import numpy as np
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 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()

рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рд╕реАрд╡реА рдбреЗрдЯрд╛рд╕реЗрдЯ рдЕрдиреНрд╡реЗрд╖рдг рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рд▓рд┐рдП, рджреЗрдЦреЗрдВ

рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдмрдирд╛рдпрд╛ рдХреНрд╖реБрдзрд╛ Ultralytics рдЦреЛрдЬрдпрд╛рддреНрд░реА

рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдПрдкреАрдЖрдИ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣рдорд╛рд░реЗ рдЬреАрдпреВрдЖрдИ рдбреЗрдореЛ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ

рдЬрд▓реНрджреА рд╣реА рдЖрдЧрдорди

  • [] рдбреЗрдЯрд╛рд╕реЗрдЯ рд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реЗрдмрд▓ рдорд░реНрдЬ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг - рд╕рднреА рдЖрдпрд╛рдд рдХрд░реЗрдВ person COCO рд╕реЗ рд▓реЗрдмрд▓ рдФрд░ car Cityscapes рд╕реЗ рд▓реЗрдмрд▓
  • [] рдЙрди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдЬрд┐рдирдореЗрдВ рджреА рдЧрдИ рд╕реАрдорд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрдЪреНрдЪ рд╕рдорд╛рдирддрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рд╣реИ
  • [ ] рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рд╡рд┐рд▓рдп/рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирдП рдбреЗрдЯрд╛рд╕реЗрдЯ рдмрдиреЗ рд░рд╣реЗрдВ
  • [] рдЙрдиреНрдирдд рдбреЗрдЯрд╛рд╕реЗрдЯ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди


2024-01-07 рдмрдирд╛рдпрд╛ рдЧрдпрд╛, рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ 2024-04-27
рд▓реЗрдЦрдХ: рдЧреНрд▓реЗрди-рдЬреЛрдЪрд░ (8), 0xSynapse (1), рд░рд┐рдЬрд╡рд╛рдирдореБрдирд╡реНрд╡рд░ (2), рдЖрдпреБрд╖рдПрдХреНрд╕реЗрд▓ (2)

рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ