Pull to refresh

Два процента «кота» или кто сфотографировал Мастера Йоду?

Reading time3 min
Views2.9K
В 2016 из-за давней мечты о видео-играх и «хайпа» вокруг AI я начал изучать Python.
Computer Science is Fun потому только неделю назад я обучил первую recognition модель, но без использования Python (в computer science много соблазнов). Как и предсказывал Андрей Себрант (Yandex), новая технологическая революция свершилась. Почему? Сделать приложение по распознаванию изображений проще, чем компьютерную игру. Хватит часа или двух.



Я пошел «сложным» путем – не выбирал из четырех уже обученных моделей, а натренировал свою. Библиотека Core ML от Apple позволяет сделать это 6 строчками кода или через графический интерфейс в playgrounds.

import CreateMLUI
let builder = MLImageClassifierBuilder()
builder.showInLiveView()

Большая часть времени ушла на сбор и фильтрацию данных для обучения, по 70 фотографий собак, котов и людей, но быстро написанный скрипт, сделал этот процесс полуавтоматическим.

Раньше я только читал про machine learning. Когда сам попробовал – столкнулся с тремя ожидаемыми проблемами/выводами:

  1. Данные – самая важная часть.
  2. Удобный интерфейс(CoreML). Все просто работает и не очень хочется лезть в исходный код, чтобы разобраться в деталях. Машинное обучение доступно любому пользователю, но сложные подробности инженеры Apple постарались спрятать.
  3. Модель это «черный ящик». Я не знаю правил по которым модель считает, что на фотографии два процента «кота».

Эксперимент с распознаванием «котов-людей» натолкнул на мысль, что алгоритм классификации справится со «стилем».

Я выбрал четырех фотографов и около сотни фотографий от каждого. Я не старался тщательно выбирать примеры, а просто скопировал из моей коллекции первую или последнюю сотню изображений Евгения Мохорева и Олега Виденина. Фотографий Максима Шумилина не хватило, потому в выборку попали не только портреты. А вот фотографии Егора Войнова выбраны более тщательно, так как я скачал два раздела, посвященные портрету на его сайте.

Я запустил тренировку алгоритма и в среднем получил 80% точность распознавания(результаты теста во время создания).

Был один странный момент. Я в два раза увеличил количество фотографий Олега Виденина и система обучилась всего на 30%, а точность распознавания снизилась до 20%.

Систему надо было проверить, чтобы хоть как-то избежать предвзятости, я попросил Егора Войнова прислать фотографии, которых нет на сайте. В результате алгоритм подтвердил, что 20 фотография из 26 похожи на то, как снимает портрет Егор Войнов.

Это подтвердило 77% точности распознавания полученные при создании классификатора.



А дальше начинается fun.

Во-первых, систему можно обучить, заново добавив «ошибки» в обучающую выборку. Результаты изменяются, но система не запоминает фотографии, а находит общие признаки для конкретного автора. Некоторые фотографии после «работы над ошибками» система распознала, как фото Егора Войнов, а некоторые нет.



Во-вторых, cистема склонна относить «ню» к фотографиям Евгения Мохорева, потому пишет под редкими «ню» от Олега Виденина, что это фотографии Мохорева. А как только показываешь «одетого Мохорева», система может «увидеть Войнова». А фотографию Егора Войнова распознать как фото Олега Виденина.



Выборка из фотографий Максима Шумилина получилась очень разнородной. Потому маленькие фигурки и портреты с явно выраженной «нерезкостью» система относит к фотографиям Максима.



В-третьих, системе можно дать посмотреть на фото Мастера Йоды.


А еще можно просто что-то быстро сфотографировать и узнать в чьем «стиле» сделана фотография


И вот момент истины. Я загрузил свои портреты, чтобы узнать насколько много во мне Мохорева, Виденина, Войнова и Шумилина.



Черновик приложения PhotoGuru готов. Пока мне кажется, что это забавная игрушка, но я поработаю над дизайном и расширю обучающие выборки.

Словом, надо выбирать фреймворк для дальнейшего изучения ML.
Tags:
Hubs:
Total votes 16: ↑16 and ↓0+16
Comments2

Articles