Ultralytics API проводника
Community Note ⚠️
As of ultralytics>=8.3.10
, Ultralytics explorer support has been deprecated. But don't worry! You can now access similar and even enhanced functionality through Ultralytics HUB, our intuitive no-code platform designed to streamline your workflow. With Ultralytics HUB, you can continue exploring, visualizing, and managing your data effortlessly, all without writing a single line of code. Make sure to check it out and take advantage of its powerful features!🚀
Введение
API Explorer - это Python API для исследования твоих наборов данных. Он поддерживает фильтрацию и поиск по твоему набору данных с помощью SQL-запросов, поиск по векторному сходству и семантический поиск.
Смотри: Ultralytics Обзор API Explorer
Установка
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)
Примечание
Embeddings table for a given dataset and model pair is only created once and reused. These use LanceDB under the hood, which scales on-disk, so you can create and reuse embeddings for large datasets like COCO without running out of memory.
Если ты хочешь принудительно обновить таблицу вкраплений, ты можешь передать force=True
на create_embeddings_table
метод.
Ты можешь получить прямой доступ к объекту таблицы LanceDB, чтобы провести расширенный анализ. Подробнее об этом в разделе "Работа с таблицей Embeddings".
1. Поиск сходства
Поиск по сходству - это техника, позволяющая находить похожие изображения на заданную картинку. Она основана на идее, что похожие изображения будут иметь похожие вкрапления. Как только таблица вкраплений будет построена, ты сможешь запустить семантический поиск любым из следующих способов:
- На заданном индексе или списке индексов в наборе данных:
exp.get_similar(idx=[1,10], limit=10)
- На любом изображении или списке изображений, которых нет в наборе данных:
exp.get_similar(img=["path/to/img1", "path/to/img2"], limit=10)
Если входов несколько, то используется совокупность их вкраплений.
Ты получишь фрейм данных pandas с параметром 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. Спроси ИИ (запрос на естественном языке)
Это позволяет тебе написать, как ты хочешь отфильтровать свой набор данных, используя естественный язык. Тебе не нужно разбираться в написании SQL-запросов. Наш генератор запросов на основе искусственного интеллекта автоматически сделает это под капотом. Например, ты можешь сказать: "Покажите мне 100 изображений, на которых есть ровно один человек и 2 собаки. Там могут быть и другие объекты", и он сам сгенерирует запрос и покажет тебе результаты. Примечание: В этой работе используется LLM под капотом, поэтому результаты будут вероятностными и иногда могут ошибаться.
Спроси искусственный интеллект
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-запрос и возвращает pandas dataframe с результатами.
SQL-запрос
Построение графиков результатов SQL-запросов
Ты также можешь построить график результатов SQL-запроса, используя plot_sql_query
метод. Этот метод принимает те же аргументы, что и sql_query
и выстраивает результаты в виде сетки.
Построение графиков результатов SQL-запросов
4. Работа с таблицей вкраплений
Ты также можешь работать с таблицей вкраплений напрямую. Как только таблица вкраплений будет создана, ты сможешь получить к ней доступ с помощью команды Explorer.table
Наконечник
Проводник работает на LanceDB внутренние таблицы. Ты можешь получить доступ к этой таблице напрямую, используя Explorer.table
объект и выполняй необработанные запросы, нажимай пре- и постфильтры и т.д.
Вот несколько примеров того, что ты можешь сделать с помощью стола:
Получи необработанные вкрапления
Пример
Продвинутые запросы с предварительным и последующим фильтрами
Пример
Создай векторный индекс
При использовании больших наборов данных ты также можешь создать специальный векторный индекс для более быстрого выполнения запросов. Это делается с помощью create_index
метод на таблице LanceDB.
Подробнее о доступных векторных индексах типов и параметрах можно узнать здесь В будущем мы добавим поддержку создания векторных индексов прямо из API Explorer.
5. Применение вкраплений
Ты можешь использовать таблицу вкраплений для проведения различных исследовательских анализов. Вот несколько примеров:
Индекс сходства
Explorer поставляется с similarity_index
операция:
- Он пытается оценить, насколько каждая точка данных похожа на остальные.
- Для этого он подсчитывает, сколько вкраплений изображения лежат ближе, чем
max_dist
к текущему изображению в сгенерированном пространстве встраивания, учитываяtop_k
похожие изображения за один раз.
Она возвращает фрейм данных pandas со следующими колонками:
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()
Начни создавать свои собственные отчеты об исследовании наборов данных CV, используя API Explorer. Для вдохновения посмотри
Приложения, созданные с помощью Ultralytics Explorer
Попробуй нашу демонстрацию графического интерфейса на основе API Explorer
Скоро будет
- [ ] Объедини определенные метки из наборов данных. Пример - Импортировать все
person
Этикетки от COCO иcar
Этикетки с городских пейзажей - [ ] Удали изображения, индекс сходства которых выше заданного порога.
- [ ] Автоматическое сохранение новых наборов данных после слияния/удаления записей
- [ ] Расширенные визуализации данных
ВОПРОСЫ И ОТВЕТЫ
Для чего используется API Ultralytics Explorer?
The Ultralytics Explorer API is designed for comprehensive dataset exploration. It allows users to filter and search datasets using SQL queries, vector similarity search, and semantic search. This powerful Python API can handle large datasets, making it ideal for various computer vision tasks using Ultralytics models.
Как установить Ultralytics Explorer API?
Чтобы установить Ultralytics Explorer API вместе с его зависимостями, используй следующую команду:
This will automatically install all necessary external libraries for the Explorer API functionality. For additional setup details, refer to the installation section of our documentation.
Как я могу использовать API Ultralytics Explorer для поиска сходства?
Ты можешь использовать API Ultralytics Explorer для выполнения поиска сходства, создав таблицу вкраплений и запросив ее на предмет похожих изображений. Вот базовый пример:
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())
For more details, please visit the Similarity Search section.
В чем преимущества использования LanceDB с Ultralytics Explorer?
LanceDB, используемая под капотом Ultralytics Explorer, предоставляет масштабируемые таблицы вкраплений на диске. Это гарантирует, что ты сможешь создавать и повторно использовать вкрапления для больших наборов данных, таких как COCO, не исчерпав память. Эти таблицы создаются только один раз и могут быть использованы повторно, что повышает эффективность работы с данными.
Как работает функция Ask AI в Ultralytics Explorer API?
Функция Ask 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())
Больше примеров ты найдешь в разделе Ask AI.