一、编译选项的修改

1、darknet/src/yolo_console_dll.cpp

取消注释 #define TRACK_OPTFLOW

2、Makefile 编译选项

打开开关 LIBSO=1

二、编译

make clean
make -j4

三、遇到的Error

编译时可能会遇到:

cannot find the file opencv_cudaoptflow.h

1、彻底的解决方法是重新安装编译带CUDA的OpenCV

2、简单的一种解决方法是

修改 #if defined(TRACK_OPTFLOW )&& defined(OPENCV) && defined(GPU)
成为#if defined(TRACK_OPTFLOW )&& defined(OPENCV) && defined(NOTUSED)
详情见:https://github.com/AlexeyAB/darknet/issues/907

四、调用命令

LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH ./uselib /root/work/darknet-windows-lb/track_test/lights/weights/crop.names /root/work/darknet-windows-lb/track_test/lights/weights/crop.cfg /root/work/darknet-windows-lb/track_test/lights/weights/crop_best.weights /root/work/darknet-windows-lb/track_test/lights/light_2/
LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH ./uselib /root/work/darknet-windows-lb/track_test/lights/weights/crop.names /root/work/darknet-windows-lb/track_test/lights/weights/crop.cfg /root/work/darknet-windows-lb/track_test/lights/weights/crop_best.weights /root/work/darknet-windows-lb/track_test/lights/light_4/
LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH ./uselib /root/work/darknet-windows-lb/track_test/lights/weights/crop.names /root/work/darknet-windows-lb/track_test/lights/weights/crop.cfg /root/work/darknet-windows-lb/track_test/lights/weights/crop_best.weights /root/work/darknet-windows-lb/track_test/lights/light_6/
LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH ./uselib /root/work/darknet-windows-lb/track_test/signs/weights/ni.names /root/work/darknet-windows-lb/track_test/signs/weights/yolov4-ni.cfg /root/work/darknet-windows-lb/track_test/signs/weights/yolov4-ni_best.weights /root/work/darknet-windows-lb/track_test/signs/sign_2/

五、原理

具体的理论原理见:质心跟踪算法
Darknet代码的实现:
在./darknet/include/yolo_v2_class.hpp定义了换一个Tracker类

1、在591到615行,is_in_tracking_area函数

这个函数是定义了一个跟踪区域,区域外的,不进行跟踪,当然,如果你需要跟踪整张图,那可以注释掉这个函数

2、633行,用到了一个frames_story

这个代表记忆距离,如果大于这个记忆距离,就不进行跟踪了。也就是说只往后跟踪记忆个距离

3、核心代码在,639行到651行

计算前后两帧中跟踪目标之间的欧氏距离;

if (cur_dist<max_dist && (k.track_id == 0 || dist_vec[m]>cur_dist)){# 欧式距离小于阈值,并且是第一个被标记的最小欧氏距离或者比前面标记的最小欧式距离还要小dist_vec[m]=cur_dist;cur_index=m;# 更新最小欧式距离和匹配ID号
}

4、在664行,设置了一个ratio

如果上一帧的目标区域/当前帧的目标区域<2.0,才被认为是相同的目标,大小比例差距太大,就不是相同的目标

