NVIDIA Jetson AGX Xavier冰壶的跟踪与识别

NVIDIA Jetson AGX Xavier冰壶的跟踪与识别

  • 一.项目简介
  • 二.硬件平台的选取
    • 2.1为什么选择NVIDIA Jetson AGX Xavier
  • 三.识别环境配置
    • 3.1 下载python 3.6.9
    • 3.2 创建环境
    • 3.3 安装torch, torchvision
      • 3.3.1安装torch
      • 3.3.2 安装torchvision
      • 3.3.3 测试是否安装成功
  • 四.冰壶的跟踪与识别
    • 4.1 yolov5 + deepsort
    • 4.2 tracking环境依赖与运行
    • 4.3 效果展示

一.项目简介

冰壶场地中,一般只有两种颜色的冰壶。使用yolov5+deepsort算法完成冰壶的跟踪与识别。本文将主要介绍硬件选取,软件环境配置,和可能遇到的问题等等。

二.硬件平台的选取

2.1为什么选择NVIDIA Jetson AGX Xavier

NVIDIA Jetson AGX Xavier的GPU有512个核,是Jetson TX2的两倍,并且搭载了深度学习加速器,以及视觉加速器。Xavier的CPU表现也有了提升,从原来的6核提升到了8核,速度变为原来的两倍,Xavier的内存也由原来的8GB提升为16GB。这些提升对于我们的机器人来讲是至关重要的,因为机器人不仅仅需要板载深度学习运算,还需要一些控制算法运行在CPU上面,以及用于通信等,Xavier在这方面的提升进一步提高了我们机器人的性能。

我们的自平衡自行车利用Xavier解决实时跟踪目标人物的问题,之前我们使用TX2,同样的算法Xavier的速度是TX2的两倍多。当然,Xavier还有更大的本领,主要集中在TensorRT的加速上,我们之后也会进一步挖掘Xavier的强大性能,为我们的机器人增加更多需要高性能计算的本领。

非常贴心的一点是,开发和调试深度学习AI应用程序所需的所有工具都包含在NVIDIA的JetPack软件包中,省去了很多配置环境的时间。

除了功能强大外,Xavier的能耗依然保持较低的水平,对于我们的未连接到电网而是使用自身电池并且电能有限的机器人来说,这一点很重要。

Xavier在机器人上的实时表现非常强大,允许快速、独立且准确地在现场处理信息,可以在不连接云的情况下进行简单的学习和快速的神经网络推导,而无需将数据发送回服务器进行处理和返回。
NVIDIA Jetson AGX Xavier冰壶的跟踪与识别_第1张图片

三.识别环境配置

用英伟达SDK刷机
首先是要用英伟达的上位机SDKManager给板卡进行刷机,注意刷机的时候要进入恢复模式。

3.1 下载python 3.6.9

安装不同python版本方法参考如下博客:https://blog.csdn.net/immerseinstudy/article/details/123793720?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166864561916800182711785%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=166864561916800182711785&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-2-123793720-null-null.142v63control,201v3control_1,213v2t3_control2&utm_term=linux%E5%AE%89%E8%A3%85%E4%B8%8D%E5%90%8Cpython&spm=1018.2226.3001.4187

3.2 创建环境

制定版本为python3.6(这个非常重要!)如果安装其他python版本,可以建立软链接:

ln -s /usr/bin/python /usr/local/下载python包/bin

验证python版本是否正确

