Bootstrap

Jeston nano使用之目标检测

jeston nano介绍:

话不多说,官网介绍详细,这里就不浪费大家时间啦,感兴趣戳这里了解更多。

 jeston nano供电:

Jetson Nano开发板有5种供电方式:

     5V 2A(micro USB)

     5V 3A(GPIO引脚)

     5V 4A(DC接口)

     5V 6A(所有电源IO反向供电)

     POE供电

       5V 2A是受限于USB自身,强烈推荐DC 4A供电,满足Jetson Nano大部分使用场景,同时可带动摄像头,显示屏,USB设备等负载。因为比赛要求不允许外插电源所以我们使用的是英伟达专用DC供电板,提供5V4A电压电流。而且实测跑YOLOv3检测识别物体,有风扇和7寸屏需要供电
CPU占用70%左右,电流大概2.9A,如果USB供电只能最大到2A,无法满足测试条件;如果DC用3A,则电源一直处于满负载状态会出现过热保护,所以我们选择5V4A电源满足我们大部门应用程序测试。

 jeston nano启动:

        烧写完后把SD卡直接插入Jetson Nano,另外我们给Jetson Nano通过HDMI连接显示器、DC电源(跳线帽短接J48)、鼠标、键盘,就可以进入Jetson Nano系统了。        

  jeston nano配置镜像:(以下转载亚博官网)

        Jetson Nano是一款形状和接口类似于树莓派的嵌入式主板,搭载了四核Cortex-A57处理器,GPU则是拥有128个NVIDIA CUDA核心的NVIDIA Maxwell架构显卡,内存为4GB的LPDDR4,存储则为16GB eMMC 5.1,支持4K 60Hz视频解码。

(一)准备安装

1.    电源线(必备)

         Jetson Nano中并不包括电源线,您需要自己配一根,具体的参数是5V⎓2A的MicroUSB电源线。可以使用树莓派电源5V⎓2.5A的MicroUSB线。这里我们选择店里的5V4A DC供电,注意J48需要用跳线帽短接。

2.     SD卡 (必备)

        Jetson Nano要求最低配置16G的SD卡,但是整个系统刷完SD卡就被用了大概13G,后期还要安装TensorFlow等一些机器学习框架,还有可能要安装样本数据,所以16G的卡是不够用的,店里套餐选择32G卡。

        

image.png

         3. 无线网卡 (选配)

       Jetson Nano搭载了千兆以太网卡,但是需要接键盘和鼠标网线很麻烦,

所以建议可以买个PCI无线网卡(店里套餐推荐)或者USB无线网卡(多占用一个USB口)。

(二)刷系统

Jetson Nano刷系统的方式与Jetson家族的TX系列不一样,直接把镜像写入SD文件即可。

1.    下载镜像

英伟达官方地址

Jetson Download Center | NVIDIA Developer

image.png

2 . 格式化SD卡    

使用SD Card Formatter格式化SD卡

image.png

3. 使用Etcher写入镜像,大概30分钟,镜像写入完毕。

也可以用Win32 Diskimg写入镜像

balenaEtcher - Flash OS images to SD cards & USB drives

image.png

注意:下载下来的是压缩文件,必须解压成 img 文件才可以烧录。

image.png

4. 烧写完成后,将SD卡插入Jetson Nano,开机,注意使用DC电源需要短接J48跳线帽,使用microUSb需要拔掉J48跳线帽。

1594895934(1).jpg

5. 完成一些设置,时区,语言,输入法什么的,就不截图了,看见下图,大功告成

image.png

4. Win32 Diskimg写入镜像实例。(推荐使用)

1. 解压下载的系统压缩文件,得到img镜像文件

2. 将SD使用卡托或者读卡器后,连上电脑

3. 解压并运行win32diskimager工具

4. 在软件中选择img(镜像)文件,“Device”下选择SD的盘符,然后选择“Write”
然后就开始安装系统了,根据你的SD速度,安装过程有快有慢。

