首先准备一张空的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
在编译安装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目录下是一些转化工具。
下载训练好的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