Giter Site home page Giter Site logo

yolov5_deepsort_rknn's Introduction

Yolov5_DeepSORT_rknn


改动:

本仓库在原仓库的基础上:

  1. 改善了边界框漂移, 完善了当图中没有目标等其他情形出现的bug, 增加了对cost matrix出现nan时的处理
  2. 加入了隔帧检测的功能. 设置方法:

./yolov5/include/detect.h中 将 const int det_interval = 1;改成期望的数值, 例如3, 表示每隔3帧检测一次, 这样可以显著提升速度. 同时, 也需要更改./deepsort/include/deepsort.hline 39const int track_interval = 1; , 数值要和检测的保持一致.

  1. 加入Re-ID多线程的功能

如果您不希望使用多线程, 则在./deepsort/src/deepsort.cppline 144if (numOfDetections < 2) 改成if (true)

自己使用时, 除了更改OpenCV的路径外, 要在./include/common.h中修改IMG_WIDTH, IMG_HEIGHT, IMG_PAD, OBJ_CLASS_NUM./yolov5/src/decode.cpp中修改LABEL_NALE_TXT_PATH.


standard-readme compliant

Yolov5_DeepSORT_rknn是基于瑞芯微Rockchip Neural Network(RKNN)开发的目标跟踪部署仓库,除了DeepSORT还支持SORT算法,可以根据不同的嵌入式平台选择合适的跟踪算法。本仓库中的DeepSORT在Rk3588上测试通过,SORT和ByteTrack应该在Rk3588和Rk3399Pro上都可运行。

下面是我们的演示视频 具有强烈的抖动,进一步提高目标检测模型精度并且在视频无抖动情况下追踪性能应该会很Nice。

   
Detect                            DeepSORT
   
SORT                            Bytetrack

DeepSORT、SORT和ByteTrack已经上线,放在三个分支里!除了这三个算法之外,可能还会更新其他SOTA跟踪算法,多多关注~!

我是野生程序猿,如果在代码编写上存在不规范的情况,请多多见谅。

文档内容

文件目录结构描述

├── Readme.md                   // help
├── data						// 数据
├── model						// 模型
├── build
├── CMakeLists.txt			    // 编译Yolov5_DeepSORT
├── include						// 通用头文件
├── src
├── 3rdparty                    
│   ├── linrknn_api				// rknn   动态链接库
│   ├── rga		                // rga    动态链接库
│   ├── opencv		            // opencv 动态链接库(自行编译并在CmakeLists.txt中设置相应路径)
├── yolov5           			
│   └── include
│       └── decode.h            // 解码
│       └── detect.h            // 推理
│       └── videoio.h           // 视频IO
│   └── src
│       └── decode.cpp    
│       └── ...
├── deepsort
│   └── include
│       └── deepsort.h     		// class DeepSort
│       └── featuretensor.h     // Reid推理
│       └── ...
│   └── src
│       └── deepsort.cpp
│       └── ...
│   └── CMakeLists.txt			// 编译deepsort子模块

安装及使用

  • RKNN-Toolkit

    这个项目需要使用RKNN-Toolkit2(Rk3588)或者RKNN-Toolkit1(Rk3399Pro),请确保librknnrt.so和rknn_server正常运行。可以先运行瑞芯微仓库中的Demo来测试。

    rknpu2
    https://github.com/rockchip-linux/rknpu2
    
  • opencv的编译安装

    可以选择直接在板子上编译,Rk3588编译速度很快,不到十分钟。 也可以选择交叉编译,我使用的交叉编译工具链:gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu

    注意!!!
    请根据自己的OpenCV路径修改CMakeLists.txt文件
    
    搜索 set(OpenCV_DIR /home/linaro/workspace/opencv/lib/cmake/opencv4)
    将路径替换成你的OpenCVConfig.cmake所在的文件夹
    
    本项目中有两个CMakeLists.txt请同时修改!!!
    
  • DeepSort选用的模型是TorchReID中的osnet_x0_25 ,输入尺寸是256x512

    目前还没有针对于自己的数据集重新训练

    Torchreid
    https://kaiyangzhou.github.io/deep-person-reid/MODEL_ZOO
    
  • 项目编译与运行

    参考Cmake的使用,会在build目录下生成可执行文件。

