1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/huiwei13-mtcnn_ncnn

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Обновление от 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.

Основные среды:

  • git;
  • cmake;
  • Visual Studio 2015;
  • Android Studio.

Настройка ПК

Настройка ПК для отладки может быть сложной задачей из-за зависимостей библиотек. Библиотека Protobuf используется для сериализации и хранения моделей Caffe, а библиотека OpenCV используется для примера чтения изображений, вы можете настроить её самостоятельно или использовать предварительно скомпилированную библиотеку в папке 3rdparty.

  1. Загрузите исходный код и обновите подмодули. Исходный код Protobuf довольно большой, поэтому обновление может занять некоторое время.
git clone https://github.com/moli232777144/mtcnn_ncnn.git
git submodule update --init
  1. Скомпилируйте Protobuf. Вызовите скрипт tools/protobuf для компиляции:
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/.

  1. Скомпилируйте ncnn. Измените скрипт ncnn.bat в папке tools, заменив параметры DProtobuf на путь к вашей скомпилированной библиотеке Protobuf:
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
  1. Скомпилируйте и отладьте MTCNN. Теперь можно начать преобразование модели MTCNN из формата caffe в формат ncnn. Используйте команду:
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 )

Вы можете оставить комментарий после Вход в систему

Введение

Для некоторых сценариев требуется только обнаружение самого большого отдельного лица. Добавлен интерфейс тестирования для обнаружения самого большого лица человека. Общее колебание скорости для разных сценариев будет больше, но улучшение для сценария с отдельным лицом будет более заметным. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/huiwei13-mtcnn_ncnn.git
git@api.gitlife.ru:oschina-mirror/huiwei13-mtcnn_ncnn.git
oschina-mirror
huiwei13-mtcnn_ncnn
huiwei13-mtcnn_ncnn
master