Как распознать человека на фото за 15 минут

Рассказываем, как пользоваться готовыми нейронными сетями из интернета на примере RetinaNet.

Тайная вечеря Леонардо да Винчи после анализа RetinaNet
Тайная вечеря Леонардо да Винчи после анализа RetinaNet

Любой ребенок уже через несколько часов после рождения хорошо отличает лицо матери. Разве не удивительно?

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

В конце вы поймете, что эти слова не так уж и страшны и, возможно, заинтересуетесь изучением искусственного интеллекта.

Всё необходимое будет прямо в браузере. Достаточно иметь аккаунт Google и 15 минут свободного времени.

Шаг 1

Переходим по ссылке в Google Colab и создает новый блокнот: File – New notebook.

Шаг 2

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

!wget https://github.com/OlafenwaMoses/ImageAI/releases/download/1.0/resnet50_coco_best_v2.0.1.h5

Чтобы выполнить код необходимо нажать Run слева от данной строки. И так будем делать после каждого блока кода.

Шаг 3

Еще немного придется попрограммировать. Новый блок кода добавляется кнопкой +Code:

Как распознать человека на фото за 15 минут

Установим библиотеку компьютерного зрения — OpenCV, библиотеку ImageAI, которая позволяет выполнить обнаружение объектов на изображениях, а также библиотеку машинного обучения TensorFlow и нейросетевую библиотеку Keras конкретных версий. Это все нужно, чтобы заработало :)

!pip install --upgrade pip !pip install opencv-python !pip install https://github.com/OlafenwaMoses/ImageAI/releases/download/2.0.2/imageai-2.0.2-py3-none-any.whl !pip install tensorflow==1.12 !pip install keras==2.2.4

Шаг 4

Немного кода на языке Python. Все таки библиотеки надо не только установить, но и подключить:

from imageai.Detection import ObjectDetection from IPython.display import Image import os

Шаг 5

Подгружаем обученную модель RetinaNet. Потерпите, еще немного.

detector = ObjectDetection() detector.setModelTypeAsRetinaNet() detector.setModelPath('resnet50_coco_best_v2.0.1.h5') detector.loadModel()

Шаг 6

Теперь интереснее. Пора загрузить файлы изображений. Это делается в боковом меню блокнота с помощью кнопки Upload.

Как распознать человека на фото за 15 минут

Возьмем для примера вот такое изображение с именем 0.jpg:

0.jpg
0.jpg

Шаг 7

Выполняем распознавание объектов для изображения с именем 0.jpg и сохраняем результат в файл 0_out.jpg. Разумеется, имя вашего изображения может быть какое-угодно:

detector.loadModel() list = detector.detectObjectsFromImage( input_image = '0.jpg', # Задание имени входного файла output_image_path = '0_out.jpg', # Задание имени выходного файла minimum_percentage_probability = 50 # Задание порога отсечения )

Шаг 8

Изображение можно посмотреть в папке проекта, либо вывести на экран в самом блокноте:

Image(filename='0_out.jpg')

Результат

Наша нейросеть легко определила людей, а вот смартфон с вероятностью 53% посчитала стулом :)

0_out.jpg
0_out.jpg

Данная инструкция иллюстрирует основной алгоритм работы с большинством библиотек и теперь вы сможете сами находить интересующие вас нейросети в интернете (например, в телеграм-канале NeuralShit) и пользоваться ими.

Делитесь в комментариях сколько времени у вас ушло на всю работу. Если возникнут сложности, обязательно подскажу.

88
3 комментария

Заголовок звучит будто «Вот скрипт, который 15 минут будет распознавать людей на фото»

2
Ответить

на такой скрипт было бы тоже интересно посмотреть)

1
Ответить

Зачем публиковать заведомо старое решение
Уже более года идет тф2,  а вы предлагает 1.15...  

Ответить