互联网加竞赛 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉

这篇具有很好参考价值的文章主要介绍了互联网加竞赛 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0 前言

🔥 优质竞赛项目系列,今天要分享的是

🚩 深度学习多目标跟踪 实时检测

该项目较为新颖,适合作为竞赛课题方向,学长非常推荐!

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:3分
  • 工作量:3分
  • 创新点:4分

🧿 更多资料, 项目分享:

https://gitee.com/dancheng-senior/postgraduate文章来源地址https://www.toymoban.com/news/detail-826759.html

2 先上成果

互联网加竞赛 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉,python,java

3 多目标跟踪的两种方法

3.1 方法1

基于初始化帧的跟踪,在视频第一帧中选择你的目标,之后交给跟踪算法去实现目标的跟踪。这种方式基本上只能跟踪你第一帧选中的目标,如果后续帧中出现了新的物体目标,算法是跟踪不到的。这种方式的优点是速度相对较快。缺点很明显,不能跟踪新出现的目标。

3.2 方法2

基于目标检测的跟踪,在视频每帧中先检测出来所有感兴趣的目标物体,然后将其与前一帧中检测出来的目标进行关联来实现跟踪的效果。这种方式的优点是可以在整个视频中跟踪随时出现的新目标,当然这种方式要求你前提得有一个好的“目标检测”算法。

学长主要分享Option2的实现原理,也就是Tracking By Detecting的跟踪方式。

4 Tracking By Detecting的跟踪过程

**Step1:**使用目标检测算法将每帧中感兴趣的目标检测出来,得到对应的(位置坐标, 分类, 可信度),假设检测到的目标数量为M;

**Step2:**通过某种方式将Step1中的检测结果与上一帧中的检测目标(假设上一帧检测目标数量为N)一一关联起来。换句话说,就是在M*N个Pair中找出最像似的Pair。

对于Step2中的“某种方式”,其实有多种方式可以实现目标的关联,比如常见的计算两帧中两个目标之间的欧几里得距离(平面两点之间的直线距离),距离最短就认为是同一个目标,然后通过匈牙利算法找出最匹配的Pair。当让,你还可以加上其他的判断条件,比如我用到的IOU,计算两个目标Box(位置大小方框)的交并比,该值越接近1就代表是同一个目标。还有其他的比如判断两个目标的外观是否相似,这就需要用到一种外观模型去做比较了,可能耗时更长。

在关联的过程中,会出现三种情况:

1)在上一帧中的N个目标中找到了本次检测到的目标,说明正常跟踪到了;

2)在上一帧中的N个目标中没有找到本次检测到的目标,说明这个目标是这一帧中新出现的,所以我们需要把它记录下来,用于下下一次的跟踪关联;

3)在上一帧中存在某个目标,这一帧中并没有与之关联的目标,那么说明该目标可能从视野中消失了,我们需要将其移除。(注意这里的可能,因为有可能由于检测误差,在这一帧中该目标并没有被检测到)

互联网加竞赛 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉,python,java

4.1 存在的问题

上面提到的跟踪方法在正常情况下都能够很好的工作,但是如果视频中目标运动得很快,前后两帧中同一个目标运动的距离很远,那么这种跟踪方式就会出现问题。

互联网加竞赛 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉,python,java
如上图,实线框表示目标在第一帧的位置,虚线框表示目标在第二帧的位置。当目标运行速度比较慢的时候,通过之前的跟踪方式可以很准确的关联(A, A’)和(B,
B’)。但是当目标运行速度很快(或者隔帧检测)时,在第二帧中,A就会运动到第一帧中B的位置,而B则运动到其他位置。这个时候使用上面的关联方法就会得到错误的结果。

那么怎样才能更加准确地进行跟踪呢?

4.2 基于轨迹预测的跟踪方式

既然通过第二帧的位置与第一帧的位置进行对比关联会出现误差,那么我们可以想办法在对比之前,先预测目标的下一帧会出现的位置,然后与该预测的位置来进行对比关联。这样的话,只要预测足够精确,那么几乎不会出现前面提到的由于速度太快而存在的误差

互联网加竞赛 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉,python,java

如上图,我们在对比关联之前,先预测出A和B在下一帧中的位置,然后再使用实际的检测位置与预测的位置进行对比关联,可以完美地解决上面提到的问题。理论上,不管目标速度多么快,都能关联上。那么问题来了,怎么预测目标在下一帧的位置?

方法有很多,可以使用卡尔曼滤波来根据目标前面几帧的轨迹来预测它下一帧的位置,还可以使用自己拟合出来的函数来预测下一帧的位置。实际过程中,我是使用拟合函数来预测目标在下一帧中的位置。

互联网加竞赛 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉,python,java
如上图,通过前面6帧的位置,我可以拟合出来一条(T->XY)的曲线(注意不是图中的直线),然后预测目标在T+1帧的位置。具体实现很简单,Python中的numpy库中有类似功能的方法。

5 训练代码

这里记录一下训练代码,来日更新


