siamFC算法复现及使用自己的数据集进行测试

通过学习siamFC的原理,download下来干净的跟踪源码,因为该算法是基于栾生网络的里程碑的单目标跟踪算法,故对于该算法进行复现,可参考东大阿德的目标跟踪入门视频

代码地址:siamFC

思想是将一个已知类别的训练样本和一个未知类别的测试样本分别输入到两个共享参数的 CNN 中。

从而获得两个特征向量,然后通过计算两个特征向量的 相似度,相似度越高表明其更可能是同一个类别。

使用了模板分支和搜索分支共享权重,模板分支实质上是第一帧提取的图像特征。

搜索分支与模板特征进行滑动卷积,最终输出一个得分图,得分最高的位置为当前帧的中心位置。缺点是缺乏对目标形状尺寸的感知度估计。

本来采用的测试集为OTB100数据集,但是组里的内容需要使用更高跟踪难度的飞行器目标进行测试。将自制的红外目标跟踪数据集作为测试数据集,权重采用GOT10k数据集训练的前2000个序列。


进行测试

用来记录出现的问题和解决的方法。

首先在test.py程序中修改测试集合的路径。

python 复制代码
root_dir = os.path.expanduser('/home/ubuntu22/dataset/infread/OTB100')

单修改路径运行会发现跟踪还是会按照OTB100本来的序列信息进行寻找测试,又因为此时已经更改了数据集路径,所以肯定找不到会报错。

因此需要去更改读取数据集的序列处理函数的内容,位于/anaconda3/envs/siamFC/lib/python3.7/site-packages/got10k/datasets下面的otb.py文件。注意,这里pycharm中有bug,如果只在pycharm中修改是无法生效的,用命令行的vim进行操作。

发现test程序中传入的version=2015,此时的序列信息为__tb100_seqs + __tb50_seqs 的内容,所以需要更改序列信息。

python 复制代码
 __tb50_seqs = ['Basketball', 'Biker', 'Bird1', 'BlurBody', 'BlurCar2',
                   'BlurFace', 'BlurOwl', 'Bolt', 'Box', 'Car1', 'Car4',
                   'CarDark', 'CarScale', 'ClifBar', 'Couple', 'Crowds',
                   'David', 'Deer', 'Diving', 'DragonBaby', 'Dudek',
                   'Football', 'Freeman4', 'Girl', 'Human3', 'Human4',
                   'Human6', 'Human9', 'Ironman', 'Jump', 'Jumping',
                   'Liquor', 'Matrix', 'MotorRolling', 'Panda', 'RedTeam',
                   'Shaking', 'Singer2', 'Skating1', 'Skating2-1','Skating2-2','Skiing',
                   'Soccer', 'Surfer', 'Sylvester', 'Tiger2', 'Trellis',
                   'Walking', 'Walking2', 'Woman']
 __tb100_seqs = ['Bird2', 'BlurCar1', 'BlurCar3', 'BlurCar4', 'Board',
                    'Bolt2', 'Boy', 'Car2', 'Car24', 'Coke', 'Coupon',
                    'Crossing', 'Dancer', 'Dancer2', 'David2', 'David3',
                    'Dog', 'Dog1', 'Doll', 'FaceOcc1', 'FaceOcc2', 'Fish',
                    'FleetFace', 'Football1', 'Freeman1', 'Freeman3',
                    'Girl2', 'Gym', 'Human2', 'Human5', 'Human7', 'Human8',
                    'Jogging-1','Jogging-2','KiteSurf', 'Lemming', 'Man', 'Mhyang',
                    'MountainBike', 'Rubik', 'Singer1', 'Skater',
                    'Skater2', 'Subway', 'Suv', 'Tiger1', 'Toy', 'Trans',
                    'Twinnings', 'Vase'] + __tb50_seqs
					
					__otb15_seqs = __tb100_seqs
 __version_dict = {
        2013: __otb13_seqs,
        2015: __otb15_seqs,
        'otb2013': __otb13_seqs,
        'otb2015': __otb15_seqs,
        'tb50': __tb50_seqs,
        'tb100': __tb100_seqs}

自制的数据集序列为data001-data020,所以更改这一部分为:

python 复制代码
 __tbInfread_seqs = [
        'data001', 'data002', 'data003', 'data004', 'data005', 'data006',
        'data007', 'data008', 'data009', 'data010', 'data011', 'data012',
        'data013', 'data014', 'data015', 'data016', 'data017', 'data018',
        'data019', 'data020']

     # 尝试修改
    # __otb15_seqs = __tb100_seqs
    __otb15_seqs = __tbInfread_seqs

另外发现自制的红外小目标数据集里的data004中的groundtruth.txt文件标注信息格式有误,有多余的[],报错:

使用命令批量操作:

shell 复制代码
sed -i 's/\[//g; s/\]//g' groundtruth_rect.txt

至此全部解决,成功复现siamFC算法在自制的红外目标小数据集上测试.

相关推荐
yLDeveloper9 小时前
从模型评估、梯度难题到科学初始化:一步步解析深度学习的训练问题
深度学习
Coder_Boy_10 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
2401_8362358610 小时前
中安未来SDK15:以AI之眼,解锁企业档案的数字化基因
人工智能·科技·深度学习·ocr·生活
njsgcs10 小时前
llm使用 AgentScope-Tuner 通过 RL 训练 FrozenLake 智能体
人工智能·深度学习
2的n次方_11 小时前
CANN ascend-transformer-boost 架构解析:融合注意力算子管线、长序列分块策略与图引擎协同机制
深度学习·架构·transformer
人工智能培训11 小时前
具身智能视觉、触觉、力觉、听觉等信息如何实时对齐与融合?
人工智能·深度学习·大模型·transformer·企业数字化转型·具身智能
pp起床12 小时前
Gen_AI 补充内容 Logit Lens 和 Patchscopes
人工智能·深度学习·机器学习
阿杰学AI13 小时前
AI核心知识91——大语言模型之 Transformer 架构(简洁且通俗易懂版)
人工智能·深度学习·ai·语言模型·自然语言处理·aigc·transformer
芷栀夏13 小时前
CANN ops-math:筑牢 AI 神经网络底层的高性能数学运算算子库核心实现
人工智能·深度学习·神经网络
Yeats_Liao16 小时前
评估体系构建:基于自动化指标与人工打分的双重验证
运维·人工智能·深度学习·算法·机器学习·自动化