数据说明

  • 使用的是红外车辆、行人数据集,自行拍摄的,暂时不公开。

  • 测试的视频存在严重的抖动,影响了跟踪性能,不代表DeepSORT的跟踪性能。

性能测试

目前只对模型速度进行了测试,首先送上瑞芯微官方的benchmark

  • 瑞芯微rknn_model_zoo
platform(fps) yolov5s-relu yolov5s-silu yolov5m-relu yolov5m-silu
rk1808 - u8 35.24 26.41 16.27 12.60
rv1109 - u8 19.58 13.33 8.11 5.45
rv1126 - u8 27.54 19.29 11.69 7.86
rk3566 - u8 15.16 10.60 8.65 6.61
rk3588 - u8(single core) 53.73 33.24 22.31 14.74
  • Ours

    DeepSORT的ReID网络单次推理耗时约3ms,但是由于每个检测框都需要推理一次网络故受目标个数影响很大。SORT和ByteTrack由于没有ReID网络,在目标不是很多的情况下跟踪时间约等于目标检测,但是ID切换现象会更明显更严重一些。

platform(ms) yolov5s-relu yolov5s-relu+Deepsort yolov5s-relu+Sort yolov5s-relu+ByteTrack
rk3588 - u8(single core) 24 - - -
rk3588 - u8(double core) 12 33.24(infulenced) 12 12
rk3399Pro - u8(single core) - - - -

参考仓库

本项目参考了大量前人的优秀工作,在最后放上一些有用的仓库链接。

  1. https://github.com/ultralytics/yolov5
  2. https://github.com/airockchip/rknn_model_zoo
  3. https://github.com/airockchip/librga
  4. https://github.com/RichardoMrMu/yolov5-deepsort-tensorrt
  5. https://github.com/KaiyangZhou/deep-person-reid

yolov5_deepsort_rknn's People

Contributors

zhou-sx avatar jackwoo0831 avatar

Stargazers

 avatar KoiBoy avatar  avatar qianfeng avatar  avatar  avatar  avatar  avatar Chenglong Du avatar  avatar yan huang avatar LJY avatar  avatar  avatar  avatar 沧笙踏歌 avatar  avatar  avatar WiCyn avatar Plwy avatar  avatar kobe yang avatar  avatar  avatar  avatar male avatar Flechazo. avatar  avatar Sirius avatar  avatar deep_shf avatar  avatar  avatar Zhou avatar  avatar  avatar  avatar Song Dehao avatar  avatar BigMonster avatar  avatar wu xian avatar  avatar  avatar  avatar wtj avatar Hao Zhong avatar wliang avatar Lewis avatar  avatar  avatar Zhe Lei avatar Crystal avatar CYFS avatar Sebastian avatar Anleeno Xu avatar Ildar Kashaev avatar  avatar 背对疾风吧 avatar  avatar  avatar luzhenyu avatar  avatar  avatar binxu avatar CtrlX avatar coolSeason avatar  avatar  avatar Jeff.zhu avatar  avatar Stephen Huskey avatar  avatar  avatar  avatar  avatar  avatar jiale avatar Jelly Wong avatar upsangel avatar  avatar small bird avatar  avatar  avatar  avatar  avatar Curtis Jiang avatar  avatar  avatar  avatar 可乐甜酒 avatar  avatar kevin_dx avatar  avatar  avatar uyolo avatar xiang song avatar yaphone avatar  avatar Domagoj Poljak avatar

Watchers

ChungTak avatar  avatar king avatar  avatar shuike avatar  avatar

yolov5_deepsort_rknn's Issues

你好老师请教您一个问题

就是我使用自己的yolov5模型进行部署,他的界面会一卡一卡的,而且输出的结果框不正确。还有一个问题是如何使用摄像头进行实时跟踪,用的是ip摄像头,想进行实时处理

opencv库

您好,可以分享一下您编译好的opencv库吗,我尝试了一下老是出各种问题

opencv问题,使用的时候会有报错gstream问题