if FLAGS.mode == ‘eager_tf’:
# Eager mode is great for debugging
# Non eager graph mode is recommended for real training
avg_loss = tf.keras.metrics.Mean(‘loss’, dtype=tf.float32)
avg_val_loss = tf.keras.metrics.Mean(‘val_loss’, dtype=tf.float32)

        for epoch in range(1, FLAGS.epochs + 1):
            for batch, (images, labels) in enumerate(train_dataset):
                with tf.GradientTape() as tape:
                    outputs = model(images, training=True)
                    regularization_loss = tf.reduce_sum(model.losses)
                    pred_loss = []
                    for output, label, loss_fn in zip(outputs, labels, loss):
                        pred_loss.append(loss_fn(label, output))
                    total_loss = tf.reduce_sum(pred_loss) + regularization_loss

                grads = tape.gradient(total_loss, model.trainable_variables)
                optimizer.apply_gradients(
                    zip(grads, model.trainable_variables))

                logging.info("{}_train_{}, {}, {}".format(
                    epoch, batch, total_loss.numpy(),
                    list(map(lambda x: np.sum(x.numpy()), pred_loss))))
                avg_loss.update_state(total_loss)

            for batch, (images, labels) in enumerate(val_dataset):
                outputs = model(images)
                regularization_loss = tf.reduce_sum(model.losses)
                pred_loss = []
                for output, label, loss_fn in zip(outputs, labels, loss):
                    pred_loss.append(loss_fn(label, output))
                total_loss = tf.reduce_sum(pred_loss) + regularization_loss

                logging.info("{}_val_{}, {}, {}".format(
                    epoch, batch, total_loss.numpy(),
                    list(map(lambda x: np.sum(x.numpy()), pred_loss))))
                avg_val_loss.update_state(total_loss)

            logging.info("{}, train: {}, val: {}".format(
                epoch,
                avg_loss.result().numpy(),
                avg_val_loss.result().numpy()))

            avg_loss.reset_states()
            avg_val_loss.reset_states()
            model.save_weights(
                'checkpoints/yolov3_train_{}.tf'.format(epoch))

6 最后

🧿 更多资料, 项目分享:

https://gitee.com/dancheng-senior/postgraduate

到了这里,关于互联网加竞赛 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 互联网加竞赛 python+深度学习+opencv实现植物识别算法系统

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于深度学习的植物识别算法研究与实现 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:4分 工作量:4分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate Google DeepMind公司研究员与牛津大学计算

    2024年02月03日
    浏览(51)
  • 互联网加竞赛 python区块链实现 - proof of work工作量证明共识算法

    🔥 优质竞赛项目系列,今天要分享的是 python区块链实现 - proof of work工作量证明共识算法 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 学长以比特币的结构向大家详解区块链的组成部分 previous hash

    2024年02月04日
    浏览(44)
  • 互联网加竞赛 基于生成对抗网络的照片上色动态算法设计与实现 - 深度学习 opencv python

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于生成对抗网络的照片上色动态算法设计与实现 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: http

    2024年02月20日
    浏览(53)
  • 互联网加竞赛 基于人工智能的图像分类算法研究与实现 - 深度学习卷积神经网络图像分类

    🔥 优质竞赛项目系列,今天要分享的是 基于人工智能的图像分类技术 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 传统CNN包含卷积层、全连接层等组件,并采用softmax多类别分类器和多类交叉熵损失

    2024年02月02日
    浏览(59)
  • 互联网加竞赛 大数据房价预测分析与可视

    🔥 优质竞赛项目系列,今天要分享的是 🚩 大数据房价预测分析与可视 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/

    2024年02月22日
    浏览(67)
  • 互联网加竞赛 大数据疫情分析及可视化系统

    🔥 优质竞赛项目系列,今天要分享的是 🚩 大数据疫情分析及可视化系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/dancheng-seni

    2024年03月16日
    浏览(55)
  • 互联网加竞赛 地铁大数据客流分析系统 设计与实现

    🔥 优质竞赛项目系列,今天要分享的是 地铁大数据客流分析系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 使用 Flink 完成数据清洗和聚合,使用 Elasticsearch + Kibana 的的技术路线,完成了客流信息

    2024年02月04日
    浏览(55)
  • 互联网加竞赛 基于设深度学习的人脸性别年龄识别系统

    🔥 优质竞赛项目系列,今天要分享的是 基于深度学习机器视觉的人脸性别年龄识别系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 随着大数据与人工智能逐渐走入人们的生活,计算机视觉应用越

    2024年02月22日
    浏览(79)
  • 互联网加竞赛 基于大数据的股票量化分析与股价预测系统

    🔥 优质竞赛项目系列,今天要分享的是 🚩 基于大数据的股票量化分析与股价预测系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https://gitee

    2024年02月01日
    浏览(100)
  • 互联网加竞赛 基于计算机视觉的身份证识别系统

    🔥 优质竞赛项目系列,今天要分享的是 基于机器视觉的身份证识别系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 1.1.1 字符定位 在Android移动端摄像头拍摄的图片是彩色图像,上传到服务器后为

    2024年02月20日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包