这是 Jetson 社区的一个项目,没有其他开发人员的努力是不可能实现的。
数据集
YoloV4
在这个项目的开发过程中,我使用 SSH、SCP 和 VNC Viewer 来控制和从我的 PC 到 Jetson Nano 板的文件传输。您可以使用键盘和鼠标直接从板上控制它,但从我的角度来看,这种方式更不舒服:
对于这个项目,我使用了 Kaggle 的面罩检测数据集,其中包含属于 3 个类别的 853 张图像。每个图像都有一个或多个边界框。
这些课程是:
我建议使用谷歌数据集搜索来查找任何类型的数据集,在这种情况下,这个数据集可能有点小,但我有一个很好的准确度,如果你愿意,你可以用你自己的图像或任何其他数据集把它变大。
Yolo 需要一个特定的符号来训练模型和 .jpg 文件格式,所以首先你必须转到 images 文件夹并运行:
$> sudo apt-get install imagemagick
$> mogrify -format jpg *.png
现在有了 jpg 格式的图像,下一步是将 parse.xml 转换为 yolo 格式并创建 train/test.txt 文件。只需将 xml_to_yolo.py python 脚本放到 annotations 文件夹中并运行它:
$> python3 xml_to_yolo.py
如果您没有任何库,只需使用 pip/pip3 安装它。
之后,您将拥有一个.txt per.xml 文件、train.txt 和 test.txt(这些文件占边界框总数的 90/10)。
所有的 YoloV4 代码都是由AlexeyAB/ darknet 开发的,在那里你可以找到关于如何训练、指标等的优秀文档和示例。
首先,您必须克隆AlexeyAB 存储库
$ git clone https://github.com/AlexeyAB/darknet.git
$ cd darknet
使用以下命令编辑 Makefile:
GPU=1
CUDNN=1
CUDNN_HALF=1
OPENCV=1
AVX=0
OPENMP=1
LIBSO=1
ZED_CAMERA=0
ZED_CAMERA_v2_8=0
......
USE_CPP=0
DEBUG=0
ARCH= -gencode arch=compute_53,code=[sm_53,compute_53]
......
NVCC=/usr/local/cuda/bin/nvcc
并运行 make:
$ make
之后,项目被编译,只需要经过训练的权重来运行它。如果你想要更高的 FPS 性能,我建议使用 Tiny-Yolo。您可以从 AlexeyAB 存储库下载两者:
只运行暗网:
./darknet detector demo cfg/coco.data \
cfg/yolov4-tiny.cfg \
yolov4-tiny.weights \
-c 0
使用-c 0
相机 (V4L2) 设备的方法/dev/video0
。
要训练一个新的 YoloV4-Tiny 模型,只需按照AlexeyAB 的步骤或使用我的文件和.weights。完成 6000 步(2000x3 类)大约需要 20 个小时。
与我的训练一起跑步:
./darknet detector demo cfg/obj.data \
cfg/yolov4-tiny-masks.cfg \
yolov4-tiny-obj_last.weights \
-c 0
为了完成这个项目,我想用这个检测来创建“红绿灯”,这只是一个愚蠢的实验,但可能性是无穷无尽的......
加载模型后,您可以从 darknet_video.py 或 darknet_images.py 运行它,在这种情况下,我使用 darknet_images.pyimport RPi.GPIO as GPIO
并添加了一个 if-else 语句来控制检测并将高低值设置为引脚输出。
如果这个电路有 2 个 LED 和 2 个 PN2222 晶体管,一个用于绿色 LED,另一个用于红色,我创建的电路。
引脚以这种方式映射:
pinGreen = 18 #Green led -> Pin 12 on the board
pinRed = 24 #Red led -> Pin 18 on the board
这是一张有用的图片,可以查看 BCM 地图的工作原理:
现场演示:
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !