半监督食物图像分类项目

半监督食物图像分类项目 模型完成的任务是识别11种不同的食物比如面包、牛奶、蔬菜等。监督学习需要大量的“图片 标签”数据但数据的标注很费时间半监督学习只用少量的有标签数据 大量无标签的数据只有图片没有标签来训练模型效果比只用少量有标签数据好很多模块1固定随机种子保证结果可复现机器学习很多的随机操作模型参数的随机初始化训练时打乱数据顺序数据增强的随机裁剪/旋转如果没有固定随机种子这次跑过的结果和下次跑的结果不可能一样。固定种子后可以是可以复现方便调参和验证改进。模块2数据准备与预处理2.1数据增强让模型“见多识广”为什么要做数据增强数据增强就是通过随机裁剪、旋转把1张图片变成 “多张不同但相似的图片”增加数据的多样性防止模型死记硬背过拟合 让他学到更通用的特征比如“面包的形状”而不是 “这张特定图片里的面包”验证集为什么不要做数据增强验证集用来考试的要考模型的真实水平所以不能给它“做过手脚的题”要用原始、标准的图片。无标签数据为什么返回的是原始图后面的半监督学习要用到“原始图片”来生成伪标签所以先存一份数据是怎么存的代码首先将所有的图片读进内存而不是训练时再从硬盘读取。原因数据集比较小这样做的训练速度更快不要每次都等硬盘读取。模块3模型构建1、卷积层相当于眼睛复制看图片的特征。第一层卷积看“边缘”比如面包的轮廓 后面的卷积看“更复杂的特征”比如面包的纹理、蔬菜的颜色。2、BatchNorm2d:像“给大脑按摩”让每一层的输入分布稳定防止梯度小时/爆炸简单说就是防止“大脑学习不进去”。3、ReLU激活函数引入“非线性” 如果没有他模型就像“只会做加减乘除的计算器”不会复杂的食物分类。4、Pooling: 把图片进行缩小保留最明显的特征减少计算量5、全连接层把前面提取的特征综合起来输出“这张图是11种食物的概率”为什么使用迁移学习加快模型的训练速度预训练使用VGG模型他是一个已经训练好的模型我们只要微调最后几层。模块4半监督学习“伪标签”让无标签数据发挥作用4.1什么是“伪标签”原理先用有标签数据训练一个初始模型用他预测无标签数据把预测概率超过0.99非常确定的样本跳出来把模型的预测结果当作“伪标签”加入训练集。4.2为什么只选概率 0.99的样本模型刚开始的时候训练的不好预测的结果可能不是很准确因此只选择“非常确定”的样本才能保证伪标签带概率是对的 —— 如果把错的伪标签加进去模型会“学坏”。模块5模型训练不断的卷积