python -v
tips one:为什么一定是python3.6?
因为在刷机过程中系统安装的cuda10.2只支持python3.6
tips two: 解决”Illegal instruction (core dumped)“错误
tips three: 为什么不用虚拟环境conda?
笔者的跟踪检测代码依赖matplotlib3.2.2无法在虚拟环境创建的python环境下正确运行。如果想创建虚拟环境参考下面博客:[conda虚拟环境创建](https://blog.csdn.net/single_dog/article/details/119741103?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166864596416782414963554%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166864596416782414963554&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-119741103-null-null.142%5Ev63%5Econtrol,201%5Ev3%5Econtrol_1,213%5Ev2%5Et3_control2&utm_term=miniforge&spm=1018.2226.3001.4187)
sudo echo "OPENBLAS_CORETYPE=ARMV8" >> ~/.bashrc # 末尾添加环境变量export OPENBLAS_CORETYPE=ARMV8,保存并关闭文件
source ~/.bashrc # 更新环境变量文件

3.3 安装torch, torchvision

这里一定要注意torch和torchvision之间的版本要相互对应!
yolov5 6.0需要 torch v1.10.0 torchvision 1.11.0

3.3.1安装torch

到官网下载torch1.10.0 官网地址NVIDIA Jetson AGX Xavier冰壶的跟踪与识别_第2张图片
通过下面命令进行安装:

pip install torch-1.10.0-cp36-cp36m-linux_aarch64.whl

3.3.2 安装torchvision

这里注意一定要在官网上下载源码自行编译 pip或者conda命令下载的torchvision无法与arm架构下的pytorch相容。
来到官网找到1.10.0版本的torchvision :https://github.com/pytorch/vision/tags
先安装编译依赖

sudo apt-get install libjpeg-dev libavcodec-dev libavformat-dev libswscale-dev
pip install pillow --no-cache-dir

解压缩到对应文件下:

python setup.py install

3.3.3 测试是否安装成功

import torch
print(torch.cuda.is_available())
print(torch.backends.cudnn.version())
 
import torchvision
print(torchvision.__version__)

四.冰壶的跟踪与识别

4.1 yolov5 + deepsort

YOLOV4出现之后不久,YOLOv5横空出世。YOLOv5在YOLOv4算法的基础上做了进一步的改进,检测性能得到进一步的提升。虽然YOLOv5算法并没有与YOLOv4算法进行性能比较与分析,但是YOLOv5在COCO数据集上面的测试效果还是挺不错的。大家对YOLOv5算法的创新性半信半疑,有的人对其持肯定态度,有的人对其持否定态度。在我看来,YOLOv5检测算法中还是存在很多可以学习的地方,虽然这些改进思路看来比较简单或者创新点不足,但是它们确定可以提升检测算法的性能。其实工业界往往更喜欢使用这些方法,而不是利用一个超级复杂的算法来获得较高的检测精度。

YOLOv5是一种单阶段目标检测算法,该算法在YOLOv4的基础上添加了一些新的改进思路,使其速度与精度都得到了极大的性能提升。主要的改进思路如下所示:

  • 输入端:在模型训练阶段,提出了一些改进思路,主要包括Mosaic数据增强、自适应锚框计算、自适应图片缩放;
  • 基准网络:融合其它检测算法中的一些新思路,主要包括:Focus结构与CSP结构;
  • Neck网络:目标检测网络在BackBone与最后的Head输出层之间往往会插入一些层,Yolov5中添加了FPN+PAN结构;
  • Head输出层:输出层的锚框机制与YOLOv4相同,主要改进的是训练时的损失函数GIOU_Loss,以及预测框筛选的DIOU_nms。

Deepsort是实现目标跟踪的算法,从sort(simple online and realtime tracking)演变而来。其使用卡尔慢滤波器预测所检测对象的运动轨迹,匈牙利算法将它们与新检测的目标匹配。Deepsort易于使用,且速度快,成为AI目标检测跟踪的热门算法。

4.2 tracking环境依赖与运行

环境依赖:

pip install -r requirement.txt
pip install yolov5==6.2.0

运行:

python track

若要修改为自己训练的权重,请在weights目录下放入pt文件,然后使用–weight选项指定权重的相对路径。

4.3 效果展示


项目的github地址如下:https://github.com/tongjiaxuan666/Curling-tracking.git

你可能感兴趣的:(人工智能,python,开发语言)