.NET Fest: полная программа конференции на сайте. Присоединяйся к самому большому .NET ивенту
×Закрыть

Поиск в галерее при помощи нейронных сетей под Андроид

Недавно возникла мысль, почему до сих пор в 2018 году в стандартной галерее под Андроид нет поиска по содержимому изображений. В то время в маркете тоже ничего похожего не нашлось.
Поэтому в свободное время для развлечения сделал поиск по галерее.
Может кому-то тоже пригодится.

Приложение сканирует фото локально, без отправки на удаленные сервера, поэтому достаточно большое по размеру (150МБ, т.к. facenet и mobilenet_v2) и ресурсоемкое (начальное сканирование 3к фото может занять несколько часов).

Пока выложена *бета-версия* программы, тестирование проводилось только на нескольких домашних устройствах.
После обкатки сделаю production релиз на Google Play.
Буду благодарен за багрепорты, отзывы и предложения.
Это мой первый проект под Андроид, поэтому не судите строго :)

Исходники пока выкладывать не собирался (но не исключено, если найду время довести до ума, отрефакторить и причесать проект).

play.google.com/...​testing/com.algr.gallerai

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

Всем хорошего дня!

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

прочитал как
Поиск галеры при помощи нейронных сетей под Андроид

поиск по Фрейду при помощи нейронных сетей под Андроид

И насколько аккумулятора хватает? На 1-2 часа.

смотря какого. автомобильного на чуток подольше

Ну от какого мазовского можно и побольше вычислений в смарфон запихнуть. А если дизель-генератор поставить... Уууу.

вот вот. ради андроида фанатты готовы на все

Чукча писатель, комменты не читает, сразу рубит истину? В топике с сырами такое прокатывает лучше.

Поиск в галерее при помощи нейронных сетей под Андроид

Я это как-то так вижу

Які бібліотеки використовували для нейронної мережі? Модель тренована, чи самі тренували?

tensorflow-android, предобученные facenet, mobilenet_v2

а что такое стандартная галлерея в андроид? у меня гугл нексус и там по дефолту google photo — и оно умеет искать по изображениям.
Приложение play.google.com/...​android.apps.photos&hl=ru

Но конечно вся обработка происходит не локально

В Xiaomi тоже в некоторых странах доступен поиск по изображениям, загруженным в облачное хранилище. Но сам пока не пробовал.
Да и грузить 8ГБ фото туда не собираюсь пока.

а у меня наоборот все там — овер 30 ГБ )

большое по размеру (150МБ, т.к. facenet и mobilenet_v2) и ресурсоемкое (начальное сканирование 3к фото может занять несколько часов).

сами же себе и ответили
не факт, что такое вообще примут в гп

Примут. Для этого есть файлы расширения, если вы не в курсе.

Там, вроде, есть еще нюансы, связанные с энергопотреблением фоновых задач.

Согласен, для прошлогодних телефонов пока, может, и тяжеловат.
Но полное сканирование проходит один раз после установки, да и 150МБ уже не такая большая проблема.
С появлением у производителей и в TF под Андроид аппаратной поддержки нейронных сетей все должно стать намного быстрее.
Но ждать еще Н лет, пока это все произойдет, я не хочу.
Лично мне удобно иметь такой поиск в телефоне уже сейчас.

Скільки заряду використовує?

У меня на Xiaomi 4/5 процентов 30% заряда на сканирование 3к файлов. Но проблема небольшая оставить его на ночь на зарядке, чтобы просканировал.

Важно не столько количество файлов, сколько их разрешение.

Это с какой радости. От количества файлов у тебя будет линейная зависимость времени работы твоей проги, от разрешения квадратичная (как минимум).

Потому что фото перед распознаванием даунсемплятся. Распознавать лица и предметы в прыщах непрактично.

А это очень приличная нагрузка на железо — ресемплинг. Часто он занимает съедает больше ресурсов, чем собственно модель нейронки.

Вот почему и сказал, что подобное — это поедатель аккумулятора в первую очередь.
В обычном режиме в смартфоне проц работает хорошо, если на 5% загрузки в среднем и держит только 1 день по сути. Если дашь 100%, то аккумулятор быстро-быстро разрядится. В этом сейчас и есть основная проблема подобного софта в смартфонах.
Ну засунули в них какое-то GPU и многоядерные CPU. А толку, если акки не держат? Да еще и падать будет от перегрева.

А еще добавь некоторую предобработку картинок, чтобы сетки лучше отрабатывали.

Ну, а чуть посложнее сетки и уже GPU по плешку будет загружено даже на Теслах.

До сих пор даже GPS треккер никто не смог написать, не выжирающий акк за несколько часов.

Сорри, не выделил иронию.
Ресемплинг занимает десятки миллисекунд. Предобработка уже уменьшенного изображения — еще меньше. А тот же фейснет отрабатывает за полсекунды. Разница минимум на порядок.

Ну, а чуть посложнее сетки и уже GPU по плешку будет загружено даже на Теслах.

Не нужно мешать в кучу learning и inference.
Мобильные устройства уже вполне в состоянии использовать обученные сети. Да, реалтайм процессинг достаточно больших сетей на них пока невозможен, но оффлайн обработка данных вполне реальна.
Про реальное энергопотребление (а не фантазии на тему) я уже написал выше.
Конечно, с появлением аппаратной поддержки производительность вырастет в десятки раз, а энергопотребление значительно упадет.
Но уже сейчас все не так плохо, как кажется тому, кто ни разу не запускал сети на мобильном устройстве.

Подписаться на комментарии