В 2016 из-за давней мечты о видео-играх и «хайпа» вокруг AI я начал изучать Python.
Computer Science is Fun потому только неделю назад я обучил первую recognition модель, но без использования Python (в computer science много соблазнов). Как и предсказывал Андрей Себрант (Yandex), новая технологическая революция свершилась. Почему? Сделать приложение по распознаванию изображений проще, чем компьютерную игру. Хватит часа или двух.
Я пошел «сложным» путем – не выбирал из четырех уже обученных моделей, а натренировал свою. Библиотека Core ML от Apple позволяет сделать это 6 строчками кода или через графический интерфейс в playgrounds.
Большая часть времени ушла на сбор и фильтрацию данных для обучения, по 70 фотографий собак, котов и людей, но быстро написанный скрипт, сделал этот процесс полуавтоматическим.
Раньше я только читал про machine learning. Когда сам попробовал – столкнулся с тремя ожидаемыми проблемами/выводами:
Эксперимент с распознаванием «котов-людей» натолкнул на мысль, что алгоритм классификации справится со «стилем».
Я выбрал четырех фотографов и около сотни фотографий от каждого. Я не старался тщательно выбирать примеры, а просто скопировал из моей коллекции первую или последнюю сотню изображений Евгения Мохорева и Олега Виденина. Фотографий Максима Шумилина не хватило, потому в выборку попали не только портреты. А вот фотографии Егора Войнова выбраны более тщательно, так как я скачал два раздела, посвященные портрету на его сайте.
Я запустил тренировку алгоритма и в среднем получил 80% точность распознавания(результаты теста во время создания).
Был один странный момент. Я в два раза увеличил количество фотографий Олега Виденина и система обучилась всего на 30%, а точность распознавания снизилась до 20%.
Систему надо было проверить, чтобы хоть как-то избежать предвзятости, я попросил Егора Войнова прислать фотографии, которых нет на сайте. В результате алгоритм подтвердил, что 20 фотография из 26 похожи на то, как снимает портрет Егор Войнов.
Это подтвердило 77% точности распознавания полученные при создании классификатора.
А дальше начинается fun.
Во-первых, систему можно обучить, заново добавив «ошибки» в обучающую выборку. Результаты изменяются, но система не запоминает фотографии, а находит общие признаки для конкретного автора. Некоторые фотографии после «работы над ошибками» система распознала, как фото Егора Войнов, а некоторые нет.
Во-вторых, cистема склонна относить «ню» к фотографиям Евгения Мохорева, потому пишет под редкими «ню» от Олега Виденина, что это фотографии Мохорева. А как только показываешь «одетого Мохорева», система может «увидеть Войнова». А фотографию Егора Войнова распознать как фото Олега Виденина.
Выборка из фотографий Максима Шумилина получилась очень разнородной. Потому маленькие фигурки и портреты с явно выраженной «нерезкостью» система относит к фотографиям Максима.
В-третьих, системе можно дать посмотреть на фото Мастера Йоды.
А еще можно просто что-то быстро сфотографировать и узнать в чьем «стиле» сделана фотография
И вот момент истины. Я загрузил свои портреты, чтобы узнать насколько много во мне Мохорева, Виденина, Войнова и Шумилина.
Черновик приложения PhotoGuru готов. Пока мне кажется, что это забавная игрушка, но я поработаю над дизайном и расширю обучающие выборки.
Словом, надо выбирать фреймворк для дальнейшего изучения ML.
Computer Science is Fun потому только неделю назад я обучил первую recognition модель, но без использования Python (в computer science много соблазнов). Как и предсказывал Андрей Себрант (Yandex), новая технологическая революция свершилась. Почему? Сделать приложение по распознаванию изображений проще, чем компьютерную игру. Хватит часа или двух.
Я пошел «сложным» путем – не выбирал из четырех уже обученных моделей, а натренировал свою. Библиотека Core ML от Apple позволяет сделать это 6 строчками кода или через графический интерфейс в playgrounds.
import CreateMLUI
let builder = MLImageClassifierBuilder()
builder.showInLiveView()
Большая часть времени ушла на сбор и фильтрацию данных для обучения, по 70 фотографий собак, котов и людей, но быстро написанный скрипт, сделал этот процесс полуавтоматическим.
Раньше я только читал про machine learning. Когда сам попробовал – столкнулся с тремя ожидаемыми проблемами/выводами:
- Данные – самая важная часть.
- Удобный интерфейс(CoreML). Все просто работает и не очень хочется лезть в исходный код, чтобы разобраться в деталях. Машинное обучение доступно любому пользователю, но сложные подробности инженеры Apple постарались спрятать.
- Модель это «черный ящик». Я не знаю правил по которым модель считает, что на фотографии два процента «кота».
Эксперимент с распознаванием «котов-людей» натолкнул на мысль, что алгоритм классификации справится со «стилем».
Я выбрал четырех фотографов и около сотни фотографий от каждого. Я не старался тщательно выбирать примеры, а просто скопировал из моей коллекции первую или последнюю сотню изображений Евгения Мохорева и Олега Виденина. Фотографий Максима Шумилина не хватило, потому в выборку попали не только портреты. А вот фотографии Егора Войнова выбраны более тщательно, так как я скачал два раздела, посвященные портрету на его сайте.
Я запустил тренировку алгоритма и в среднем получил 80% точность распознавания(результаты теста во время создания).
Был один странный момент. Я в два раза увеличил количество фотографий Олега Виденина и система обучилась всего на 30%, а точность распознавания снизилась до 20%.
Систему надо было проверить, чтобы хоть как-то избежать предвзятости, я попросил Егора Войнова прислать фотографии, которых нет на сайте. В результате алгоритм подтвердил, что 20 фотография из 26 похожи на то, как снимает портрет Егор Войнов.
Это подтвердило 77% точности распознавания полученные при создании классификатора.
А дальше начинается fun.
Во-первых, систему можно обучить, заново добавив «ошибки» в обучающую выборку. Результаты изменяются, но система не запоминает фотографии, а находит общие признаки для конкретного автора. Некоторые фотографии после «работы над ошибками» система распознала, как фото Егора Войнов, а некоторые нет.
Во-вторых, cистема склонна относить «ню» к фотографиям Евгения Мохорева, потому пишет под редкими «ню» от Олега Виденина, что это фотографии Мохорева. А как только показываешь «одетого Мохорева», система может «увидеть Войнова». А фотографию Егора Войнова распознать как фото Олега Виденина.
Выборка из фотографий Максима Шумилина получилась очень разнородной. Потому маленькие фигурки и портреты с явно выраженной «нерезкостью» система относит к фотографиям Максима.
В-третьих, системе можно дать посмотреть на фото Мастера Йоды.
А еще можно просто что-то быстро сфотографировать и узнать в чьем «стиле» сделана фотография
И вот момент истины. Я загрузил свои портреты, чтобы узнать насколько много во мне Мохорева, Виденина, Войнова и Шумилина.
Черновик приложения PhotoGuru готов. Пока мне кажется, что это забавная игрушка, но я поработаю над дизайном и расширю обучающие выборки.
Словом, надо выбирать фреймворк для дальнейшего изучения ML.