单目标跟踪算法及其复现过程---SiamFC(一)

这篇具有很好参考价值的文章主要介绍了单目标跟踪算法及其复现过程---SiamFC(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SiamFC---用于目标跟踪的全卷积孪生网络

论文地址:SiamFC

SiamFC是在2016年发表的,首次将目标跟踪问题转化为给定模板与候选图像的匹配问题。之前对于目标跟踪问题的解决方法是学习外观的排他性模型解决,而且只使用在线的方法,限制了他们可以学习的模型的丰富性。而在SiamFC之前的相关滤波方法中的HCF算法就已经考虑过使用深度特征的表达能力。但是由于事先不知道要跟踪的对象,有必要在线执行随机梯度下降以调整网络的权重,会影响到系统的速度。而一个优秀的目标跟踪器最重要的特点有三个:精确,高效,鲁棒性。SiamFC就被提出了,虽然时间久远,现在有很多更高效的跟踪器,但是由于SiamFC是孪生网络用于跟踪被首次提出,所以本文还是要对SiamFC进行解读以及复现。

网络结构

siamfc,单目标跟踪代码复现记录,计算机视觉,目标跟踪,pytorch

 SiamFC简单的使用Fully-Convolutional网络对搜索图像x和模板图像z进行完全卷积。输出是标量值核心映射,其维度取决于搜索图像的大小。这使得能够在一次评估中为搜索图像内的所有转换的子窗口计算相似性函数。分数图中的红色和蓝色像素包含对应子窗口的相似性。红线表示对应。

代码复现

本文使用的代码是https://github.com/huanglianghua/siamfc-pytorch

其跟踪结果如下:

siamfc,单目标跟踪代码复现记录,计算机视觉,目标跟踪,pytorch

siamfc,单目标跟踪代码复现记录,计算机视觉,目标跟踪,pytorch

siamfc,单目标跟踪代码复现记录,计算机视觉,目标跟踪,pytorch

在代码文件里有两个文件夹,一个是siamfc文件夹,一个是tools文件夹

siamfc文件夹内是组成孪生网络的各个构架,如backbone,datasets, heads, losses, ops, transforms,最后组成TrackerSiamFC网络结构。在TrackerSiamFC中有参数设置函数,在训练之前需要按照自己设备的算力进行调整。

def parse_args(self, **kwargs):
        # default parameters
        cfg = {
            # basic parameters
            'out_scale': 0.001,
            'exemplar_sz': 127,
            'instance_sz': 255,
            'context': 0.5,
            # inference parameters
            'scale_num': 3,
            'scale_step': 1.0375,
            'scale_lr': 0.59,
            'scale_penalty': 0.9745,
            'window_influence': 0.176,
            'response_sz': 17,
            'response_up': 16,
            'total_stride': 8,
            # train parameters
            'epoch_num': 50,
            'batch_size': 8,
            'num_workers': 32,
            'initial_lr': 1e-2,
            'ultimate_lr': 1e-5,
            'weight_decay': 5e-4,
            'momentum': 0.9,
            'r_pos': 16,
            'r_neg': 0}
TrackerSiamFC里面还有track属性,可以对已经训练好的模型进行可视化操作。

training

代码如下:首先需要下载got10k官方库,只需要在终端输入(注意:在终端安装各种库的时候不能使用网络代理),在环境已经配置到的情况下,只需要该其中的路径和就可以运行。

pip install got10k
from __future__ import absolute_import

import os
from got10k.datasets import *

from siamfc import TrackerSiamFC


if __name__ == '__main__':
    root_dir = os.path.expanduser('D:/Desktop/tracking/siamfc-pytorch-master/data/GOT-10k') # 这里的路径必须设置为绝对路径
    seqs = GOT10k(root_dir, subset='train', return_meta=True)
    # root_dir和seqs这两句是使用GOT10k数据集必备的语句
    tracker = TrackerSiamFC()
    tracker.train_over(seqs)

test

在test.py文件中,就是利用训练出来的模型进行测试,需要更改预训练模型的路径,测试集的路径,以OTB100为例,最后输出的是对每一帧目标位置的坐标点。我使用预训练了12轮的模型进行测试,最后输出结果如图所示

siamfc,单目标跟踪代码复现记录,计算机视觉,目标跟踪,pytorch

siamfc,单目标跟踪代码复现记录,计算机视觉,目标跟踪,pytorch

 除了准确率和成功率图,还生成了一个性能JSON文件,还有每一视频帧的时间。

from __future__ import absolute_import

import os
from got10k.experiments import *

from siamfc import TrackerSiamFC


if __name__ == '__main__':
    net_path = 'pretrained/siamfc_alexnet_e12.pth'
    tracker = TrackerSiamFC(net_path=net_path)

    root_dir = os.path.expanduser('D:/Desktop/tracking/OTB100')
    e = ExperimentOTB(root_dir, version=2015)
    e.run(tracker)
    e.report([tracker.name])

 demo

demo文件可以根据训练出来的模型对视频进行可视化。

这个代码库实现的siamfc较为简单,复现过程中没有什么技术性的错误,比较顺利。

这个系列博客仅为了记录各目标跟踪算法的复现(大多为跑通大佬们实现的代码),包括其中出现的很多问题和错误,学到的新知识等等。文章来源地址https://www.toymoban.com/news/detail-725541.html

到了这里,关于单目标跟踪算法及其复现过程---SiamFC(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 目标跟踪——SORT算法原理浅析

    目标跟踪——SORT算法原理浅析 目标跟踪——Deep Sort算法原理浅析 基于yolov5与Deep Sort的流量统计与轨迹跟踪 Simple Online and Realtime Tracking(SORT)是一个非常简单、有效、实用的多目标跟踪算法。在SORT中,仅仅通过IOU来进行匹配虽然速度非常快,但是ID switch依然非常严重。 SORT最大

    2024年02月06日
    浏览(53)
  • 视频目标检测与轨迹跟踪代码案例

    通过阅读相关文献及测试,找到了一种基于多模板匹配的改进方法,可以对遥感视频卫星中的移动目标进行探测,并绘制其轨迹。根据实验结果发现,可以比较有效的对运动目标进行跟踪。 核心思想比较简单。即通过不同旋转角度的模板同时匹配,在多个结果中,找到相似度

    2023年04月20日
    浏览(39)
  • 基于深度学习的多目标跟踪算法

    基于深度学习的多目标跟踪(MOT,Multi-Object Tracking)算法在近年来取得了显著的进步。这些算法主要利用深度学习模型对视频中的多个目标进行检测和跟踪。 在介绍一些常见的深度学习多目标跟踪算法之前,我们首先了解一下其基本概念和挑战: 目标检测 :首先识别视频帧

    2024年01月23日
    浏览(40)
  • DeepSORT多目标跟踪——算法流程与源码解析

    1. 目标检测 在目标检测任务中,主要目标是识别图像或视频帧中存在的物体的位置和类别信息。这意味着目标检测算法需要定位物体的边界框(Bounding Box)并确定每个边界框内的物体属于哪个类别(如人、汽车、狗等)。目标检测通常独立地处理每一帧图像,不考虑目标在不

    2024年04月13日
    浏览(50)
  • 【老生谈算法】基于matlab的运动目标识别与跟踪系统设计与算法原理及程序源码——目标识别算法

    大家好,今天给大家介绍基于matlab的运动目标的监测与跟踪系统设计与原理。 视频图像分析主要是对运动图像序列进行分析处理,它通常涉及到运动检测、目标分类、目标跟踪及行为理解与描述几个过程。其中,运动目标检测与跟踪处于整个视觉监视系统的最底层,是视频图

    2024年02月13日
    浏览(46)
  • 单目标跟踪--KCF算法(核化相关滤波算法)Python实现(超详细)

    注:本文涉及的算法的代码实践已上传至GitHub,恳求大佬们指点!^ _ ^ ​ 目标跟踪任务在许多的计算机视觉系统中都是极为关键的一个组成部分。对于任意给定的一个初始图像的Patch(Filter滑过的区域),目标跟踪任务的目的在于训练一个分类器来将待跟踪的目标与它所处的

    2024年02月02日
    浏览(76)
  • 经典多目标跟踪算法DeepSORT的基本原理和实现

    点击蓝字 关注我们,让开发变得更有趣 作者| 杨亦诚 排版| 李擎 经典多目标跟踪算法DeepSORT的基本原理和实现 OpenVINO 目标检测 vs 目标跟踪 在开始介绍DeepSORT的原理之前呢,我们先来了解下目标检测,和目标跟踪之间的区别: · 目标检测:在目标检测任务中,我们需要利用A

    2024年02月03日
    浏览(41)
  • 目标检测论文解读复现之十:基于YOLOv5的遥感图像目标检测(代码已复现)

    前言        此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文,帮助大家解答疑惑。解读的系列文章,本人

    2024年02月06日
    浏览(41)
  • 竞赛保研 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉

    🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习多目标跟踪 实时检测 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享: https://gitee.com/dancheng-sen

    2024年01月16日
    浏览(64)
  • 计算机视觉+深度学习+机器学习+opencv+目标检测跟踪(代码+视频)

    计算机视觉、深度学习和机器学习是当今最热门的技术,它们被广泛应用于各种领域,如自动驾驶、医学图像分析、安防监控等。而目标检测跟踪技术则是计算机视觉中的一个重要分支,它可以帮助我们在图像或视频中自动识别和跟踪特定的目标。 下面我们来一一介绍这些技

    2024年02月01日
    浏览(108)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包