Darknet自带的tracker跟踪功能相关推荐

  1. PDPS软件:机器人TCP轨迹跟踪功能介绍与使用方法

    本文已经首发在个人微信公众号:工业机器人仿真与编程(微信号:IndRobSim),欢迎关注! 功能概述 TCP轨迹跟踪功能是机器人在虚拟仿真环境中运行时,仿真软件对工具坐标系进行实时位置记录,然后把记 ...

  2. VS2013自带的Browser Link功能引发浏览localhost网站时不停的轮询

    浏览localhost网站时候不管你打开那个页面它都会不停的轮询.据悉这是VS2013自带的Browser Link功能,里面用到SignalR机制 什么是Browser Link功能,什么是Sign ...

  3. 演示:GLBP跟踪功能、权值、与不同的负载均衡方式

    演示:GLBP跟踪功能.权值.与不同的负载均衡方式 演示目标: 1 回忆GLBP与HSRP或者VRRP在转发流量的差异 2 GLBP的优先级和抢占与HSRP或者VRRP优先级和抢占的不同之处 3 GL ...

  4. html 表格过滤功能,简单的带排序和过滤功能的jQuery表格插件

    smart-table是一款简单实用的带排序和过滤功能的jQuery表格插件.该jQuery表格插件通过简单的设置就可以生成表格排序.表格字段过滤功能,甚至可以实现表格分页显示,使用非常方便. 使用方 ...

  5. Python+selenium 自动化高级应用篇:借助pyautogui实现web前端带轨迹拖拽功能,解决ActionChains拖拽失效问题

    有一些 web 前端的交互,必须有鼠标轨迹才能成功的实现拖拽功能. 而 selenium 自带的 ActionChains 方法,是一瞬间从 A 点到 B 点的. 解决思路: 利用元素返回的相对浏览器 ...

  6. 日志库EasyLogging++学习系列(9)—— 性能跟踪功能

    性能跟踪是 Easylogging++ 其中一个非常显著的功能,而且使用起来也十分简单.如果在Windows平台下使用性能跟踪的话,其原理是基于 Windows API函数 GetSystemTime ...

  7. 实现带header和footer功能的RecyclerView——完善篇

    在上一篇文章中我们实现了实现带header和footer功能的RecyclerView,见  实现带header和footer功能的RecyclerView 但是由于加入了header,item的po ...

  8. [转]mpvue中的小程序调用系统自带查看图片的功能

    mpvue中的小程序调用系统自带查看图片的功能 这里举个栗子: <template><div class="keting"><div class=&q ...

  9. 猎豹浏览器禁止跟踪怎么开启 禁止跟踪功能开启方法

    为了防止第三方网站跟踪用户活动,包括猎豹浏览器在内的多款浏览器产品都上线了"禁止追踪"功能.不过,需要注意的是,"禁止追踪"功能是需要手动开启的!那么,该怎么操 ...

最新文章

  1. 【失败的尝试】C++中使用string进行switch判断
  2. 嵌入式Linux USB驱动开发之教你一步步编写USB驱动程序
  3. java maven compiler设置默认1.8
  4. LAMP环境下动态网站许愿墙的搭建
  5. txt记录位置 c++,python显示位置
  6. 初学java小白的疑惑梳理
  7. 读《程序是怎样跑起来的》第三章有感
  8. 使用asp.net将图片上传并存入SqlServer中,然后从SqlServer中读取并显示出来
  9. 辞退可以,暴力不行!
  10. 安装运行okvis odometry
  11. 快手通过标签添加好友_快手开通直播权限添加垂直标签
  12. 大数据可视化学期总结
  13. 如何下载网页上的的FLASH
  14. 拳皇命运服务器维护多长时间,拳皇命运开服表
  15. LIN雨量传感器:PCB拆解及LIN数据协议解析
  16. LeetCode之报数(简单 模拟 递归)
  17. raptor累乘流程图_程序设计基础
  18. 图像的剪切(crop)matlab
  19. 《勇士传说》横版卷轴动作类游戏笔记目录
  20. 数理逻辑与集合论复习脉络

热门文章

  1. ftp地址,ftp地址的2大作用
  2. python的try和except用法_python中try及except使用
  3. html和css做个人介绍,有了这些CSS套路,你也可以做一个漂亮的简历
  4. 无废话SharePoint入门教程一[SharePoint概述]
  5. 使用UltraISO制作U盘启动盘+重装win10操作系统
  6. JAVA教程-JAVA语言基础框架知识学习点-JAVA精通必看
  7. ios 安装 ssl-kill-switch2流程
  8. Android端实现深度学习
  9. MongoDB详解,用心看这篇就够了【重点】
  10. C# UDP 端口扫描方法