1、安装opencv
我用的方法与ubuntu下利用源码安装opencv的方式是一样的。
1.1 清除旧版本
首先完全卸载刷机时刷如的自带的opencv旧版本,以便更好地安装opencv3.4.0版本
sudo apt-get purge libopencv*
sudo apt autoremove
sudo apt-get update
1.2 安装cmake以及依赖库
sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev
1.3 安装opencv
OpenCV源码下载官网地址: https://opencv.org.如果下载速度比较慢,csdn等有相关资源下载较快。下载好zip压缩包后执行下面语句解压安装并进行编译
unzip OpenCV-3.4.0.zip
cd opencv3.4.0.
mkdir build
cd build
cmake ..
sudo make -j4
sudo make install
1.4 把opencv的so库加入到环境变量
输入如下命令,在弹出文件的末尾加入/usr/local/lib,保存退出。
#在弹出文件的末尾加入/usr/local/lib
sudo gedit /etc/ld.so.conf.d/opencv.conf
#使配置生效
sudo ldconfig
输入如下命令,在弹出文件的末尾加入PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH,保存退出。
sudo gedit /etc/bash.bashrc #打开/etc/bash.bashrc
更新database
sudo apt-get install mlocate
sudo updatedb
1.5 安装测试
利用以下语句进行安装验证,安装成功的话会输出opencv版本号3.4.0
python -c "import cv2; print(cv2.__version__)"
2、开启小风扇,切换高效工作模式
2.1 开启小风扇
JetPack4.2之前的版本,在/home文件下会有一个 jetson_clocks.sh,通过命令可以直接开启风扇
sudo ~/jetson_clocks.sh
JetPack4.2以后的版本该功能已经集成成为了/usr/bin/jetson_clocks 目录下的一个软件,直接运行就可以启动小风扇了
cd /usr/bin/
sudo su #需要进入root模才能执行后面的命令
./jetson_clocks
2.2 开启高功率模式
Jetson 拥有6个CPU核心和一个GPU,NVIDIA的新的命令工具Nvpmodel,提供了5种模式:
TX2默认采用模式1,即Max-Q模式,此模式下,2块丹佛处理器不工作,4块ARM A57工作,GPU工作频率为0.85Ghz,可以看到该模式是比较均衡/节能的模式。
查看当前的工作模式:
sudo nvpmodel -q verbose
开启最高功耗的模式,即Max-N:
sudo nvpmodel -m 0
3、部署YOLOV3
3.1 CPU模式下
1、下载安装并编译yolov3源码
如果下载速度较慢或者失败,建议用手机开热点下载
git clone https://github.com/pjreddie/darknet yolo3
cd yolo3
make
2、下载预训练模型权重文件
yolov3.weights也可以通过在csdn上搜索相关资源下载,速度较快,大小为248MB,不要下错了,下载完成后发在yolo3目录下面即可
wget https://pjreddie.com/media/files/yolov3.weights
3、运行代码,检测示例图片
代码格式: ./darknet detect .cfg 预训练权重 预测权重
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
代码运行后首先加载网络,然后对/dog.jpg进行就识别检测,结果如下,此时单张处理图片的速度大概为40s,检测精度也很高。
3.2 GPU模式下
1、对yolo3文件夹下面的Makefile文件前几行进行修改
sudo gedit Makefile
修改后前几行如下,然后保存退出
GPU=1
CUDNN=1
OPENCV=1
OPENMP=0
DEBUG=0
2、重新编译
make
3、修改模型超参数
改为GPU模式后还需要对模型的batch size等超参数进行修改,否则TX2的内存将很快被耗尽,造成系统卡顿的现象。因此修改yolov3/cfg/yolov3.cfg
文件,将Training注释掉,改Testing的batch为1,修改后文件的前几行如下所示:
[net]
# Testing
batch=1
subdivisions=1
# Training
# batch=64
# subdivisions=16
4、运行代码,检测示例图片
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
运行结果如下,此时检测单张图片只需要0.6s左右。相较与CPU模式处理速度有了很大的提高。
3.3 使用Tiny YOLOv3预训练模型
cfg文件夹里面包含众多已经训练好的模型, yolov3-tiny便是其中的一个轻量级的网络,相较与yolov3,他的检测速度有了很大的提高,可以跑一看看效果
# 下载权重文件
wget https://pjreddie.com/media/files/yolov3-tiny.weights
# 运行代码,检测示例图片
./darknet detect cfg/yolov3-tiny.cfg yolov3-tiny.weights data/dog.jpg
结果如下,可以看到虽然处理单张图片的速度达到了0.09(有时也能到达0.03),但是其识别的进度下降较大并不理想。
4、调用外接摄像头
在前几步编译的基础上通过以下语句实现yolov2 tiny调用TX2的外接摄像头实现检测:
./darknet detector demo cfg/coco.data cfg/yolov3-tiny.cfg yolov3-tiny.weights -c 1
检测的效果如下图所示,虽然大师兄的帅脸和椅子显示器都检测出来了,FPS只能基本稳定在12左右,键盘,椅子的检测也时好时坏,仍有较大的改进空间。