/cv-detect-robot

🔥🔥🔥🔥🔥🔥Docker NVIDIA Docker2 YOLOV5 YOLOX YOLO Deepsort TensorRT ROS Deepstream Jetson Nano TX2 NX for High-performance deployment(高性能部署)

Primary LanguageC++Apache License 2.0Apache-2.0

enter image description here

[中文] | [English]

CDR(cv-detect-robot)项目介绍🔥🔥🔥(工业级视觉算法Jetson侧端优化部署)

CDR项目立项宗旨:高性能视觉检测及其相关算法赋能机器人行业,搭建起技术落地的桥梁。

项目简介:

  • 本项目针对x_86和nvidia-jetson平台,利用tensorRT优化,基于deepstream视频流AI推理框架,搭建了yolov5,yolox和resnet等视觉检测算法,并对每种算法配置了deepsort,DCF和IOU跟踪器。检测及跟踪数据利用共享内存的方式传输。可通过rostopic,python脚本和c++程序三种方式读取实时数据。本项目提供了零基础入门配置及调试教程,也提供了基于x_86平台和nvidia-jetson平台的docker镜像,可省去配置环境的麻烦,一键导入运行。镜像包含yolov5项目源码全套运行环境,yolox项目源码全套运行环境。deepstream全套运行环境和ros操作系统(melodic)。

备注1):本项目已针对ubuntu-x_86平台和nvidia-jetson平台配置了全套docker镜像,无需配置繁杂软件环境,一键导入运行,省时又省力。

备注2):本项目后续将通过腾讯优图的ncnn加速库对华为海思3559、瑞芯微3399pro、勘智K210等国产AI芯片进行视觉算法的侧端优化及部署,敬请期待!!!。

备注3):随着本人及团队的学习成长,该项目会不定期进行维护和更新,由于能力有限,项目中存在错误和不足之处望各位批评指正或在issue中留言。

备注4):为方便大家学习交流,已建立CDR(cv-detect-robot)项目交流微信群,请添加群负责人小郭微信号17370042325,以方便拉您进群。



CDR~全系标配docker镜像之-v4.0版本更新内容如下🔥🔥🔥🔥🔥:

  • CDR中deepstream框架升级到6.0版本(tensorRT 8.0.1)
  • 所有子项目都适配了deepsort跟踪器(IOU,DCF和deepsort三种跟踪器随意切换),且所有子项目的目标跟踪ID都可通过rostopic,python脚本和cpp程序获得。
  • 全系标配docker镜像,项目作者为 CDR项目分别配置了基于x_86平台和nvidia-jetson平台的全套镜像环境,并附带项目镜像操作及各子项目测试教程。
  • CDR镜像内具备pt->wts->trt功能(yolov5)和onnx-trt功能(yolox)。
  • CDR镜像内每个子项目都能具备多流检测,具体操作参考如下链接。
  • CDR镜像内各子项目同时具备视频文件检测、usb摄像头检测及rtsp实时流检测功能。
  • CDR镜像内已配置yolov5项目源码全套运行环境、yolox项目源码全套运行环境、deepstream全套运行环境及ros-melodic全套运行环境,具体环境配置请查阅如下链接:


  • CDR x86 docker镜像和CDR jetson docker镜像环境配置和算法调试极其复杂,耗时巨大,但本着开源共享的精神,项目作者决定供全行业免费使用
    • CDR x86 docker镜像(28G左右)下载链接如下(不限速):

      • 链接:http://112.74.111.51:1212/down/Dcyn8UvJ81Lg 提取码:Z78Din
    • CDR x86 docker镜像dockerhub下载(14.54 GB)命令:

      docker pull gjy123456/cv-detect-robot:CDR-x86-v4.02


    • CDR jetson docker镜像(10G左右)下载链接如下(不限速):

      • 链接:http://112.74.111.51:1212/down/tSpLJEbUHvQC 提取码:nKTzyp
    • CDR jetson docker镜像(4.58G左右)dockerhub下载命令:

      docker pull gjy123456/cv-detect-robot:CDR-jetson-v4.18



!!!若使用docker镜像,本行以下内容只作了解即可,若想从零开始配置环境则可参照以下内容!!!


CDR子项目(一)(yolov5-ros-deepstream)

  • yolov5-ros-deepstream 子项目简介

该项目是将yolov5视觉检测算法与神经网络加速引擎tensorRT结合,并在英伟达的deepstream框架下运行,结合ros1通信机制,将检测数据实时通过ros topic 发布出去。以供基于ROS机器人操作系统的开发人员及相关科研人员使用。

详细教程请进入yolov5-ros-deepstream

最终视频检测效果请进入yolov5-ros-deepstream检测

加入目标跟踪器视频检测效果请进入Jetson NX yolov5-ros-deepstream+目标跟踪

加入目标跟踪器视频检测效果请进入Jetson Nano yolov5-ros-deepstream+目标跟踪

CDR子项目(二)(yolov5-deepstream-python)

  • yolov5-deepstream-python 子项目简介

该项目是将视觉检测算法yolov5与神经网络加速引擎tensorRT结合,利用共享内存技术将检测所得到的数据实时储存到事先定义好的物理内存中(物理地址是唯一的),在同一硬件平台上的任意软件目录中,建立一个读取物理内存的client.py脚本文件(里面只包含一个读取内存的代码段),将指定好的物理内存中的数据读取出来,在读取成功的前提下,可将该代码段插入到任意需要目标检测数据的python项目中,从而使该python项目能顺利获取目标检测数据。

