Jetson Nano跑通yolov3(二)

前言:

首先试了一下darknet的正式版,但是加载网络到第12层就跑不起来了,毕竟nano只有4G内存。测试了一下yoloV3的tiny版,正式版和tiny版安装的方法都是一样的,只是运行时的配置文件和权重文件不一样。

1.设备已经具备cuda10.0, cudnn7.3.1, opencv3.3:       详细请看TF卡刷机配置

2.下载

git clone https://github.com/pjreddie/darknet.git

3. 配置

cd darknet
sudo gedit Makefile   #修改Makefile

将Makefile的前三行修改一下:

GPU=1
CUDNN=1
OPENCV=1

4.编译

make -j4

5. 下载权重文件,这里直接下载tiny版的权重文件

wget https://pjreddie.com/media/files/yolov3-tiny.weights

6.  测试

第一遍:

测试保存图片出错:Gtk-Message: 11:28:16.261: Failed to load module "canberra-gtk-module"

解决办法:sudo apt install libcanberra-gtk0 libcanberra-gtk-module

第二遍:

scht@scht-desktop:~/darknet$ sudo ./darknet detect cfg/yolov3-tiny.cfg yolov3-tiny.weights data/dog.jpg
layer     filters    size              input                output
    0 conv     16  3 x 3 / 1   416 x 416 x   3   ->   416 x 416 x  16  0.150 BFLOPs
    1 max          2 x 2 / 2   416 x 416 x  16   ->   208 x 208 x  16
    2 conv     32  3 x 3 / 1   208 x 208 x  16   ->   208 x 208 x  32  0.399 BFLOPs
    3 max          2 x 2 / 2   208 x 208 x  32   ->   104 x 104 x  32
    4 conv     64  3 x 3 / 1   104 x 104 x  32   ->   104 x 104 x  64  0.399 BFLOPs
    5 max          2 x 2 / 2   104 x 104 x  64   ->    52 x  52 x  64
    6 conv    128  3 x 3 / 1    52 x  52 x  64   ->    52 x  52 x 128  0.399 BFLOPs
    7 max          2 x 2 / 2    52 x  52 x 128   ->    26 x  26 x 128
    8 conv    256  3 x 3 / 1    26 x  26 x 128   ->    26 x  26 x 256  0.399 BFLOPs
    9 max          2 x 2 / 2    26 x  26 x 256   ->    13 x  13 x 256
   10 conv    512  3 x 3 / 1    13 x  13 x 256   ->    13 x  13 x 512  0.399 BFLOPs
   11 max          2 x 2 / 1    13 x  13 x 512   ->    13 x  13 x 512
   12 conv   1024  3 x 3 / 1    13 x  13 x 512   ->    13 x  13 x1024  1.595 BFLOPs
   13 conv    256  1 x 1 / 1    13 x  13 x1024   ->    13 x  13 x 256  0.089 BFLOPs
   14 conv    512  3 x 3 / 1    13 x  13 x 256   ->    13 x  13 x 512  0.399 BFLOPs
   15 conv    255  1 x 1 / 1    13 x  13 x 512   ->    13 x  13 x 255  0.044 BFLOPs
   16 yolo
   17 route  13
   18 conv    128  1 x 1 / 1    13 x  13 x 256   ->    13 x  13 x 128  0.011 BFLOPs
   19 upsample            2x    13 x  13 x 128   ->    26 x  26 x 128
   20 route  19 8
   21 conv    256  3 x 3 / 1    26 x  26 x 384   ->    26 x  26 x 256  1.196 BFLOPs
   22 conv    255  1 x 1 / 1    26 x  26 x 256   ->    26 x  26 x 255  0.088 BFLOPs
   23 yolo
Loading weights from yolov3-tiny.weights...Done!
data/dog.jpg: Predicted in 0.167581 seconds.
dog: 56%
car: 52%
truck: 56%
car: 62%
bicycle: 58%

Jetson Nano跑通yolov3(二)_第1张图片

 7. 资源不够时应对方案:增加虚拟内存swap

Nano的内存还是太小了,有时候需要swap扩一下内存,重启后,swap空间自动回收。我们当然不希望swap空间被自动回收,所以下面给出我的整个操作过程:

博主买的是32G TF卡,所以就把swap空间创建到TF卡上root账户下,创建swap空间前:已使用12G(刷系统,cuda、cudnn、opencv、tensorRT等)

Jetson Nano跑通yolov3(二)_第2张图片

  •  创建过程:
——————————————————————————————————————————————————————————————————————————————
1.增加swap空间
# 取得root权限,进入root账户下
sudo -s 

# 进入root文件夹
cd root 

# 创建swap文件夹
sudo mkdir swap

# 进入swap文件夹
cd swap 

# 修改swap 空间的大小为4G
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096
 
# 设置文件为“swap file”类型
sudo mkswap /swapfile
 
# 激活启用swapfile
sudo swapon /swapfile
——————————————————————————————————————————————————————————————————————————————
2.修改永久保存swap空间
# 编辑 /etc/fstab 文件
sudo gedit /etc/fstab

# 将swapfile文件的路径写入到fstab文件的最后一行
# swapfilepath swap swap defaults 0 0

# 查看自己添加的swapfile路径
swapon -s

# 我的swapfile文件的路径是:./swapfile 故如下这样写
./swapfile swap swap defaults 0 0
——————————————————————————————————————————————————————————————————————————————
3.删除虚拟内存
sudo -s
cd /root/swap/
sudo swapoff /swapfile  # 禁用swapfile文件
——————————————————————————————————————————————————————————————————————————————
  • 增加swap后:root下使用的文件大小从12G变到了16G

Jetson Nano跑通yolov3(二)_第3张图片

8.把ubuntu桌面禁掉、启用 操作:

# ubuntu关闭图形用户界面
sudo systemctl set-default multi-user.target
sudo reboot
 
# ubuntu启用图形用户界面
sudo systemctl set-default graphical.target
sudo reboot

9.功耗设置:

  • 全功率模式(买来默认就是全功率,4个cpu核心): 模式 0
  • 半功率模式(2个cpu核心):模式 1
# 设置0模式
nvpmodel -m 0   

# 设置1模式
nvpmodel -m 1   

# 查看当前已被设置的cpu核心个数
cat /proc/cpuinfo | grep Processor | wc -l

参考致谢:https://blog.csdn.net/beckhans/article/details/89373939

你可能感兴趣的:(初学Jetson,Nano)