NCNN
项目地址:https://github.com/Tencent/ncnn
ubuntu 编译
mkdir -p build
cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=../toolchains/host.gcc.toolchain.cmake -DNCNN_BUILD_EXAMPLES=ON -DNCNN_SHARED_LIB=ON
make -j$(nproc)
make install # 默认是在build/install目录下
编译完会生成这样的文件
后面部署用的就是install中的include和lib文件,但是一般在端侧部署例如android上需要用NDK交叉编译,才能在android上运行。
测试
benchmark
这是测试各模型的推理性能的。
模型测试参数在<ncnn_root>/benchmark下面, 在benchncnn可执行程序中路径是固定的,所以把benchncnn可执行程序放到benchmark目录下面,然后执行benchncnn可执行程序即可。
cd benchmark/
ln -s ../build/benchmark/benchncnn
./benchncnn
benchncnn用法
./benchncnn [loop count] [num threads] [powersave] [gpu device] [cooling down] [(key=value)...]
param=model.param
shape=[227,227,3],..
实际测试结果
loop_count = 4
num_threads = 8
powersave = 2
gpu_device = -1
cooling_down = 1
squeezenet min = 1.64 max = 1.67 avg = 1.65
squeezenet_int8 min = 1.69 max = 1.73 avg = 1.71
mobilenet min = 1.89 max = 1.96 avg = 1.91
mobilenet_int8 min = 1.79 max = 1.81 avg = 1.80
mobilenet_v2 min = 2.04 max = 2.06 avg = 2.05
mobilenet_v3 min = 1.65 max = 1.68 avg = 1.66
shufflenet min = 1.67 max = 1.74 avg = 1.71
shufflenet_v2 min = 1.63 max = 1.67 avg = 1.65
mnasnet min = 1.79 max = 1.84 avg = 1.81
proxylessnasnet min = 2.10 max = 2.13 avg = 2.12
efficientnet_b0 min = 4.31 max = 4.40 avg = 4.35
efficientnetv2_b0 min = 4.36 max = 4.43 avg = 4.39
regnety_400m min = 4.28 max = 4.32 avg = 4.30
blazeface min = 0.54 max = 0.55 avg = 0.54
googlenet min = 7.14 max = 7.24 avg = 7.19
googlenet_int8 min = 5.37 max = 5.42 avg = 5.40
resnet18 min = 5.96 max = 6.73 avg = 6.39
resnet18_int8 min = 4.39 max = 4.47 avg = 4.41
alexnet min = 6.28 max = 6.42 avg = 6.35
vgg16 min = 39.90 max = 40.44 avg = 40.15
vgg16_int8 min = 28.35 max = 28.46 avg = 28.42
resnet50 min = 11.71 max = 11.98 avg = 11.82
resnet50_int8 min = 9.71 max = 9.74 avg = 9.73
squeezenet_ssd min = 6.27 max = 6.54 avg = 6.38
squeezenet_ssd_int8 min = 5.96 max = 6.20 avg = 6.07
mobilenet_ssd min = 4.38 max = 4.43 avg = 4.40
mobilenet_ssd_int8 min = 3.94 max = 3.97 avg = 3.95
mobilenet_yolo min = 12.31 max = 12.86 avg = 12.56
mobilenetv2_yolov3 min = 8.06 max = 8.25 avg = 8.15
yolov4-tiny min = 15.50 max = 15.70 avg = 15.63
nanodet_m min = 3.72 max = 3.77 avg = 3.75
yolo-fastest-1.1 min = 2.07 max = 2.11 avg = 2.09
yolo-fastestv2 min = 1.98 max = 2.04 avg = 2.01
vision_transformer min = 70.04 max = 71.21 avg = 70.80
FastestDet min = 2.09 max = 2.12 avg = 2.10
yolov7
yolov7 ncnn格式的模型下载链接https://github.com/nihui/ncnn-assets/tree/master/models
下载两个文件:
- yolov7-tiny.param
- yolov7-tiny.bin
编译完成后examples的可执行文件在build/examples/, 把模型下载了放到同一个目录,(或者改原来的代码,或者用ln -s 建立软连接都行,只要代码的路径和模型的路径对得上就可以)。
./yolov7 /media/xp/data/image/sample/2.jpeg