image.png

5.安装结束后会弹出完成对话框,说明安装就完成了,如果不成功,请关闭防火墙一类的软件,重新插入SD进行安装。请注意安装完,windows系统下看到SD卡的内存大小很小,这是正常现象,因为linux下的磁盘分区win下是看不到的!

至此,Jetson Nano就烧写成功。烧录成功后系统可能会因为无法识别分区而提示格式化分区,此时不要格式化!不要格式化!不要格式化!点击取消,然后弹出内存卡,插入到Jetson Nano上即可开机。

 jeston nano跑yolov4-tiny:

        首先在这里简单介绍一下yolov4-tiny,以及yolov4:  yolov4的训练参数有64363101个,而yolov4-tiny只有5918006个,比yolov4少了十倍。因此yolov4-tiny加载模型的速度上也是更快的。yolov4-tiny实测速度大概在22fps左右,在中等点的显卡上速度差不多能达到几百。就是说,tiny是yolov4的压缩版,主要运行小算力cpu核心版本,在jetso nano 上使用tiny版帧率会比yolov4提升十多倍。总的来说还是推荐使用yolov4-tiny,帧率提升很多,使用感会提升很多。

        其次是在英伟达上搭载yolov4-tiny所需环境:

1.  安装CUDA,OpenCV,cuDNN

配置镜像会安装好这些,具体可自行搜索。

2.  下载

git clone GitHub - AlexeyAB/darknet: YOLOv4 / Scaled-YOLOv4 / YOLO - Neural Networks for Object Detection (Windows and Linux version of Darknet )

3. 配置

cd darknet

sudo vim Makefile   #修改Makefile 

4.  将Makefile的前三行修改一下

GPU=1

CUDNN=1

OPENCV=1

image.png

5.  编译

在darknet路径下编译

make  -j4

6.  放置权重文件

这里直接到.5、常用的库和模型文件yolov4和yolov4-tiny的权重文件,将权重文件yolov4.weights和yolov4-tiny.weights拷贝至darknet目录下

image.png

7.  测试

Yolov4图片的检测

./darknet detect cfg/yolov4.cfg yolov4.weights data/dog.jpg # 简写版

./darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights data/dog.jpg # 完整版

Yolov4-tiny图片的检测

./darknet detect cfg/yolov4-tiny.cfg yolov4-tiny.weights data/dog.jpg # 简写版

./darknet detector test cfg/coco.data cfg/yolov4-tiny.cfg yolov4-tiny.weights data/dog.jpg # 完整版

# 改变检测阈值

# 默认情况下,YOLO仅显示检测到的置信度为.25或更高的对象。您可以通过将-thresh标志传递给yolo命令来更改此设置。

例如,要显示所有检测,您可以将阈值设置为0.1:

./darknet detect cfg/yolov4-tiny.cfg yolov4-tiny.weights data/dog.jpg -thresh 0.1

image.png

image.png

Yolov4视频的检测(github下来的data里面并没有该视频文件,需要用户自行上传要检测的视频文件到data文件夹下)

./darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights data/123.mp4

Yolov4-tiny视频的检测

Yolov4-tiny视频的检测(github下来的data里面并没有该视频文件,需要用户自行上传要检测的视频文件到data文件夹下)

./darknet detector demo cfg/coco.data cfg/yolov4-tiny.cfg yolov4-tiny.weights data/xxx.mp4 

image.png

Yolov4见下图:

image.png

yolov4-tiny见下图:

image.png

Yolov4摄像头实时检测方法:

./darknet detector demo cfg/coco.data cfg/yolov4.cfg yolov4.weights /dev/video1

 

Yolov4-tiny摄像头实时检测方法:

./darknet detector demo cfg/coco.data cfg/yolov4-tiny.cfg yolov4-tiny.weights /dev/video1

注意video设备选择USB摄像头对应的编号,上方为选择了USB摄像头的编号video1

image.png

image.png

;