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

相关推荐
胡耀超9 小时前
DataOceanAI Dolphin(ffmpeg音频转化教程) 多语言(中国方言)语音识别系统部署与应用指南
python·深度学习·ffmpeg·音视频·语音识别·多模态·asr
HUIMU_9 小时前
DAY12&DAY13-新世纪DL(Deeplearning/深度学习)战士:破(改善神经网络)1
人工智能·深度学习
mit6.82410 小时前
[1Prompt1Story] 注意力机制增强 IPCA | 去噪神经网络 UNet | U型架构分步去噪
人工智能·深度学习·神经网络
Coovally AI模型快速验证11 小时前
YOLO、DarkNet和深度学习如何让自动驾驶看得清?
深度学习·算法·yolo·cnn·自动驾驶·transformer·无人机
科大饭桶11 小时前
昇腾AI自学Day2-- 深度学习基础工具与数学
人工智能·pytorch·python·深度学习·numpy
努力还债的学术吗喽12 小时前
2021 IEEE【论文精读】用GAN让音频隐写术骗过AI检测器 - 对抗深度学习的音频信息隐藏
人工智能·深度学习·生成对抗网络·密码学·音频·gan·隐写
weixin_5079299113 小时前
第G7周:Semi-Supervised GAN 理论与实战
人工智能·pytorch·深度学习
AI波克布林15 小时前
发文暴论!线性注意力is all you need!
人工智能·深度学习·神经网络·机器学习·注意力机制·线性注意力
Blossom.11816 小时前
把 AI 推理塞进「 8 位 MCU 」——0.5 KB RAM 跑通关键词唤醒的魔幻之旅
人工智能·笔记·单片机·嵌入式硬件·深度学习·机器学习·搜索引擎
2502_9271612818 小时前
DAY 40 训练和测试的规范写法
人工智能·深度学习·机器学习