Jetson TX2(jetpack4.3)安装opencv 3.4.0并部署YOLOV3

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种模式:

Jetson TX2(jetpack4.3)安装opencv 3.4.0并部署YOLOV3_第1张图片

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,检测精度也很高。

Jetson TX2(jetpack4.3)安装opencv 3.4.0并部署YOLOV3_第2张图片

Jetson TX2(jetpack4.3)安装opencv 3.4.0并部署YOLOV3_第3张图片

 

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模式处理速度有了很大的提高。

Jetson TX2(jetpack4.3)安装opencv 3.4.0并部署YOLOV3_第4张图片

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),但是其识别的进度下降较大并不理想。

Jetson TX2(jetpack4.3)安装opencv 3.4.0并部署YOLOV3_第5张图片

Jetson TX2(jetpack4.3)安装opencv 3.4.0并部署YOLOV3_第6张图片

4、调用外接摄像头

在前几步编译的基础上通过以下语句实现yolov2 tiny调用TX2的外接摄像头实现检测:

./darknet detector demo cfg/coco.data cfg/yolov3-tiny.cfg yolov3-tiny.weights -c 1

检测的效果如下图所示,虽然大师兄的帅脸和椅子显示器都检测出来了,FPS只能基本稳定在12左右,键盘,椅子的检测也时好时坏,仍有较大的改进空间。

你可能感兴趣的:(TX2,自动驾驶)