🚀 Попробуйте Zilliz Cloud, полностью управляемый Milvus, бесплатно — ощутите 10-кратное увеличение производительности! Попробовать сейчас>

milvus-logo
LFAI
  • Home
  • Blog
  • Обнаружение объектов

Обнаружение объектов

  • Scenarios
October 11, 2021
Shiyu Chen

Шиюй Чен, инженер по обработке данных в Zilliz, окончила Университет Сидянь по специальности "Компьютерные науки". С момента прихода в Zilliz она занимается поиском решений для Milvus в различных областях, таких как анализ аудио и видео, поиск формул молекул и т. д., что значительно обогатило сценарии применения сообщества. В настоящее время она занимается поиском новых интересных решений. В свободное время она любит спорт и чтение.

Когда я смотрела фильм "Свободный парень" в прошлые выходные, мне показалось, что я уже где-то видела актера, который играет охранника Бадди, но не могла вспомнить ни одной его работы. Моя голова была забита вопросами "кто этот парень?". Я был уверен, что видел это лицо, и изо всех сил пытался вспомнить его имя. Похожий случай: однажды я увидел, как ведущий актер в видеоролике пьет напиток, который мне раньше очень нравился, но так и не смог вспомнить название бренда.

Ответ был на кончике моего языка, но мой мозг чувствовал себя полностью застрявшим.

Феномен кончика языка (TOT) сводит меня с ума при просмотре фильмов. Если бы только существовала система обратного поиска изображений для видео, которая позволила бы мне находить видео и анализировать его содержание. Раньше я создал систему обратного поиска изображений с помощью Milvus. Учитывая, что анализ видеоконтента чем-то похож на анализ изображений, я решил создать механизм анализа видеоконтента на основе Milvus.

Обнаружение объектов

Обзор

Прежде чем приступить к анализу, необходимо обнаружить объекты на видео. Эффективное и точное обнаружение объектов на видео является основной задачей. Это также важная задача для таких приложений, как автопилот, носимые устройства и IoT.

Сегодня основные модели для обнаружения объектов развиваются от традиционных алгоритмов обработки изображений до глубоких нейронных сетей (DNN), включая R-CNN, FRCNN, SSD и YOLO. Система анализа видео на основе глубокого обучения Milvus, представленная в этой теме, может быстро и интеллектуально обнаруживать объекты.

Реализация

Чтобы обнаружить и распознать объекты на видео, система должна сначала извлечь кадры из видео и обнаружить объекты на изображениях кадров с помощью функции обнаружения объектов, во-вторых, извлечь векторы признаков из обнаруженных объектов и, наконец, проанализировать объект на основе векторов признаков.

  • Извлечение кадров

Анализ видео преобразуется в анализ изображений с помощью извлечения кадров. В настоящее время технология извлечения кадров очень развита. Такие программы, как FFmpeg и OpenCV, поддерживают извлечение кадров через заданные интервалы времени. В этой статье рассказывается о том, как извлекать кадры из видео каждую секунду с помощью OpenCV.

  • Обнаружение объектов

Обнаружение объектов - это поиск объектов в извлеченных кадрах и извлечение скриншотов объектов в соответствии с их положением. Как показано на следующих рисунках, были обнаружены велосипед, собака и автомобиль. В этой теме рассказывается о том, как обнаружить объекты с помощью YOLOv3, который обычно используется для обнаружения объектов.

  • Извлечение признаков

Извлечение признаков - это преобразование неструктурированных данных, которые трудно распознать машинам, в векторы признаков. Например, изображения могут быть преобразованы в многомерные векторы признаков с помощью моделей глубокого обучения. В настоящее время наиболее популярными моделями ИИ для распознавания изображений являются VGG, GNN и ResNet. В этой теме рассказывается о том, как извлекать признаки из обнаруженных объектов с помощью ResNet-50.

  • Векторный анализ

Извлеченные векторы признаков сравниваются с библиотечными векторами, и возвращается информация, соответствующая наиболее похожим векторам. Для больших наборов данных векторов признаков вычисление представляет собой огромную проблему. В этой теме рассказывается о том, как анализировать векторы признаков с помощью Milvus.

Ключевые технологии

OpenCV

Open Source Computer Vision Library (OpenCV) - это кроссплатформенная библиотека компьютерного зрения, которая предоставляет множество универсальных алгоритмов для обработки изображений и компьютерного зрения. OpenCV широко используется в области компьютерного зрения.

В следующем примере показано, как с помощью OpenCV и Python захватить видеокадры через заданные промежутки времени и сохранить их как изображения.

import cv2 
cap = cv2.VideoCapture(file_path)   
framerate = cap.get(cv2.CAP_PROP_FPS)   
allframes = int(cv2.VideoCapture.get(cap, int(cv2.CAP_PROP_FRAME_COUNT)))  
success, image = cap.read() 
cv2.imwrite(file_name, image)

YOLOv3

You Only Look Once, Version 3 (YOLOv3 [5]) - это одноэтапный алгоритм обнаружения объектов, предложенный в последние годы. По сравнению с традиционными алгоритмами обнаружения объектов с той же точностью, YOLOv3 работает в два раза быстрее. YOLOv3, упоминаемый в данной теме, является улучшенной версией PaddlePaddle [6]. Она использует несколько методов оптимизации и отличается более высокой скоростью вывода.

