树莓派3B完成ncnn框架测试

1、安装ubuntu-mate

首先准备一张空的SD卡,用来刻录树莓派镜像。
下载树莓派镜像16.04-mate
https://ubuntu-mate.org/download/
mac系统下使用:

diskutil list

查看SD设备

假设设备名称是/dev/disk3,准备写入数据:

unxz ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img.xz
diskutil unmountDisk /dev/disk3
sudo dd bs=4m if=ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img of=/dev/rdisk3

经过一段时间后出现如下:

1192+1 records in
1192+1 records out
5000000000 bytes transferred in 147.366557 secs (29874547 bytes/sec)

说明写入成功
弹出SD卡并插入树莓派的卡槽中:

diskutil unmountDisk /dev/disk3

这里需要注意的是做好的镜像插入树莓派后可能会出现:
Kernel panic VFS。。。。的错误
这个是引导分区发生错误。需要执行下面命令:

sudo fsck -f -v -r /dev/disk3s1

执行此命令后再插入到树莓派中,发现可以正常启动。

正常启动后,按照提示一步步完成树莓派的安装。
接下来,将树莓派的源从默认的改为国内源,修改/etc/apt/sources.list。这里修改之前请备份。修改后的内容如下:

deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main restricted universe multiverse

deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main restricted universe multiverse

deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main restricted universe multiverse

deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main restricted universe multiverse

其实就是将ubuntu默认的源,全部改成国内中科大的源。

然后执行:

sudo apt-get update

2、编译ncnn

在编译安装ncnn之前,需要安装ncnn的依赖库文件:

sudo apt-get install -y gfortran
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev libatlas-base-dev

安装完成后下载安装ncnn源代码:

git clone https://github.com/Tencent/ncnn
cd ncnn

在编译之前,我们希望和示例程序一起编译。需要修改CmakeList.txt文件。去掉下面两段代码前面的#

add_subdirectory(examples)
add_subdirectory(benchmark)

然后开始编译:

mkdir build
cd build
cmake ../
make -j4
make install 

编译完成后。我们会在当前的目录下看到会有:

examples  install   tools

这三个目录。示例程序的可执行文件全部在examples内。ncnn库文件以及头文件全部在install目录下。tools目录下是一些转化工具。

3、测试Yolov2的demo

下载训练好的yolo模型:
https://github.com/eric612/MobileNet-YOLO/tree/master/models/yolov2
这里我们下载:
mobilenet_yolo_deploy_iter_80000.caffemodel mobilenet_yolo_deploy.prototxt
这两个文件。
使用第二步编译好的工具转换成ncnn框架可以使用的文件:

caffe2ncnn mobilenet_yolo_deploy.prototxt mobilenet_yolo_deploy_iter_80000.caffemodel yolov2.param yolov2.bin

这个命令在使用的时候文件的顺序一定不能乱。
一定是下面格式:

caffe2ncnn prototxt文件 caffemodel文件 param文件 bin文件

转换完成后,拷贝yolov2.param yolov2.bin到编译好的examples文件夹下面,执行:

./yolov2 cat.jpeg

我们可以得到如下结果:

以上就是ncnn基于yolo的整个测试过程。
ncnn的使用可以参考:
https://github.com/Tencent/ncnn/wiki/how-to-use-ncnn-with-alexnet

你可能感兴趣的:(深度学习相关)