ResNet50. Своя реализация |
|||||||||||||||||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2019-05-03 08:32 обучение нейронной сети, распознавание образов, алгоритмы машинного обучения Всем привет. Библиотека нейросети описана в моей прошлой статье. Здесь решил показать как можно использовать обученную сеть из TF (Tensorflow) в своем решении, и стоит ли. Под катом сравнение с оригинальной реализацией TF, демо приложение для распознавания картинок, ну и… выводы. Кому интересно, прошу.
Как устроена ResNet можете узнать, например, здесь. Вот так выглядит структура сети в цифрах: По коду получилось не проще и не сложнее чем на питоне. Код C++ для создания сети: ? Полный код доступен здесь Можно поступить проще, загрузить архитектуру сети и веса из файлов, вот так: Сделал приложение для интереса. Скачать можете отсюда. Объем большой из-за весов сети. Исходники там есть, можете использовать для примера. Приложение создано только для статьи, поддерживаться не будет, поэтому не включал в репозиторий проекта. Теперь, что получилось по сравнению с TF. Показания после прогона 100 изображений, в среднем. Машина: i5-2400, GF1050, Win7, MSVC12. Значения результатов распознавания совпадают до 3-го знака. ? Код теста
Для CPU решил не использовать MKL-DNN, сам думал довести: перераспределил память для последовательного чтения, по максимуму загрузил векторные регистры. Возможно надо было приводить к матричному умножению, и/или еще какие хаки. Упирался здесь, по началу было хуже, правильней было бы использовать MKL все таки. На GPU время тратится на копирование памяти из/в память видеокарты, и не все операции выполняются на GPU. Выводы какие можно сделать из всей этой суеты: — не выпендриваться, а использовать известные проверенные решения, дошли до ума уже более-менее вроде. Сидел сам на mxnet когда то, да маялся с нативным использованием, об этом ниже; — не пытаться использовать нативный С интерфейс ML фреймворков. А юзать их на языке, на который ориентировались разработчики, то есть python. Легкий путь использования функционала ML из своего языка, — сделать сервис-процесс на питоне, и по сокету слать ему картинки, получится разделение ответственности и отсутствие тяжелого кода. Все пожалуй. Статья коротенькая получилась, но выводы, думаю, ценны, и относятся не только к ML. Спасибо. PS: если у кого есть желание и силы попытаться все таки догнать до TF, welcome!) Источник: habr.com Комментарии: |
||||||||||||||||