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算法在自制的红外目标小数据集上测试.

相关推荐
終不似少年遊*1 小时前
词向量与词嵌入
人工智能·深度学习·nlp·机器翻译·词嵌入
夏莉莉iy3 小时前
[MDM 2024]Spatial-Temporal Large Language Model for Traffic Prediction
人工智能·笔记·深度学习·机器学习·语言模型·自然语言处理·transformer
pchmi4 小时前
CNN常用卷积核
深度学习·神经网络·机器学习·cnn·c#
pzx_0014 小时前
【机器学习】K折交叉验证(K-Fold Cross-Validation)
人工智能·深度学习·算法·机器学习
造夢先森6 小时前
Transformer & LLaMA
深度学习·transformer·llama
神经美学_茂森6 小时前
神经网络防“失忆“秘籍:弹性权重固化如何让AI学会“温故知新“
人工智能·深度学习·神经网络
阿_旭6 小时前
【超详细】神经网络的可视化解释
人工智能·深度学习·神经网络
武乐乐~7 小时前
QARepVGG--含demo实现
深度学习
OpenCSG7 小时前
免部署|DeepSeek模型上线 CSGHub Serverless API|即刻免费试用
人工智能·深度学习·社区
CS_木成河8 小时前
【深度学习】预训练和微调概述
人工智能·深度学习·语言模型·微调·预训练