小声bb:
1、今年上半年在RC实验室培训时已经有学过python版本的opencv,这次在RM实验室培训的传统视觉分组里要求的是C++版本,因此我学起来可能有些许优势,但是我感觉我对基于深度学习的视觉更感兴趣,便选择此赛道。
2、视觉(深度)的学习任务是“熟悉各种目标检测模型”,但是按理来说不应该是先学习深度学习的基础——神经网络,然后再学习基于卷积神经网络的图像分类吗?不过由于我已在RC实验室的培训里学过了相关基础知识,再接触目标检测模型应该会稍微简单一点。
3、笔者仍是刚学没多久的新人,如有错误还请指出。
1、通常数据集会分为train_ds(训练集)和test_ds(测试集),有时也会把训练集再分为两个部分,一个用于训练,一个用于在训练过程中进行验证便于调节模型的超参数。
2、对于图像分类等多分类问题,训练数据data包含图像image和标签label两部分。
3、图像占用内存大,所以不会一次性读取,而是会把训练集划分为几个batch,每个batch包含了若干图像,大小即batch_size。
在全连接神经网络的基础上,为了增加其非线性能力,会在隐藏层加入非线性激活函数,如Sigmoid,ReLU,现在ReLU用的比较多。
然后是卷积层——对图像特征的提取或者说信息匹配,池化层——简单来说节省空间,提高计算效率。
损失函数——分类任务里常用交叉熵损失函数
优化:
学习率——不是越大越好,也不是越小越好。在调整学习速率时,既需要使其足够小,保证不至于发生超调,也要保证它足够大,以使损失函数能够尽快下降,从而可通过较少次数的迭代更快地完成学习。
优化器:SGD——随机梯度算法、Adam——目前应用广泛。
LeNet、AlexNet、VGG、GoogLeNet、ResNet
1、边界框bbox
边界框是正好能包住物体的矩形框,可以由矩形左上角的x轴和y轴坐标与右下角的x轴和y轴坐标确定;还能用矩形框中心点的坐标与矩形的宽、高给出。
2、锚框
目标检测模型中通常会在输入图像中采样大量的区域,然后判断这些区域中是否包含我们感兴趣的目标,并调整区域边缘从而更准确地预测目标的真实边界框。
3、交并比IoU
衡量生成的锚框与真实框的指标,即锚框与真实框之间的重合度。IoU越大越好。
特点:
1、是单阶段的检测算法,只需要一个网络即可同时产生RoI并预测出物体的类别与坐标。
2、把求解物体预测框的位置当做一个回归问题来处理,用Sigmoid函数,通过学习网络参数求解位置(v3好像不再用sigmoid了)。
3、对候选区域进行标注时,只将与真实框的IoU最大的那一个预测框作为标签为1的预测框,其他小的和不够大的预测框直接out。
优点:对大目标检测效果较好;速度快;可以在三种不同的尺度上进行检测;端到端的网络模型
缺点:对小目标检测效果不是很好;当两个物体靠的很近时,效果很差,最终每个网格只对应一个类别,容易出现漏检;识别物体位置精准性差,召回率低。
特点:
1、是两阶段目标检测算法,需要先产生候选区域,再对RoI做分类和位置坐标的预测。
2、目标检测的四个基本步骤,候选区域生成、特征提取、分类、位置精修,被统一到一个深度网络框架之内。
3、用区域生成网络(Region Proposal Network,简称RPN)来代替Fast R-CNN中的选择性搜索方法。RPN网络用于生成region proposals,在Faster R-CNN中称之为 锚anchors。
优点:提出了区域生成网络RPN,提升预测框生成速度;检测精度好,可以解决多尺度、小目标问题;鲁棒性好
缺点:训练参数过大,最后使用的全连接层占据了很大一部分的参数量,并且所有保留的RoI pooling处理过RoI都会经过这个全连接,并且都是单独计算的,他们之间并没有共享计算;两阶段的速度明显相较于单阶段更慢;
特点:
优点:对大目标物体的检测效果较好;运行速度快;检测精度好;
缺点:对小目标物体的检测效果不好;
注:未改版是_副本,已改版是_副本3。其余是练习的草稿
未改:
(epoch:300 学习率:0.24)
【官方】第十五届中国计算机设计大赛智慧导盲组基线系统_副本 - 飞桨AI Studio
已改:
(epoch:30 学习率:0.024)
【官方】第十五届中国计算机设计大赛智慧导盲组基线系统_副本3 - 飞桨AI Studio
附之前在kaggle训练的几种CNN模型经历:
onlyairnopods | Novice | Kaggle