Обнаружение объектов
Шиюй Чен, инженер по обработке данных в 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.
- Неструктурированные данные преобразуются в векторы признаков с помощью моделей глубокого обучения и импортируются в Milvus.
- Milvus хранит и индексирует векторы признаков.
- 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
- Ключевые технологии
- Развертывание
- Заключение
- Ссылки
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word