本专栏主要是提供一种国产化图像识别的解决方案,专栏中实现了YOLOv5/v8在国产化芯片上的使用部署,并可以实现网页端实时查看。根据自己的具体需求可以直接产品化部署使用。
B站配套视频:https://www.bilibili.com/video/BV1or421T74f
背景
不废话直接上代码,反正就是bytetrack是使用计算的方式进行追踪,实现方便。不像deepsort还需要通过神经网络训练,对嵌入式设备非常友善。
你在晚上找到的都是yolov8的python版本自带的bytetrack,我这边开源给大家的是C++版本可以直接在RK3588上实验运行。
安装
本代码核心算法也是来自github上的大神,我将开源项目已经迁移到我的gitee库中开源,如果想尝试从头整合的朋友可以自行提取,本教程只是对内容进行了整合使用。
首先需要安装eigen-git-mirror开源项目,这是实现必备的辅助项目。
unzip eigen-3.3.9.zip
cd eigen-3.3.9
mkdir build
cd build
cmake ..
sudo make install
配置
1、vscode开发环境配置
在安装完eigen3.3.9之后,修改配置文件引入项目,我的安装地址是usr/local/include,这个根据个人的安装地址修改。
2、修改项目cmake文件
# 寻找Eigen3
set(EIGEN_VERSION 3.3)
find_package(Eigen3 ${EIGEN_VERSION} QUIET)
# 引入Eigen3
include_directories(/usr/include/eigen3)
# bytetrack_lib
add_library(bytetrack_lib SHARED
src/bytetrack/BYTETracker.cpp
src/bytetrack/kalmanFilter.cpp
src/bytetrack/lapjv.cpp
src/bytetrack/STrack.cpp
src/bytetrack/utils.cpp
)
target_link_libraries(bytetrack_lib Eigen3::Eigen)
代码讲解查看视频https://www.bilibili.com/video/BV1or421T74f
3、识别+追踪代码
// 运行模型
yolo.Run(img, objects);
// 绘制框,显示结果
// DrawDetections(img, objects);
// 将检测对象转换成追踪对象
decobj_to_trackobj(objects,trackobj);
output_stracks = tracker.update(trackobj);
for (unsigned long i = 0; i < output_stracks.size(); i++)
{
std::vector<float> tlwh = output_stracks[i].tlwh;
bool vertical = tlwh[2] / tlwh[3] > 1.6;
if (tlwh[2] * tlwh[3] > 20 && !vertical)
{
cv::Scalar s = tracker.get_color(output_stracks[i].track_id);
cv::putText(img, cv::format("%d", output_stracks[i].track_id), cv::Point(tlwh[0], tlwh[1] - 5),
0, 0.6, cv::Scalar(0, 0, 255), 2, cv::LINE_AA);
cv::rectangle(img, cv::Rect(tlwh[0], tlwh[1], tlwh[2], tlwh[3]), s, 2);
}
}
void decobj_to_trackobj(std::vector<Detection> &objects, std::vector<Object> &trackobj)
{
// 如果objects不为空,初始化trackobj
if (!objects.empty())
{
trackobj.clear();
}
// 将objects转换为trackobj
for (auto &obj : objects)
{
// 新建Object对象
Object trackobj_temp;
trackobj_temp.classId = obj.class_id;
trackobj_temp.score = obj.confidence;
trackobj_temp.box = obj.box;
trackobj.push_back(trackobj_temp);
}
}
代码讲解查看视频https://www.bilibili.com/video/BV1or421T74f