ResNet-50

ResNet [7] - победитель ILSVRC 2015 в области классификации изображений благодаря своей простоте и практичности. Являясь основой многих методов анализа изображений, ResNet оказывается популярной моделью, специализирующейся на обнаружении, сегментации и распознавании изображений.

Milvus

Milvus - это облачная база данных векторов с открытым исходным кодом, созданная для управления векторами встраивания, генерируемыми моделями машинного обучения и нейронными сетями. Она широко используется в таких областях, как компьютерное зрение, обработка естественного языка, вычислительная химия, персонализированные рекомендательные системы и т. д.

Ниже описаны процедуры работы Milvus.

  1. Неструктурированные данные преобразуются в векторы признаков с помощью моделей глубокого обучения и импортируются в Milvus.
  2. Milvus хранит и индексирует векторы признаков.
  3. Milvus возвращает векторы, наиболее похожие на вектор, запрашиваемый пользователем.

Развертывание

Теперь вы имеете некоторое представление о системах видеоанализа на базе Milvus. Система состоит в основном из двух частей, как показано на следующем рисунке.

  • Красные стрелки указывают на процесс импорта данных. Используйте ResNet-50 для извлечения векторов признаков из набора данных изображений и импортируйте векторы признаков в Milvus.

  • Черные стрелки указывают на процесс анализа видео. Во-первых, извлеките кадры из видео и сохраните их как изображения. Во-вторых, обнаруживаем и извлекаем объекты на изображениях с помощью YOLOv3. Затем с помощью ResNet-50 извлекаются векторы признаков из изображений. И наконец, Milvus ищет и возвращает информацию об объектах с соответствующими векторами признаков.

Для получения дополнительной информации см. раздел Milvus Bootcamp: Система обнаружения видеообъектов.

Импорт данных

Процесс импорта данных прост. Преобразуйте данные в 2 048-мерные векторы и импортируйте векторы в Milvus.

vector = image_encoder.execute(filename)
entities = [vector]
collection.insert(data=entities)

Анализ видео

Как было сказано выше, процесс анализа видео включает в себя захват видеокадров, обнаружение объектов в каждом кадре, извлечение векторов из объектов, вычисление сходства векторов с помощью метрики евклидова расстояния (L2) и поиск результатов с помощью Milvus.

images = extract_frame(filename, 1, prefix)   
detector = Detector()   
run(detector, DATA_PATH)       
vectors = get_object_vector(image_encoder, DATA_PATH)
search_params = {"metric_type": "L2", "params": {"nprobe": 10}}
results = collection.search(vectors, param=search_params, limit=10)

Заключение

В настоящее время более 80 % данных являются неструктурированными. С быстрым развитием ИИ появляется все больше моделей глубокого обучения для анализа неструктурированных данных. Такие технологии, как обнаружение объектов и обработка изображений, достигли больших успехов как в научных кругах, так и в промышленности. Благодаря этим технологиям все больше и больше платформ ИИ отвечают практическим требованиям.

Система видеоанализа, рассматриваемая в этой теме, построена на базе Milvus, которая может быстро анализировать видеоконтент.

Являясь векторной базой данных с открытым исходным кодом, Milvus поддерживает векторы признаков, извлеченные с помощью различных моделей глубокого обучения. Интегрированный с такими библиотеками, как Faiss, NMSLIB и Annoy, Milvus предоставляет набор интуитивно понятных API, поддерживающих переключение типов индексов в зависимости от сценария. Кроме того, Milvus поддерживает скалярную фильтрацию, что повышает скорость запоминания и гибкость поиска. Milvus применяется во многих областях, таких как обработка изображений, компьютерное зрение, обработка естественного языка, распознавание речи, рекомендательные системы и поиск новых лекарств.

Ссылки

[1] А. Д. Багданов, Л. Баллан, М. Бертини, А. Дель Бимбо. "Сопоставление и поиск товарных знаков в базах данных спортивного видео". Труды международного семинара по мультимедийному информационному поиску, ACM, 2007. https://www.researchgate.net/publication/210113141_Trademark_matching_and_retrieval_in_sports_video_databases

[2] J. Kleban, X. Xie, W.-Y. Ma. "Пространственная пирамида для обнаружения логотипов в естественных сценах". Международная конференция IEEE, 2008. https://ieeexplore.ieee.org/document/4607625

[3] Р. Бойя, К. Флореа, Л. Флореа, Р. Догару. "Локализация и распознавание логотипов на естественных изображениях с помощью графов гомографических классов". Machine Vision and Applications 27 (2), 2016. https://link.springer.com/article/10.1007/s00138-015-0741-7

[4] R. Boia, C. Florea, L. Florea. "Агломерация эллиптических асифтов в прототипе класса для обнаружения логотипов". BMVC, 2015. http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=5C87F52DE38AB0C90F8340DFEBB841F7?doi=10.1.1.707.9371&rep=rep1&type=pdf

[5] https://arxiv.org/abs/1804.02767

[6] https://paddlepaddle.org.cn/modelbasedetail/yolov3

[7] https://arxiv.org/abs/1512.03385

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

Продолжить чтение