Amazon MLS-C01: 深度学习与计算机视觉 — 学习指南
属于 AWS Machine Learning Specialty MLS-C01 — 学习指南. 使用经过验证的答案练习: Amazon 考试中心, 或参加限时模拟考试: ExamRoll.io.
架构、迁移学习和模型选择
像 ResNet 和 Inception 系列这样的卷积主干网络仍然是视觉任务的主力模型:ResNet (50/101) 为深层特征层级提供稳定的残差学习,而 Inception 模块提供多尺度特征聚合,有助于处理不同尺寸的目标。对于现代的权衡取舍,EfficientNet 和 MobileNet 优先考虑 FLOPs 与准确率的比值,使其成为移动端/边缘设备的有力选择。在 AWS 的实践中,应从预训练的 ImageNet 权重(在 TorchVision、TensorFlow Hub 或通过 SageMaker 训练容器中可用)开始,通过替换分类头来应用迁移学习,对主干网络层使用远低于常规的学习率,而对新初始化的头使用较高的学习率。对于小数据集,冻结早期层,然后分阶段逐步解冻,以避免灾难性遗忘。决策标准:对于大型数据集和对延迟不敏感的端点(ml.p3 或 ml.p4 实例),选择更重的骨干网络(ResNet101, Inception-ResNet);当通过 SageMaker Neo 或 AWS IoT Greengrass 部署到资源受限的设备时,选择轻量级骨干网络(MobileNetV3, EfficientNet-lite)。一个常见的陷阱是,在微调时使用与从头开始训练时相同的高学习率;而应采用判别性学习率,使用权重衰减,并通过监控特征空间层激活值和验证损失中的过拟合信号来验证可迁移性。
训练实践、数据增强和数据集/标注注意事项
高质量的标注数据是构建可靠视觉模型的基础。使用 Amazon SageMaker Ground Truth 构建使用边界框、多边形或语义掩码的标注工作流,并强制使用私有工作团队、IAM 限制和 S3 KMS 加密来满足数据访问控制要求。通过共识和审查轮次来减少标签噪声,并使用主动学习来优先处理模糊或罕见的样本。对于小型或不平衡的数据集,采用激进且适合任务的数据增强:光度变换、随机裁剪、旋转,以及用于检测的 Cutout、Mixup 或 Mosaic 增强;使用类别平衡采样、Focal Loss 或类别加权的交叉熵来解决严重的类别不平衡问题。划分数据以避免泄露:对于用户或商店级别的依赖关系,应执行分组或基于时间的划分,而不是简单的随机划分;一个常见的陷阱是在训练/验证/测试集之间泄露了未来的时间戳或同一物体的多张图像。对于医疗或受监管的数据,应为 SageMaker 训练作业启用网络隔离,使用 KMS 加密 S3,通过 VPC 端点限制 Notebook 访问,并使用 Secrets Manager 轮换凭证。使用 SageMaker Experiments 跟踪实验和指标,以关联数据增强、学习率和正则化选择的效果。
目标检测与分割:架构、指标和陷阱
目标检测的选择包括用于实现实时吞吐量的单阶段检测器(如 YOLO 和 RetinaNet),以及用于获得更高准确率和更好小目标定位效果的两阶段检测器(如 Faster R-CNN)。添加特征金字塔网络 (FPN) 以改善多尺度检测;使用 Mask R-CNN 或 DeepLabv3+ 执行实例分割和语义分割任务。锚点 (Anchor)、IoU 阈值和非极大值抑制 (NMS) 对结果有重大影响:根据数据集的目标尺度调整锚点的大小和宽高比,并为正/负样本分配选择合适的 IoU。评估必须使用不同 IoU 水平下的 mAP(AP50、AP75)以及每个类别的召回率/精确率曲线——仅仅依赖准确率会掩盖定位失败的问题。在 AWS 工作流中,使用带有 PyTorch/TensorFlow 容器的 SageMaker 训练来支持自定义架构,将带有 Ground Truth 清单文件的数据集存储在 S3 中,并使用 SageMaker Processing 作业进行验证。常见的陷阱包括在推理时使用过大的输入尺寸(这会增加延迟),或忽略目标数量上的类别不平衡;优化的方法包括应用特定类别的数据增强、使用加权损失,或采用两阶段训练(即在一个通用检测器之后跟上一个逐类别的精调器)。对于生产环境,将模型导出为 ONNX 或 TorchScript 格式,并验证导出模型的输出与训练时模型的输出是否一致,以避免算子不匹配的问题。
面向 GPU 和边缘的推理优化、部署与监控
推理优化需要对整个管道进行性能分析,而不仅仅是 GPU 计算部分。GPU 利用率低通常源于受 CPU 限制的预处理、小批量大小、同步端点的延迟或 I/O 等待。使用 SageMaker Debugger 和 CloudWatch 指标进行性能分析以识别瓶颈,然后采取补救措施:增大批量大小或使用异步推理;将模型转换为 TorchScript/ONNX 并在由 NVIDIA 支持的实例上启用 TensorRT 优化;在 p4/p3 实例上使用混合精度(AMP/bfloat16);使用 SageMaker Neo 针对目标硬件进行编译,或部署 Elastic Inference 为 CPU 实例附加部分加速以实现中等吞吐量。对于边缘部署,使用 SageMaker Edge Manager 或 AWS IoT Greengrass 部署由 Neo 编译的模型,应用量化和剪枝来缩小模型大小,并在可能的情况下运行设备端批处理。配置 SageMaker 多模型端点或预置并发来处理冷启动,并使用基于 GPU 内存利用率和请求延迟的自动扩展策略。此外,启用 Model Monitor 来检测输入数据漂移,并使用 SageMaker Model Registry 进行受控的模型晋升;常见的陷阱包括使用 Neo 不支持的操作编译模型,或忘记为私有 S3 访问预置 IAM 角色和 VPC 端点,这会导致部署失败。
实践问题:用例场景
场景: QuickServe Corp 运营着一个本地销售点(on-prem point-of-sale)系统,并使用 SageMaker 进行模型训练和推理;来自商店摄像头的图像存储在启用了 KMS 加密的私有 S3 存储桶中。他们希望建立一个生产管道来检测收银台的排队长度,并将一个轻量级模型部署到边缘设备以进行实时警报。
挑战: 构建并部署一个准确、低延迟的排队计数模型,该模型需尊重数据安全(私有 S3、KMS),能在受限的边缘硬件上运行,同时能够使用新的已标注数据进行安全地再训练。
推荐方法:
- 使用预训练的 MobileNetV3 主干网络(在 SageMaker PyTorch 容器中),在存储于 KMS 加密的 S3 中的、由 Ground Truth 标注的边界框上进行微调,从而训练一个检测器;按商店进行分组拆分以避免数据泄露。
- 使用数据增强(随机裁剪、水平翻转、亮度抖动)和 focal loss 来处理排队与非排队帧之间的类别不平衡问题;使用 AP50 和每个类别的召回率进行验证。
- 将模型导出为 TorchScript/ONNX,使用 SageMaker Neo 针对边缘设备进行编译,并通过 AWS IoT Greengrass 或 SageMaker Edge Manager 进行部署,同时进行模型签名并配置仅允许访问必要 S3 工件的 IAM 角色。
- 通过定期批量上传到 S3 来监控性能,运行 SageMaker Processing 作业进行漂移检测,并使用 S3 中的版本化数据集和 Model Registry 在 SageMaker 中进行再训练,同时对边缘设备进行受控部署。
基本原理: 此方法利用高效的迁移学习和针对特定设备的编译来满足延迟和大小的限制,通过 KMS 和 IAM 强制执行安全性,并实现了一个受监控的再训练循环来保持准确性,同时防止数据泄露。
← 建模 — 监督式与非监督式 (经典 ML) · 所有领域 · 自然语言处理与语音 →
练习这些题目 → · 在 ExamRoll.io 上限时练习 →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
通过考试 →