赞
踩
【官方框架地址】
yolov10yolov10框架:https://github.com/THU-MIG/yolov10
bytetrack框架:https://github.com/ifzhang/ByteTrack
【算法介绍】
Yolov10与ByTetrack:目标追踪的强大组合
Yolov10和ByTetrack是两种在目标追踪领域具有显著影响力的技术。当它们结合使用时,可以显著提高目标追踪的准确性和实时性。
Yolov10是Yolov系列算法的最新版本,它在目标检测方面具有出色的性能。相较于之前的版本,Yolov10在精度和速度上都进行了优化,使其成为实时目标检测的理想选择。通过结合ByTetrack,Yolov10可以更有效地应用于目标追踪任务。
ByTetrack是一种基于轨迹匹配的目标追踪方法。它利用目标的运动信息和外观特征进行追踪,能够在复杂场景下实现稳定的目标追踪。ByTetrack的优势在于其强大的鲁棒性和适应性,即使在目标被遮挡或出现运动模糊的情况下,它仍能保持较高的追踪精度。
当Yolov10与ByTetrack结合使用时,Yolov5首先检测视频中的目标,并生成目标的初始位置和运动轨迹。然后,ByTetrack利用这些信息对目标进行精确追踪。这种结合方式既发挥了Yolov10的高检测精度,又利用了ByTetrack的高追踪精度,使得整体目标追踪效果显著提升。
综上所述,Yolov10与ByTetrack的结合为解决复杂场景下的目标追踪问题提供了新的解决方案。随着人工智能技术的不断进步,这种结合方式有望成为目标追踪领域的研究热点和发展趋势。通过进一步的研究和优化,我们可以期待这种组合在未来的目标追踪任务中发挥更大的潜力。
【效果展示】
【实现部分代码】
- #include "YOlov10Manager.h"
- #include <iostream>
- #include <opencv2/opencv.hpp>
- #include "BYTETracker.h"
- #include <fstream>
- #include <iomanip>
- #include <time.h>
- #include <chrono>
- #include "util.h"
- #include <map>
- #include<vector>
- #include<algorithm>
-
-
-
- using namespace std;
- using namespace cv;
-
-
-
-
- void bytetrack_update(const std::vector<Detection>& res, std::vector<Object>& obj, const int& class_id ){
- for (size_t i = 0; i < res.size(); i++){
- try
- {
- if (res[i].class_id != class_id){ continue; }
- obj[i].label = res[i].class_id;
- obj[i].rect.x = res[i].bbox.x;
- obj[i].rect.y = res[i].bbox.y;
- obj[i].rect.height = res[i].bbox.height;
- obj[i].rect.width = res[i].bbox.width;
- obj[i].prob = res[i].confidence;
- }
- catch(const std::exception& e)
- {
- std::cerr << e.what() << '\n';
- }
- }
-
- };
- int main(int argc, char const *argv[])
- {
-
- std::map<int, std::vector<int>> object_id_list;
- const std::vector<std::string> classNames = util::loadNames("labels.txt");
- const int class_id = 2;//只想追踪的目标
- std::string model_path="yolov10n.onnx";
- Yolov10Manager detector(model_path);
- cv::Mat frame;
- std::vector <double> avg;
- cv::VideoCapture cap("car.mp4");
- std::chrono::time_point<std::chrono::high_resolution_clock>prev_frame_time(std::chrono::high_resolution_clock::now());
- std::chrono::time_point<std::chrono::high_resolution_clock>new_frame_time;
- int frame_width = cap.get(cv::CAP_PROP_FRAME_WIDTH);
- int frame_height = cap.get(cv::CAP_PROP_FRAME_HEIGHT);
- int fpsvideo = cap.get(cv::CAP_PROP_FPS);
- cv::namedWindow("Camera", cv::WINDOW_NORMAL);
- BYTETracker tracker(fpsvideo, 30);
-
- while (cap.isOpened()) {
- cap >> frame;
- if (frame.empty())
- {
- break;
- }
-
- std::vector<Object> obj;
- auto results = detector.Inference(frame);
- const int num = results.size();
- obj.resize(num);
- bytetrack_update(results, obj, class_id);
- std::vector<STrack> output_stracks = tracker.update(obj);
-
- for (size_t i = 0; i < output_stracks.size(); i++){
- std::vector<float> tlwh = output_stracks[i].tlwh;
- cv::Scalar __color = tracker.get_color(output_stracks[i].track_id);
- cv::putText(frame, std::to_string(output_stracks[i].track_id), cv::Point(tlwh[0], tlwh[1] - 10), cv::FONT_ITALIC, 0.75, __color, 2);
- cv::rectangle(frame, cv::Rect(tlwh[0], tlwh[1], tlwh[2], tlwh[3]), __color, 2);
- }
-
-
- //cv::imwrite("demo.jpg", frame);
- new_frame_time = std::chrono::high_resolution_clock::now();
- std::chrono::duration<double> duration1(new_frame_time - prev_frame_time);
- double fps = 1/duration1.count();
-
- avg.push_back(fps);
-
-
- std::cout <<"FPS: " << fps << std::endl;
- prev_frame_time = new_frame_time;
-
- cv::imshow("Camera", frame);
- if (cv::waitKey(1) == 27) {
- break;
- }
-
-
- }
-
- cap.release();
- cv::destroyAllWindows();
-
- return 0;
- }
【视频演示】
基于opencv和onnxruntime的C++版本yolov10-onnx和bytetrack追踪算法实现目标追踪_哔哩哔哩_bilibili测试环境:vs2019cmake==3.24.3opencv==4.7.0onnxruntime==1.12.0更多信息参考博文:, 视频播放量 2、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 未来自主研究中心, 作者简介 未来自主研究中心,相关视频:AI换脸真变态,绅士必备的一键启动包!,使用纯opencv部署yolov8目标检测模型onnx,基于yolov8+bytetrack实现目标追踪视频演示,易语言部署yolox的onnx模型,C语言、C++和C#的区别竟是这样,看完我瞬间懂了!,基于yolov8官方目标追踪botsort和bytetrack源码开发视频演示,基于C++版本yolov5-onnx和bytetrack追踪算法实现目标追踪,使用C++部署yolov8的onnx和bytetrack实现目标追踪,将yolov8封装成一个类几行代码完成语义分割任务,使用C#的winform部署yolov8的onnx实例分割模型https://www.bilibili.com/video/BV1rZ421M77T/
【测试环境】
opencv==4.7.0 onnxruntime==1.12.0 vs2019 cmake==3.24.3
【源码下载地址】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。