Детектирование объектов — нейросетевой подход


Раньше, для детектирования объектов на изображении, применялся метод скользящего окна — когда прямоугольная область определённой ширины и высоты, перемещается («скользит») по изображению:
сканирование изображения скользящим окном
Такой подход очень просто реализуется кодом вида:

# sliding window across the image
for y in range(0, temp_img.shape[0]-img_height, step_y):
	for x in range(0, temp_img.shape[1]-img_width, step_x):
		print('Rect: {} {} {} {}'.format(x, y, x+img_width, y+image_height))
		# test_img = temp_img[y:y+img_height, x:x+img_width]

		# TODO: make prediction here

		color = (0,255,0)
		cv2.rectangle(temp_img, (x, y), (x+img_width, y+img_height), color)
		cv2.imshow('slide', temp_img)
		k = cv2.waitKey(20) & 0xFF

Но теперь, с развитием свёрточных нейронных сетей и глубокого обучения, появились сети, которые на своём выходе дают не только класс объекта, но и ограничивающий объект прямоугольник: x,y,w,h.
Получается действительно очень здорово — всего одно выполнение сети и все объекты на изображении будут найдены и отмечены.

YOLO: You only look once

SSD: Single Shot MultiBox Detector

Примеры работы

UPD 2017-06-06
CS231n Lecture 8 — Localization and Detection

Статьи
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks (PDF)
SSD: Single Shot MultiBox Detector (PDF)
YOLO9000: Better, Faster, Stronger (PDF)

Ссылки
https://pjreddie.com/darknet/yolo/
YOLO — код на [C + CUDA], [Tensorflow]

По теме
Sliding Windows for Object Detection with Python and OpenCV
OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks (PDF)
Нейрореволюция в головах и сёлах
Почему супер-мега-про машинного обучения за 15 минут всё же не стать
Awesome Deep Vision

Нейронная сеть
Нейронная сеть — введение
Принцип обучения многослойной нейронной сети с помощью алгоритма обратного распространения
Пример работы самоорганизующейся инкрементной нейронной сети SOINN


Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Android Arduino Bluetooth CraftDuino DIY IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна конкурс манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение