尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

深度学习复试项目-06:对05项目包装、面试问答

深度学习复试项目-06:对05项目包装、面试问答 项目归纳用于自己回忆项目内容项目目的面向移动端设备拍摄的实景图像解决实际场景中标注样本稀缺、人工标注成本高的问题。采用伪标签半监督学习方案利用少量标注样本搭配大量无标注实景图像完成 11 类物体分类。使用 ResNet18 骨干网络完成算法验证缓解小样本场景下模型过拟合、泛化能力不足的问题。项目过程数据处理图像统一缩放至 224×224训练集使用随机增强验证 / 无标签集关闭随机变换规避数据泄露工程封装手写 PyTorch 自定义 Dataset、DataLoader同时兼容有标签、无标签两套数据源固定全局随机种子保证实验可复现模型搭建使用 ResNet18 骨干网络加载 ImageNet 预训练权重完成迁移学习半监督训练模型对无标签数据推理设置高置信阈值筛选可信伪标签样本迭代扩充训练集辅助训练训练流程交叉熵损失SGD 优化保存最优验证精度模型绘制 acc/loss 训练曲线工程排错修复伪标签索引错乱、种子不生效、transform 混用带来的评估失真 bug。项目经历放在简历描述基于伪标签半监督学习的移动端实景物体分类模型 | 项目负责人项目介绍针对移动端采集实景图像时人工标注代价高、标注样本不足的现实问题构建伪标签半监督图像分类方案。依托少量标注样本结合大量无标注实景图像实现 11 类实景物体分类。采用 ResNet18 骨干网络完成算法验证从零搭建 PyTorch 深度学习流水线完成图像预处理、自定义数据集封装、迁移学习建模、高置信伪标签筛选、训练验证可视化全流程开发提升小样本场景下模型分类精度与鲁棒性。技术栈Python、PyTorch、Torchvision、NumPy、PIL、Matplotlib核心技术 图像数据增强、图像标准化、自定义 Dataset、ResNet18 迁移学习、伪标签半监督学习、高置信样本过滤、全局随机种子固定、SGD、交叉熵损失、训练过程可视化项目成果实现同时支持有标签、无标签样本的数据流水线充分挖掘无标注图像价值缓解标注样本不足的困境设置高置信度阈值筛选伪标签过滤低置信噪声样本避免错误标签污染模型参数基于 ResNet18 结合迁移学习在小样本条件下取得较好识别效果完成半监督算法有效性验证工程层面固定全链路随机种子严格区分训练 / 验证预处理逻辑保存最优模型并可视化训练指标整套实验可复现。项目亮点重视实验可复现性设置全局随机种子固定 numpy、python、pytorch、cuda、cudnn 全部随机源消除增强、权重初始化、GPU 计算带来的随机波动伪标签做高置信过滤不盲目使用全部无标签样本宁可少选不引入噪声解决半监督学习里噪声标签损害模型的经典问题预处理逻辑严格隔离训练集开启随机增强验证集、无标签集只做固定变换不引入随机扰动防止数据泄露保证评估指标真实可信使用残差网络 ResNet18依靠残差结构缓解深度网络梯度消失问题配合迁移学习小样本任务收敛效果稳定。复试口述老师你好我的项目是基于伪标签半监督学习的移动端实景物体分类主要解决移动端采集图像时标注样本少、人工标注成本高的问题。 传统全监督图像分类很依赖大量标注数据但移动端实景图像标注成本很高所以我采用监督 伪标签半监督的训练范式同时使用少量标注样本和大量无标注图像共同训练。数据层面我手写自定义 Dataset分别封装训练、验证、无标签数据集图像统一调整到 224×224。训练集使用随机裁剪、随机旋转做数据增强提升模型鲁棒性验证集和无标签数据关闭所有随机变换保证评估客观。同时配置全局随机种子保证实验能够复现。半监督是本项目核心每轮训练之后用当前模型对无标签图像做推理把 softmax 之后概率高于设定阈值的样本筛选出来生成伪标签并入训练集迭代辅助模型训练充分利用无标注数据。模型上选用 ResNet18利用残差块结构缓解深度网络梯度消失加载 ImageNet 预训练权重做迁移学习借助预训练学到的通用视觉特征加快收敛提升小样本下的识别效果。训练上使用交叉熵损失、SGD 优化器保存验证集精度最高的模型绘制 loss 和准确率曲线完成从数据处理、建模、半监督迭代到结果分析的完整深度学习流程。通过这个项目我不仅掌握图像分类、迁移学习、伪标签半监督的原理也建立起深度学习实验工程的规范意识。面试问答技术栈问答Q项目里各个库分别做什么APython 作为基础开发语言PIL 负责图像读取、尺寸变换NumPy 做图像数组运算Torchvision 提供图像 transform、ResNet18 预训练模型PyTorch 负责自定义 Dataset、搭建网络、训练循环、反向传播、模型保存Matplotlib 用来绘制损失、准确率变化曲线。QTorchvision 的 transform 你是怎么区分训练和验证集的为什么要这么做A训练集加入随机裁剪、随机旋转等随机增强验证集、无标签数据集只用 Resize、Normalize不使用任何随机操作。 训练集随机增强用来模拟真实场景的视角、光照变化扩充虚拟样本对抗过拟合验证集不能带随机变换否则每次输入图像不一样指标会波动失真无法客观衡量模型真实性能。项目基础问答Q简单介绍你的项目。A这是面向移动端实景图像的半监督物体分类任务。移动端拍摄的实景图像标注成本高、标注样本有限我使用少量标注样本搭配大量无标注图像用伪标签的方式扩充训练数据选用 ResNet18 残差网络结合数据增强、迁移学习、高置信伪标签过滤完成 11 类实景物体分类解决小样本容易过拟合、泛化差的问题。Q为什么选用半监督直接只用标注样本不行么A只用少量标注样本做全监督训练模型很容易记住训练图像的细节发生过拟合在测试图像上效果差。移动端场景下大量无标注图片很容易获取半监督可以挖掘无标注数据的信息提升模型泛化能力更贴近真实业务场景。Q数据集是什么情况A数据集分为三部分少量人工标注训练集、独立标注验证集还有大量没有标签的移动端实景图像一共 11 类物体图像存在光照、角度、拍摄设备带来的差异对模型鲁棒性有一定要求。Q项目的主要难点是什么A第一是标注样本少小样本训练极易过拟合第二是伪标签自带噪声如果直接全部使用无标签数据错误标签会误导模型第三是图像增强、GPU 计算存在随机性如果不控制实验结果不可复现。数据与工程相关Q为什么要固定全局随机种子哪些地方会产生随机性A为了保证实验可复现。随机性来源包括数据集 shuffle、随机图像增强、网络权重初始化、CUDA 卷积运算。只固定一个种子不够需要同时固定 python、numpy、pytorch、cuda并且开启 cudnn 确定性模式保证每次运行实验结果一致。Q数据集划分和 dataloader 的 shuffle 怎么设置A训练集 shuffleTrue打乱样本顺序避免模型学到样本顺序带来的偏见验证集、无标签数据集 shuffleFalse保证样本索引固定伪标签能够和图像一一对应评估结果稳定可复现。Q图像标准化 Normalize 的均值方差是哪里来的会不会出现数据泄露A使用 ImageNet 数据集统计得到的均值和方差迁移学习场景直接使用预训练模型配套的统计参数不需要自己从本项目训练集统计不存在泄露如果是从零训练 CNN统计量只能在训练集计算验证、测试集直接复用。Q数据增强一定越多越好吗A不是。增强需要贴合真实业务场景如果增强出来的图像和真实样本分布差距过大相当于引入噪声反而会降低精度。本项目只选用旋转、裁剪这类符合真实拍摄情况的增强。模型、迁移学习Q讲一下 ResNet18 迁移学习你是怎么做的A加载 ImageNet 预训练的 ResNet18 权重替换最后的全连接分类头修改输出维度为 11对应物体类别数。我采用微调的训练方式利用预训练学到的底层纹理、边缘等通用视觉特征再适配本项目的分类任务小样本场景下效果远好于从零训练。QResNet 残差块的核心思想是什么解决了什么问题A引入短路连接把输入直接加到卷积层的输出上。解决深度网络训练时的梯度消失问题让深层网络可以收敛能够训练更深的网络。Q迁移学习为什么效果好预训练学到了什么A在大规模 ImageNet 数据集上预训练网络浅层学到边缘、纹理、颜色中层学到局部形状高层学到物体部件等通用视觉模式。迁移到本任务不需要从零学习基础图像特征只需要适配本项目的类别小样本场景收敛更快、泛化更强。Q为什么用交叉熵损失适合什么场景A交叉熵损失用于多分类任务对分类概率分布做约束配合 softmax衡量预测类别分布和真实标签之间的差距梯度计算稳定适合图像分类任务。Qmodel.train ()、model.eval ()、torch.no_grad () 分别作用伪标签推理阶段怎么设置Amodel.train () 训练模式启用 dropout、bn 训练逻辑开启梯度model.eval () 评估模式bn、dropout 切换为推理模式torch.no_grad () 关闭计算图不保存梯度节省显存。 伪标签推理的时候需要同时使用 model.eval () 加上 torch.no_grad ()不更新参数只做预测。Q怎么保存最优模型A每个 epoch 结束在验证集上计算分类准确率只保存验证准确率最高的权重不直接保存最后一轮 epoch 的模型避免保存过拟合的权重。半监督伪标签核心高频Q什么是伪标签你的伪标签实现思路A伪标签就是模型对无标签图像推理得到的预测类别。将无标签图片送入模型输出 logits 经过 softmax 得到每一类概率设置置信阈值只有最大类别概率大于阈值才把该类别作为伪标签把这部分样本加入训练集参与后续迭代训练。Q为什么要设置置信阈值阈值设置太高或者太低会怎么样A伪标签会存在错误预测也就是噪声标签。阈值太低大量置信度低的错误样本被加入训练噪声会污染模型精度下降阈值太高筛选出来的样本数量很少半监督带来的增益就会很小。本项目经过对比实验选择合适阈值做到样本数量和样本质量之间权衡。Q伪标签迭代训练会不会出现模型越训越差模型把错误伪标签不断强化的情况怎么缓解A会存在这个风险也就是噪声累积。我主要用几个手段缓解第一高置信过滤尽量少引入错误标签第二每一轮重新对无标签集推理生成伪标签不使用上一轮的旧伪标签第三依然保留原始标注样本参与每一轮训练保证真实标签的监督信号始终存在。Q伪标签和自监督学习有什么简单区别A伪标签属于半监督依赖模型输出的预测类别作为监督信号需要一部分标注样本初始化模型自监督不需要标签通过构造图像本身的代理任务比如图像旋转、拼图让网络自己学习特征不需要外部标签。拔高、项目反思Q本项目中如何对抗过拟合A1数据增强虚拟扩充训练样本2迁移学习利用大规模预训练特征3伪标签只选用高置信样本减少噪声干扰4保存验证集最优模型避免过拟合权重。Q这个项目还有哪些改进方向A1可以尝试更强的半监督算法比如 FixMatch强增强 弱增强的一致性约束 2引入早停策略验证集精度长期不提升就终止训练防止过拟合 3后续可以替换 MobileNet 系列轻量网络为实际移动端部署做准备 4做 K 折交叉验证让实验评估结果更加可靠。Q做完这个项目你的收获A一方面掌握图像分类、残差网络、迁移学习、伪标签半监督的原理与代码实现另一方面意识到深度学习实验工程规范的重要性比如控制随机性、区分训练评估预处理、处理标签噪声这些对得到可信实验结果至关重要。面试小提示面试官问 “为什么叫移动端实景图像”你就回答数据集图片来源于手机拍摄是手机采集来的图像实验先用 ResNet18 完成算法验证后续可更换轻量网络做部署不说自己已经部署完成。
返回列表