yolo如何降低loss_YOLO训练中的问题与怀疑
最近用YOLO训练过程中遇到的问题和猜测。
收敛速度比较慢
YOLO的训练比较明显的一个现象就是收敛比较慢,YOLO训练可以看作是是三个任务的联合训练,分别是:Objectness[O],一个BinaryCrossEntropy训练或者Logistic regression;Boundbox[B],一个数值回归的训练;Classification[C]任务,多类的分类任务,其实也是BCE。起码目前我观察的现象:
- O的训练:首先网络会被训练到基本都是100%的输出接近于0,后续才慢慢的收敛到接近GroundTruth。
- 同时,由于在训练过程中,B和C的任务只训练GT中objectness应该为1的点,一张图中,非目标区域的都是不参与训练的。
- 由于O任务的训练的收敛速度较慢,在O收敛的比较好之前,B和C的任务很难进一步学习。
O的收敛
其中1的问题,还是FocalLoss期望解决的问题,那就是正反案例的极度不平衡的问题。造成初期大量的负样例将整个O的输出推到了接近0的位置上。后续的训练才会慢慢的调整,让正样例能够准确预测。
这一过程,会浪费了不少算力。怎样让网络更加有效的训练?我能想到的是:
- Loss的计算加入类似FocalLoss的方法,让训练更加倾向于那些预测比较偏离的案例。当然原文已经试过了这个手段,但是是不是需要更加有针对性的调整?类似的试验我也进行过,但是目前也没有很明确的结论。
- 采用一些针对性的采样手段,我目前知道的比如SNIPER,让训练过程在采样阶段就忽略掉作用不大的图像区域,集中算力训练难度较大的。
BC任务
BC任务需要等待O的训练问题,第一直觉应该是加大BC在整体loss上的比重,让他们可以早点快速学习。同时,带来的问题是,可能会对O的训练有负面影响。不过这样的方法也只是在训练中多了个人肉调参的手段,是否有更加根本的解决方法?
XYWH尺度不一致
由于XY在YOLO用通过Sigmoid函数做了限制,然而WH的预测没有。这样的情况是,这两者的尺度不是一个量级的,那么在Loss中的比例,也就不可避免的有了倾向性。当然,随着训练的继续,两者的Loss会慢慢的接近。但是,这个问题和前一点中BC需要等待O训练是一个性质。直觉上看,应该也会拖慢收敛速度,或者起码,两个任务的收敛不是在一个步调上。
这样尺度不一致的问题,可以通过选择更加合理的anchors来缓解。让训练集的目标框的大小更加和anchors贴近,会缩小WH的尺度,整体上XYWH的预测范围会更加接近。
同时WH的预测在目标框小于和大于对应anchor的两个区间的尺度的变化速度是不一致的,这是ln函数的特性造成的。我的怀疑是,这个特性,会不会给网络的训练带来负面影响?
XY的Sigmoid先验
由于Sigmoid的特性,在极值附近和中间值附近的训练难度是完全不一样的,那么我们可以想象,对目标中心位置的预测的难度是越靠近边缘越大的。
这样的一个先验的限制,是不符合数据集合分布的,目标出现的位置应该是比较平均的。
Anchor数量
Anchor的数量选择会带来一个平衡问题。需要根据具体的数据集来确定:
- 一个目标框大小变化不大的数据集,比较多的anchors会让B任务的训练数据分散,造成每个anchor的预测得不到充分的训练;不如少点anchors,让每个anchor都分配更多的数据来训练。
- 变化较大的数据集,如果anchors数量太少,没法控制好WH的预测范围。训练过程中,偶尔的一个错误,会让B的loss变得太大(尤其是用MSE这种对outlier比较敏感的loss)破坏原本稳定的训练。
“单点确认”可能会降低召回
YOLO的O任务是针对目标中心点的,这也是因为B任务中XY只负责预测对应grid里的中心位置。
不过这样的限制显得过于严格了,网络未必可以确认feature map中哪个位置对应目标的正中,在feature map尺寸比较大的情况下,这个问题会更加明显一些。
另外一种情况是,目标框的中心点并不是图中目标的中心点:比如单手展开的行人,标注的目标框的中心点往往都已经不在目标主体上了。这个也会在训练的过程中给网络带来一些混淆。
yolo如何降低loss_YOLO训练中的问题与怀疑相关推荐
- yolo如何降低loss_YOLO详解
创新 核心思想 效果 改进 实践 1. 创新 YOLO将物体检测作为回归问题求解.基于一个单独的end-to-end网络,完成从原始图像的输入到物体位置和类别的输出.从网络设计上,YOLO与rcnn. ...
- 3模型大小_分布式训练中数据并行远远不够,「模型并行+数据并行」才是王道...
选自arXiv 作者:Saptadeep Pal等 机器之心编译参与:魔王.杜伟 数据并行(DP)是应用最广的并行策略,对在多个设备上部署深度学习模型非常有用.但该方法存在缺陷,如随着训练设备数量不断 ...
- 深度学习训练中噪声减小吗_【机器学习 155】DoubleEnsemble
更新:根据大家评论区和私信的反馈,我们把文章重新更新了一版在 arxiv 上.这次更新主要修改了方法部分的叙述和其他一些typos.欢迎大家围观- 相信关注我专栏的也有很多对于金融感兴趣的同学,这里给 ...
- 神经网络训练中的Tricks之高效BP(反向传播算法)
神经网络训练中的Tricks之高效BP(反向传播算法) zouxy09@qq.com http://blog.csdn.net/zouxy09 Tricks!这是一个让人听了充满神秘和好奇的词.对于我 ...
- 为什么vue-loader设置transformasseturls无效_拓展训练中“常见的无效提问”
作为拓展训练培训师而言,提问是一项不可或缺的互动技能.它贯穿培训全过程,对提升学员学习参与兴趣度.达成课程效果有非常重要的作用.我们把那些在过程中未能实现预期目的的提问称为"无效提问&quo ...
- 简短加密_神经网络训练中回调的简短实用指南
简短加密 Callbacks are an important part of neural network training. These are actions that can be perfo ...
- 如何解决 Iterative 半监督训练 在 ASR 训练中难以落地的问题丨RTC Dev Meetup
前言 「语音处理」是实时互动领域中非常重要的一个场景,在声网发起的「RTC Dev Meetup丨语音处理在实时互动领域的技术实践和应用」活动中,来自微软亚洲研究院.声网.数美科技的技术专家,围绕该话 ...
- 深度神经网络模型训练中的 tricks(原理与代码汇总)
点击上方"计算机视觉工坊",选择"星标" 干货第一时间送达 作者丨Jack Stark 来源丨机器学习小王子 原文链接|https://mp.weixin.qq ...
- 多模态预训练中的Prompt(ALPRO,Frozen)
以往的文章更新过,背景就不再赘述: Cross-modal Pretraining in BERT(多模态预训练) CLIP,DALL-E 预训练新范式(Prompt-tuning,Prefix-tu ...
最新文章
- Ant Design Vue 表格数据按树型展示
- 【报告分享】5G赋能中国智慧城市白皮书.pdf(附下载链接)
- 微服务那么热,创业公司怎么选用实践?
- linux通过rpm和yum安装包
- Kotlin基础-对象声明和表达式
- javascript 简易时钟
- matlab 半方差分析,地统计学半方差分析几个名词含义说明
- 编程语言常见符号合集
- sql server 字符串转成日期格式
- 计算机画图讲课ppt,画图教学课件
- 手机坏了微信聊天记录怎么恢复?不用怕,用这招
- (论文笔记)An Attention Enhanced Graph Convolutional LSTM Network for Skeleton-Based Action Recognition
- 在python中怎么定义一个范围_如何定义范围
- 华为鸿蒙麒麟玉兔_华为注册整本山海经?操作系统取名鸿蒙芯片取名麒麟
- CollageIt 3 Pro for mac(拼贴精灵3专业版)
- VB--. 和 ! ?
- geemap的详细安装步骤及环境配置
- java设置打印机默认纸张A4
- 新媒体管家插件永久停服了
- appium、夜神模拟器 环境配置 出现报错 整理及其解答