详细教程请进入yolov5-deepstream-python

最终视频检测效果请进入yolov5-deepstream-python检测

加入目标跟踪器视频检测效果请进入Jetson NX yolov5-python-deepstream+目标跟踪器

加入目标跟踪器视频检测效果请进入Jetson Nano yolov5-python-deepstream+目标跟踪器

CDR子项目(三)(yolov5-deepstream-cpp)

  • yolov5-deepstream-cpp 子项目简介

该项目是将视觉检测算法yolov5与神经网络加速引擎tensorRT结合,利用共享内存技术将检测所得到的数据实时储存到事先定义好的物理内存中(物理地址是唯一的),在同一硬件平台上的任意软件目录中,建立一个读取物理内存的yolov5_tensor.cpp文件(里面只包含一个读取内存的代码段),编译后可将指定好的物理内存中的数据读取出来,在读取成功的前提下,可将该代码段插入到任意需要目标检测数据的C++项目中,从而使该C++项目能顺利获取目标检测数据。

详细教程请进入yolov5-deepstream-cpp

最终视频检测效果请进入yolov5-deepstream-cpp检测

加入目标跟踪器视频检测效果请进入Jetson NX yolov5-cpp-deepstream+目标跟踪器

加入目标跟踪器视频检测效果请进入Jetson Nano yolov5-cpp-deepstream+目标跟踪器

CDR子项目(四)(yolox-ros-deepstream)

  • yolox-ros-deepstream 子项目简介

该项目是将yolox视觉检测算法与神经网络加速引擎tensorRT结合,本子项目采另一种引擎文件生成方法,通过onnx转到engine,此方法更具灵活性,也越来越稳定,符合行业主流发展趋势,在英伟达的deepstream框架下运行,结合ros通信机制,将检测数据实时通过ros topic 发布出去。以供基于ROS机器人操作系统的开发人员及相关科研人员使用。

详细教程请进入yolox-ros-deepstream

最终视频检测效果请进入yolox-ros-deepstream检测

加入目标跟踪器视频检测效果请进入Jetson NX yolox-ros-deepstream+目标跟踪器

加入目标跟踪器视频检测效果请进入Jetson Nano yolox-ros-deepstream+目标跟踪器

CDR子项目(五)(resnet10+ros+deepstream for python )----(Jetson Nano and X_86)

该项目利用deepstream的python接口,基于英伟达针对性优化的resnet10.caffemodel模型,可利用英伟达新推出的(TAO) Toolkit 工具包进行自定义数据集训练及模型优化,并继承CDR项目祖传的ros接口。不仅能在Jetson系列平台使用,通过docker容器技术,也可在Linux-x_86平台(Ubuntu)实现快速部署。经测试,该模型在Jetson Nano上可实现在检测算法和多目标跟踪算法同时加持情况下高达30fps的帧率(检测四种目标),准确率可达90%以上(接近yolov5)。

详细教程请进入resnet10-ros-deepstream

最终视频检测效果请进入resnet10-ros-deepstream检测

加入目标跟踪器视频检测效果请进入Jetson NX resnet10-ros-deepstream+目标跟踪器

加入目标跟踪器视频检测效果请进入Jetson Nano resnet10-ros-deepstream+目标跟踪器

CDR子项目(六)(yolox-deepstream-python)

  • yolox-deepstream-python 子项目简介

该项目是将yolox视觉检测算法与神经网络加速引擎tensorRT结合,本子项目采另一种引擎文件生成方法,通过onnx转到engine,此方法更具灵活性,也越来越稳定,符合行业主流发展趋势,在英伟达的deepstream框架下运行,在同一硬件平台上的任意软件目录中,建立一个读取物理内存的client.py脚本文件(里面只包含一个读取内存的代码段),将指定好的物理内存中的数据读取出来,在读取成功的前提下,可将该代码段插入到任意需要目标检测数据的python项目中,从而使该python项目能顺利获取目标检测数据。

详细教程请进入yolox-deepstream-python

最终视频检测效果请进入yolox-deepstream-python检测

加入目标跟踪器视频检测效果请进入Jetson NX yolox-ros-deepstream+目标跟踪器

加入目标跟踪器视频检测效果请进入Jetson Nano yolox-ros-deepstream+目标跟踪器

CDR子项目(七)(yolox-deepstream-cpp)

  • yolox-deepstream-cpp 子项目简介

该项目是将yolox视觉检测算法与神经网络加速引擎tensorRT结合,本子项目采另一种引擎文件生成方法,通过onnx转到engine,此方法更具灵活性,也越来越稳定,符合行业主流发展趋势,在英伟达的deepstream框架下运行,在同一硬件平台上的任意软件目录中,建立一个读取物理内存的yolox_tensor.cpp文件(里面只包含一个读取内存的代码段),编译后可将指定好的物理内存中的数据读取出来,在读取成功的前提下,可将该代码段插入到任意需要目标检测数据的C++项目中,从而使该C++项目能顺利获取目标检测数据。

详细教程请进入yolox-deepstream-cpp

最终视频检测效果请进入yolox-deepstream-cpp检测

加入目标跟踪器视频检测效果请进入Jetson NX yolox-ros-deepstream+目标跟踪器

加入目标跟踪器视频检测效果请进入Jetson Nano yolox-ros-deepstream+目标跟踪器