Доброе время суток, форумчане. Часто встречаю на форуме темы о том как найти степень схожести фотографий, как обойти капчу по признаку "Выбери собаку" и т.д. Данная тема обхватывает все аспекты приведенных проблем.
Сегодня я продемонстрирую как не обладая большими знаниями заиметь себе систему которая будет узнавать - что находится на картинке - человек, животное, транспорт. Использовать мы будем библиотеку
tensorflow от google.
Tensorflow - это библиотека машинного обучения от Google. Для многих из вас нейросети это темный лес. Все говорят о них, некоторые используют,другим они не нужны. Не суть. Нам необязательно вникать в суть работы нейросети. Мы будем использовать всю мощность данной системы в своих целях.
Вся система крутится на виртуальной машине. Настроен и запущен Ruby on Rails проект, который слушает входящие соединения. На вход мы отправляем изображение в формате base64 от Зеннопостера. На выходе получаем 5 вариантов ответов того что находится на изображении(количество на выходе вы можете настроить сами). Думаю лучше один раз увидеть нежели зря глагольствовать тут.
Рассмотрим результаты работы системы на нескольких фотографиях.
Посмотреть вложение 20829
Вот результат. Данные идут по убыванию вероятности.
Hare - это заяц. Дальше идут тоже возможные варианты - лесной кролик и т.д.
[
Посмотреть вложение 20828
Куда же без медведя. Проверяем
Посмотреть вложение 20830
Посмотреть вложение 20831
Bear он и в африке bear)
Иногда выдает интересные результаты
Посмотреть вложение 20834
Посмотреть вложение 20833
Газовая маская, плащ...))
Разработчики из гугл большую часть работы взяли на себя и натренировали систему на базе изображений количеством ~1.2 миллионов, а само обучение шло 2 недели!!!
1.2 млн фотографий это не так уж и много. Невозможно обхватить все живое и неживое. Все отрасли нашей жизни. Поэтому мы сделаем свою базу. Но 80 процентов идентификации он выполняет отлично.
Как я говорил выше вся система у нас на образе
Virtualbox.
Систему я поставил Xubuntu чтобы не было особо проблем с настройками.
Все данные и настройки хранятся в папке zenno на рабочем столе /home/user/Рабочий стол/zenno/
Два самых важных файла. Позже мы поймем для чего они нужны. Без них невозможно распознавание образов.
Смотрим дальше. recognises_controller принимает данные от зеннки(в принципе он принимает любой post-запрос). Главное чтобы в post-запросе был параметр image со значением base64 картинки. Код я закоментировал. Ничего сложного.
Запуск сервера осуществляется командной
rails s -b 0.0.0.0 -p 8080, где 8080 это порт на котором будет запускаться сервер.
ЭПИЛОГ
Образ виртуалки я скину после того как мы обговорим и выполним следующий пункт. В принципе я его могу скинуть и сейчас, все работает, только пользы не много будет. На ваше усмотрение.
У нас остался еще один важный момент - это обучение или дообучение системы. Мы можем либо создать свою систему допустим из 5-6 наименований. Например, сделать систему которая будет различать розу,подсолнух, ромашку и т.д друг от друга, либо же добавить в существующую базу гугла Дарта Вейдера.
Если администрация не будет против - завтра будет реализован один из двух пунктов. Спасибо за внимание.
PS. Сделаю видео, в котором все покажу и расскажу