[ WARN:[email protected]] global /home/rock/opencv-4.6.0/modules/videoio/src/cap_gstreamer.cpp (1374) open OpenCV | GStreamer warning: unable to query duration of stream
[ WARN:[email protected]] global /home/rock/opencv-4.6.0/modules/videoio/src/cap_gstreamer.cpp (1405) open OpenCV | GStreamer warning: Cannot query video position: status=1, value=0, duration=-1
[ WARN:[email protected]] global /home/rock/opencv-4.6.0/modules/videoio/src/cap_gstreamer.cpp (1562) getProperty OpenCV | GStreamer warning: unhandled property: 6

rga 问题

你好,我在运行时遇到错误:

rga_api version:1.8.1
rga im2d: can not get the correct RGA version, please check the driver
rga im2d : rga2 get info failed!

只添加fastreid模型

博主您好,我在尝试使用yolov5和fastreid进行人物识别,主要就行利用fastreid对我特定的人进行识别,想知道怎么在您的工作上进行改动呢,具体流程就是yolo检测到目标后,通过fastreid提取特征,进行特征对比,输出相应结果

得到fastreid模型的特征向量

博主您好,我想问一下您的code里面有图片送入模型后得到的相关特征向量的代码吗,不知道为什么您在getRectsFeature函数中返回的是bool型呢,没有返回feature这个值吗,因为我想要得到feature特征向量,来和库中的特征向量计算其余弦相似度,得到我的结果

rga报错

您好,我运行代码出现Can not get the correct RGA version报错,请问该怎么改呢

段错误问题

您好 我在rk3588板子上跑您的代码,提示段错误。我排查感觉像是resize阶段的错误,请问您遇到过吗?
会报 段错误、munmap_chunk(): invalid pointer 这两个错误。

运行出现Bus error (core dumped)

--------Time cost in assign: 0.00292969
--------Time cost in Detection: 66.531
--------Time cost in Detection: 66.6929
--------Time cost in getRectsFeature: 42.6929
--------Time cost in getRectsFeature: 45.7661
--------Time cost in ReID: 55.106
--------Time cost in update features: 0.0339355
--------Time cost in assign: 0.00292969
--------Time cost in Detection: 68.3511
--------Time cost in Detection: 60.4819
--------Time cost in getRectsFeature: 26.9951
--------Time cost in getRectsFeature: 31.168
--------Time cost in ReID: 41.6841
--------Time cost in update features: 0.0258789
--------Time cost in assign: 0.00317383
Bus error (core dumped)

请问博主的eigen使用的哪个版本的

博主好,非常感谢博主的开源工作,我自己在测试时候碰到eigen的报错:Eigen::internal::plain_array<T, Size, MatrixOrArrayOptions, 16>::plain_array() [with T = float; int Size = 64; int MatrixOrArrayOptions = 1]: Assertion `(internal::UIntPtr(eigen_unaligned_array_assert_workaround_gcc47(array)) & (15)) == 0 && "this assertion is explained here: " "http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html" " **** READ THIS WEB PAGE !!! ****"' failed.

感觉可能跟eigen的版本有关,所以想问下博主使用的eigen是哪个版本的。

boxes' results are wrong

Hey! I canceled bellowed remark codes and opened these model and video to run, but these results are wrong and these boxes' position aren't right. Please tell me if I should modify other codes or other files?

code:
string YOLO_MODEL_PATH = PROJECT_DIR + "/model/best_nofocus_relu.rknn";
string SORT_MODEL_PATH = PROJECT_DIR + "/model/osnet_x0_25_market.rknn";
string VIDEO_PATH = PROJECT_DIR + "/data/DJI_0001_S_cut.mp4";
string VIDEO_SAVEPATH = PROJECT_DIR + "/data/results.mp4";

rga 问题

我在运行时报错,
Bind NPU process on cpu 6
rga_im2d : can not get the correct RGA version, please check the driver
rga_im2d : rga2 get info failed

我运行瑞芯微仓库demo正常

api version : 1.3.0
driver version: 0.7.2
rga_api version : 1.8.1

请问yolov5是哪个版本呀?

博主,特别感谢您辛苦付出作出优秀的开源作品,
请问一下,yolov5是哪个版本呀?网络设计有所改动吗

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.