没有合适的资源?快使用搜索试试~ 我知道了~
pytracking代码训练算法编写
资源推荐
资源详情
资源评论
离线训练
算法编写
路径设置 实例化settings类
定义run(settings)数据集
定义数据变换方式 对数据集采样
对采样数据预处理定义LTRLoader
实例目标函数
实例化优化器
定义一个settings类 给settings增加module_name
script_name
project_path
定义run函数
将settings参数传入
首先定义数据集父类
数据集子类中继承并承复写
父类中的对外四个对外函数
对全体图像数据执行一定概率的灰度变换
对训练图像亮度增强,并转化为tensor数据
对训练图像正则化
数据采样类继承pytorch
自带数据集处理类
根据概率设定,采取不同数据集中的图像
创造一个训练器,完成最终网络的
训练
通过类内函数确定有效数据(目标可见)
设计采样函数,选取采样图像id,
每个视频图像id间隔30-50
先对所有图像进行联合变换(灰度变换)
对test图像的bbox增加中心偏移和尺度高斯噪声
以增强的bbox为中心,截取目标周围面积25倍
区域的图像出来,不够部分用padding补全
本类函数继承pytorch的类dataloader
优化网络的时候,
使用不同的学习率表
有助于网络的快速优化
可以设计阶梯学习率表,
余弦学习率表,
自定义函数学习率表,
循环学习率表,
热重启学习率表
编写脚本进行训练
首先创建一个基类训练器
Backbone
定义一个基类actor5S
实例化的时候,将上述定义好的
net,objective,损失权重
LTR训练器子类
run_tracker脚本编写
model
定义actor
设计学习率表
通常使用Adam优化器
将需要优化的参数和学习率设置好,进而优化
获取众多参数
构建评测数据集实例化跟踪器
定义数据集抽象类
继承数据集父类,生成子类数据集
通过函数的方式实例化数据集
settings类中增加路径信息
settings中设置GPU
路径设置部分如果找不到local.py就创建localpy
初始化路径和数据读取器
判断是视频(lasot)还是图像(coco)
返回数据集的名称
获取数据集中视频的个数
获取序列的信息
最关键是get_frames
给settings增加参数属性
关于训练用到的所有类都将
在这个文件里实例化
数据集,数据采样,数据增强,数据预处理
数据加载器,网络函数,目标函数,actor执行器
优化器,学习率表,训练器:最后执行开始训练
对测试图像只转化为Tensor,然后正则化
最后获得图像数据字典
根据截取的图像块中心与增强bbox中心一致的关系,
计算出截取之后目标的新ground_truthbbox
其中对bbox增强指的是对test增强,训练图像的bbox没增强
从测试帧bbox中产生N个bbox,已经其与原gt之间的IOU
整理好数据,返回数据字典
定义网络
定义一个装饰器model_constructor
来实现网络的封装
backbone:采用重新设计的resnet网络,
可以根据需要输出想要层的特征
将数据打包成batch
存放数据名字,是否是训练的
主要承当dataloader的功能
轻松实现数据多线程读取
https://zhuanlan.zhihu.com/p/30934236
网络封装了backbone和ATOMIOUnet
将backbone和iou预测期封装近ATOMnet中去
将第二第三层特征送入,将第二层网络中目标
的信息抽象成一个向里,广播相乘到第三层网络上
通过调制的方法将目标的bboxI0U预测出来
在设计自己网络的时候可以在此改掉代码
尽量减少中间变里的存储,以降低显存占用
定义网络函数
iou-predictor
resnet18
resnet34
resnet50
可以对外输出任意层的特征
内部定义backbone
定义ioupredictor
实例化ATOMnet,上述的两个网络
并定义要使用的特征层图
初始化网络
初始化权重
定义前向通道
获取调制向量,
计算调制后的特征
预则随机生成的bbox的I0U
目标跟踪和分割的目标函数都可以用
MES损失
交叉熵损失
BCE损失
L1损失
Objective目标函数要传给actor计算损失的
抽象类中定义
net属性,
目标函数属个
将网络转移到显卡
设置训练还是测试
在基类的基础上派生出
子类,子类完成具体的任务
设定不同的损失权重,
将不同值得损失加权求和,
返回1oss和状态字典
针对不同的参数设定不同的学习率,
这种方式有助于网络的优化
该基类训练器定义了训练器该有的基本函数功能
子类训练器通过复写函数的方法增加新功能
更新settings,设置检查点文件路径
保存当前训练状态,保存检查点文件
载入检查点文件,总是载入最新上一个检查点文件
训练函数
传入训练epoch?数,是否载入最新epoch,是否中断自动重启训练
载入最新检查点文件
从当前epoch+1开始训练,训练一个epoch,更新一个学习率表,保存一个检查点文
件
train_epoch
训练集每个epoch都要执行,验证集每5个epoch执行一次
在epoch内部循环加载数据集,调用__next__()函数
如果是训练集,梯度使能置True。如果是验证集,梯度使能端给False.
for函数迭代loader
将data字典放入显卡
将data字典送入actor,经过网络,计算损
失
获取到loss,stats,
如果训练集的话,
optimizer.zero_trad(),
loss.backward(),
optimizer.step()
跟踪算法,参数,多线程
评测集,视频,调试
可视化,使用服务器端口
将参数传给run_tracker函数
OTB,VOT,LASOT
got10k,nfs,tpl,uav
TrackingNet
run_video只需要实例化一个跟踪器
run_webcam只需要实例化一个跟踪器
run_tracker需要实例化一个跟踪器列表
run_experiments需要实例化一个跟踪器列表
调用跟踪器中的run_video函数
调用跟踪器中的run_webcam函数
将数据集和跟踪器和相关参数传入run_dataset函数
可以实例不同算法跟踪器
将数据集和跟踪器传入run_dataset函数
定义跟踪器tracker
这个类函数中需要传入
name,参数名,runid号
实例化环境设置信息
采用id号来确定结果
存放位置,并创建路径
然后根据name,参数名称
importmodule
在module中的__init__中
定义了跟踪器的实例化函数
由此实例化跟踪器
其中Tracker类函数封装了下列函数
get_parameters:根据name,params_.name
获取到跟踪器使用的parameters参数
run():跟踪一个视频序列
run_video():跟踪一个视频文件
run_webcam():调用电脑摄像头跟踪
run_vot()跟踪vot数据集
定义参数
参数文件存放于parameter文件夹下的
算法名称/参数名文件夹下
针对不同的数据集可能要运行不同的参数
不同的参数对算法评价指标是有影响的
实例化跟踪参数类,并给其增加属性参数
将参数封装起来,作为一个类传入网络中
实例化ATOM_ResNet18的网络
在线跟踪
算法的部分
资源评论
L893801691
- 粉丝: 15
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功