Обновление от 22.05.2018:
Для некоторых сценариев достаточно обнаружить только самое большое человеческое лицо. Был добавлен новый интерфейс для тестирования максимального обнаружения человеческих лиц. В целом, скорость будет колебаться сильнее, но для сценария с одним человеческим лицом улучшение будет более заметным.
Обновление от 16.05.2018:
— Обновлены версии ncnn для Windows и Android.
Обновление от 12.04.2018:
— Последняя версия ncnn — 3.14;
— Добавлен настраиваемый интерфейс параметров и интерфейс, что упрощает тестирование.
Изображение:
Результат работы MTCNN на ARM (1000 тестов изображения размером 640x480, минимальное человеческое лицо, три слоя сети, пороги {0.8, 0.8, 0.6}).
Qualcomm Snapdragon 625 | Макс | Мин | Средн |
---|---|---|---|
Однопоточный | 174,95 мс | 144,18 мс | 153,49 мс |
Двухпоточный | 289,58 мс | 89,07 мс | 97,25 мс |
Четырёхпоточный | 269,85 мс | 64,10 мс | 70,94 мс |
Восьмипоточный | 323,93 мс | 53,63 мс | 65,67 мс |
Примечание: в скорости тестирования есть определённые колебания, ошибки приветствуются в разделе «Проблемы».
Обновление от 06.03.2018:
MTCNN_AS обновлён до последней версии ncnn 1.29.
Изображение:
Результаты тестирования MTCNN на ARM (1000 тестов изображения 640x480, минимальное человеческое лицо, трёхслойная сеть, пороги {0,8, 0,8, 0,6}).
Qualcomm Snapdragon 625 | Макс | Мин | Средн |
---|---|---|---|
Однопоточный | 157,65 мс | 137,11 мс | 144,90 мс |
Двухпоточный | 101,68 мс | 83,29 мс | 87,29 мс |
Четырёхпоточный | 75,21 мс | 59,58 мс | 63,14 мс |
Восьмипоточный | 277,33 мс | 47,83 мс | 54,29 мс |
ncnn — это передовой вычислительный фреймворк для мобильных устройств, открытый компанией Tencent AI в июле. Он был открыт несколько месяцев назад и всё ещё является популярным фреймворком (отдаём дань уважения Nihui). Ранее мы уже тестировали его перенос, и на этот раз мы хотим сделать обзор этого фреймворка, основанного на примере обнаружения человеческого лица MTCNN.
Основные среды:
Настройка ПК для отладки может быть сложной задачей из-за зависимостей библиотек. Библиотека Protobuf используется для сериализации и хранения моделей Caffe, а библиотека OpenCV используется для примера чтения изображений, вы можете настроить её самостоятельно или использовать предварительно скомпилированную библиотеку в папке 3rdparty.
git clone https://github.com/moli232777144/mtcnn_ncnn.git
git submodule update --init
cd ../3rdparty/src/protobuf/cmake
mkdir build
cd build
cmake .. -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF -G "Visual Studio 14 2015 Win64"
pause
Откройте файл .sln в папке ./3rdparty/src/protobuf/cmake/build в Visual Studio 2015 и скомпилируйте версии Debug и Release.
Вызовите скрипт tools/copyProtobuf для создания библиотеки зависимостей Protobuf в общей папке 3rdparty/.
cd ../3rdparty/src/ncnn
mkdir build
cd build
cmake .. -G"Visual Studio 14 2015 Win64" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install -DProtobuf_INCLUDE_DIR=F:\mtcnn_ncnn\3rdparty\include -DProtobuf_LIBRARIES=F:\mtcnn_ncnn\3rdparty\lib\libprotobuf.lib -DProtobuf_PROTOC_EXECUTABLE=F:\mtcnn_ncnn\3rdparty\bin\protoc.exe
pause
Запустите скрипт, чтобы создать решение ncnn.sln, скомпилировать версию Release и создать библиотеку ncnn.lib в папке src. Также в папке tools есть инструменты для преобразования caffe и mxnet. Для удобства использования скопируйте файлы в общую папку 3rdparty/:
cd ..
set path=%cd%
copy %path%\3rdparty\src\ncnn\build\tools\caffe\Release\caffe2ncnn.exe %path%\3rdparty\bin\caffe2ncnn.exe
copy %path%\3rdparty\src\ncnn\build\src\Release\ncnn.lib %path%\3rdparty\lib\ncnn.lib
mkdir %path%\3rdparty\include\ncnn
copy %path%\3rdparty\src\ncnn\build\src\layer_type_enum.h %path%\3rdparty\include\ncnn\layer_type_enum.h
copy %path%\3rdparty\src\ncnn\build\src\layer_registry.h %path%\3rdparty\include\ncnn\layer_registry.h
copy %path%\3rdparty\src\ncnn\build\src\layer_declaration.h %path%\3rdparty\include\ncnn\layer_declaration.h
copy %path%\3rdparty\src\ncnn\build\src\platform.h %path%\3rdparty\include\ncnn\platform.h
copy %path%\3rdparty\src\ncnn\src\layer.h %path%\3rdparty\include\ncnn\layer.h
copy %path%\3rdparty\src\ncnn\src\blob.h %path%\3rdparty\include\ncnn\blob.h
copy %path%\3rdparty\src\ncnn\src\cpu.h %path%\3rdparty\include\ncnn\cpu.h
copy %path%\3rdparty\src\ncnn\src\mat.h %path%\3rdparty\include\ncnn\mat.h
copy %path%\3rdparty\src\ncnn\src\net.h %path%\3rdparty\include\ncnn\net.h
copy %path%\3rdparty\src\ncnn\src\opencv.h %path%\3rdparty\include\ncnn\opencv.h
copy %path%\3rdparty\src\ncnn\src\paramdict.h %path%\3rdparty\include\ncnn\paramdict.h
copy %path%\3rdparty\src\ncnn\src\modelbin.h %path%\3rdparty\include\ncnn\modelbin.h
pause
caffe2ncnn.exe xx.prototxt xx.caffemodel xx.param xx.bin
Запустите mtcnn2ncnn.bat, чтобы преобразовать все модели в каталоге mtcnn/model в формат ncnn (если в проекте есть старые prototxt, используйте upgrade_net_proto_text и upgrade_net_proto_binary из проекта caffe для обновления до новой версии).
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )