Я уже построил в Matlab программу-классификатор изображений для глубокой нейронной сети (дает 1 вывод для каждого примера, например, автомобиль это или нет), используя алгоритмы градиентного спуска и обратного распространения. Это простая сеть с прямой связью, с 1 или 2 скрытыми слоями. Я использую полученные веса в nvcc C ++ для обнаружения объектов в реальном времени.
Результаты обучения NN имеют достаточно хорошую точность (более 99,9%, но недостаточно) и могут обрабатывать более 100 000 файлов изображений размером 32×32. Но единственная проблема с кодом Matlab: он заканчивается локальными минимумами в каждой тренировке, поэтому требует много разных тренировок, но скорость его обучения довольно медленная.
Кроме моего медленно работающего учебного кода Matlab NN, я попробовал:
1) OpenCV 3.0.0, он «вероятно» имеет ошибка в виртуальном режиме с плавающей точкой cv :: ml :: StatModel :: функция прогнозирования на данный момент. Так что я не смог правильно его использовать.
2) попробовал OpenNN с графическим интерфейсом, но он даже застревает во время загрузки и тренировки. Я все еще работаю над тем, чтобы это исправить.
3) Проверено FANN, но мог найти только «один» учебный код, написанный на C ++. Может потребоваться много времени, чтобы освоить это без примеров.
4) Я попробовал Theano на Python несколько месяцев назад, он был довольно настраиваемым и имел довольно много уроков. Но никогда не пробовал тренировать файлы изображений с ним.
5) Я также могу перенести свой код Matlab в nvcc C ++ и попробовать метод сопряженных градиентов для ускорения. Но пока не пробовал, это последний выбор для меня.
Овладение каждым путем может занять довольно много времени, и у меня тоже есть много разных работ. Какой путь мне выбрать, или у вас есть другое предложение? Спасибо
Если у вас есть опыт работы с Matlab, самый простой путь — это изучить «Практические практические применения сверточных нейронных сетей VGG» и использовать их набор инструментов MatConvNet с открытым исходным кодом для Matlab: http://www.vlfeat.org/matconvnet/.