ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

TensorFlow EfficientDet Det-AdvProp 全解析:对抗性数据增强原理、精度与鲁棒性评测及复现指南

TensorFlow EfficientDet Det-AdvProp 全解析:对抗性数据增强原理、精度与鲁棒性评测及复现指南 示例工程【免费下载链接】examplesTensorFlow examples项目地址https://gitcode.com/gh_mirrors/exam/examples点击查看免费下载Det-AdvPropDetection Adversarial Propagation是一种专为目标检测器微调阶段设计的对抗性数据增强技术由 Xiangning Chen、Cihang Xie、Mingxing Tan、Li Zhang、Cho-Jui Hsieh 与 Boqing Gong 提出并发表于 CVPR 2021。与 vanilla 训练和 AutoAugmentAA相比它能在多种设置下稳定地提升检测精度使模型在干净图像上更准、对图像损坏corruption与域迁移domain shift更鲁棒。本文基于 TensorFlow examples 仓库中 Det-AdvProp.md 及其配套的 det_advprop_tutorial.ipynb、hparams_config.py 等源码完整梳理 Det-AdvProp 的核心机制、三组评测数据并给出可复现的下载、评估与使用流程帮助你直接上手这套更准更稳的 EfficientDet 训练方案。1. Det-AdvProp 是什么面向检测器微调的对抗数据增强在 README.md 的项目更新记录中2021-03-25官方明确说明了这套方法的定位Added Det-AdvProp model checkpoints. The obtained model is not only more accurate on clean images, but also much more robust against various corruptions and domain shift.也就是说Det-AdvProp 与传统的 vanilla 训练以及 AutoAugment 的区别不在于网络结构而在于训练/微调时的数据生成方式vanilla 训练仅做随机水平翻转、尺度抖动jitter等基础变换AutoAugment从离线搜索到的策略集合中随机采样一组图像变换算子颜色、几何等逐样本施加Det-AdvProp在微调阶段对输入图像施加有目标的对抗扰动adversarial perturbation把对抗样本当作一种特殊的数据增强信号参与梯度更新从而让检测器在保持干净图像精度的同时获得对扰动与分布偏移的天然免疫力。从论文与仓库实践看Det-AdvProp 的适用场景是在已有预训练检测器基础之上做微调/续训它并不是一种从零训练的新范式因此与 EfficientDet 家族的 D0D5 各档模型组合使用效果最佳可以理解为给微调过程加一剂鲁棒性强化针。1.1 关键前提输入归一化方式的改变这是使用 Det-AdvProp 模型时最容易踩坑、也最需要理解的一点。原文档中特别标注Unlike the vanilla EfficientDet that scales the image with mean and std, here we scale the input to the range of [-1, 1] to make it easier for performing adversarial attack.普通 EfficientDet 使用 ImageNet 的 mean/std 做输入归一化而 Det-AdvProp 系列把输入直接缩放到[-1, 1]以便于在有限范围内构造有意义的对抗扰动。这一差异在仓库源码中可以直接印证hparams_config.py 中默认配置为h.mean_rgb [0.485 * 255, 0.456 * 255, 0.406 * 255] h.stddev_rgb [0.229 * 255, 0.224 * 255, 0.225 * 255] h.scale_range False即默认vanilla用 ImageNet 统计量归一化scale_rangeFalse。而在 det_advprop_tutorial.ipynb 的评估命令中必须显式覆盖为--hparamsmean_rgb0.0,stddev_rgb1.0,scale_rangeTrue即均值置 0、方差置 1、开启scale_range实现输入落在 [-1, 1] 区间。使用提示如果你直接用 Det-AdvProp 的 checkpoint 推理/评估却忘记加上述 hparams 覆盖输入归一化不匹配将导致精度大幅下降。同理微调新数据时也应沿用这套归一化配置从源码结构看scale_range开关正是用于控制是否把输入缩放到 [-1, 1] 的归一化分支。2. 干净图像上的精度Det-AdvProp AutoAugment 的组合拳以下表格完整收录了论文与文档中公布的、以 Det-AdvProp AutoAugmentAA联合训练得到的模型在 COCO 上的表现AP 均针对 COCO test-dev2017APval为验证集精度全部为单模型单尺度、无集成与测试时增强的结果ModelAPtestAP50AP75APSAPMAPLAPval#params#FLOPsEfficientDet-D0 Det-AdvProp AAckpt / test-dev35.354.137.812.739.953.235.13.9M2.54BEfficientDet-D1 Det-AdvProp AAckpt / test-dev40.960.044.119.145.657.240.86.6M6.10BEfficientDet-D2 Det-AdvProp AAckpt / test-dev44.363.547.923.548.559.944.38.1M11.0BEfficientDet-D3 Det-AdvProp AAckpt / test-dev48.067.152.228.151.862.847.712.0M24.9BEfficientDet-D4 Det-AdvProp AAckpt / test-dev50.469.554.930.954.364.450.420.7M55.2BEfficientDet-D5 Det-AdvProp AAckpt / test-dev52.571.857.234.655.965.252.233.7M130B对照 README.md 中的 vanilla 结果可以直观看出增益以 D0 为例vanilla 的 test AP 为 34.6Det-AdvProp AA 提升到 35.3D1 从 40.5 提升到 40.9D3 从 47.2 提升到 48.0D5 从 51.5 提升到 52.5。所有档位均在保持参数与 FLOPs 不变的前提下获得稳定的精度提升这正是仅改变训练数据策略、不改网络结构带来的红利。模型权重与 test-dev 预测结果可从官方 checkpoint 仓库按如下地址模式下载表格中的 ckpt 与 test-dev 链接即指向这些文件# 例如下载 efficientdet-d1 的 Det-AdvProp 权重 wget https://storage.googleapis.com/cloud-tpu-checkpoints/efficientdet/advprop/efficientdet-d1.tar.gz tar zxf efficientdet-d1.tar.gz3. 对常见图像损坏Common Corruptions的鲁棒性仅看干净图像精度还不够Det-AdvProp 的核心卖点是鲁棒性。原文档基于 COCO-C 数据集对该论文中定义的一类评测基准包含高斯噪声、雪景等常见图像损坏类型测试了检测器对损坏图像的抵抗能力。评测指标为 mAPvanilla 训练与 Det-AdvProp AutoAugment 的对比如下ModelmAPEfficientDet-D021.4 Det-AdvProp AA22.71.3EfficientDet-D124.4 Det-AdvProp AA26.72.3EfficientDet-D226.7 Det-AdvProp AA28.92.2EfficientDet-D328.8 Det-AdvProp AA32.03.2EfficientDet-D430.1 Det-AdvProp AA33.93.8EfficientDet-D531.4 Det-AdvProp AA35.03.6几点值得注意的规律增益随模型规模递增从 D0 的 1.3 一路增长到 D4 的 3.8说明在更大、更强的模型上对抗性数据增强带来的鲁棒性红利更明显相对提升幅度可观以 D5 为例mAP 从 31.4 提升到 35.0相对提升约 11.5%这是白赚的鲁棒性与那些牺牲干净图像精度换取鲁棒性的对抗训练不同第 2 节的数据表明 Det-AdvProp 在损坏图像上的增益不与干净图像精度冲突甚至两者兼得。如果你的落地场景包含摄像头蒙尘、天气恶劣、传感器噪声、压缩伪影等现实干扰COCO-C 上的这组数字说明 Det-AdvProp 模型在真实环境里可能比 vanilla 模型表现更稳。4. 对域迁移Domain Shift的鲁棒性域迁移测试的设计非常直白PASCAL VOC 2012 只有 20 个类别远少于 COCO 的 80 类且图像内容、目标框的尺寸与位置分布都与 COCO 不同。作者不做任何微调直接用训练好的检测器在 VOC 数据集上推理并沿用 COCO 的评估指标来衡量模型的迁移能力ModelmAPAP50AP75EfficientDet-D055.677.661.4 Det-AdvProp AA56.20.678.30.762.30.9EfficientDet-D160.882.066.7 Det-AdvProp AA61.30.582.50.567.60.9EfficientDet-D263.383.669.3 Det-AdvProp AA63.60.384.00.470.00.7EfficientDet-D365.785.371.8 Det-AdvProp AA66.40.785.90.672.81.0EfficientDet-D467.086.073.0 Det-AdvProp AA67.80.887.01.074.31.3EfficientDet-D567.486.973.8 Det-AdvProp AA68.71.388.01.175.41.6在 VOC 上所有档位的 mAP 都有提升且越大的模型提升越明显D5 达到 1.3 mAP、1.6 AP75。对于需要一个模型打多个数据域的场景——比如先在 COCO 上预训练、再迁移到私有数据集做冷启动评估——这组数据说明 Det-AdvProp 权重是比 vanilla 权重更理想的迁移起点。5. 从零复现官方教程的完整实验流程仓库自带的 det_advprop_tutorial.ipynb 就是官方给出的复现脚本可在 Colab GPU 上直接跑通整个流程分为三步5.1 下载 checkpoint 与测试图教程默认以efficientdet-d1为例代码内可通过MODEL变量切换 D0D5 任意一档MODEL efficientdet-d1 # 可替换为 efficientdet-d0 ~ d5 def download(m): if m not in os.listdir(): !wget https://storage.googleapis.com/cloud-tpu-checkpoints/efficientdet/advprop/{m}.tar.gz !tar zxf {m}.tar.gz ckpt_path os.path.join(os.getcwd(), m) return ckpt_path ckpt_path download(MODEL)同时会下载一张示例图片img.png并准备可视化参数min_score_thresh0.35、max_boxes_to_draw200等随后把图片最长边按 128 取整得到推理分辨率。5.2 用 TensorBoard 检查模型图结构!python model_inspect.py --model_name{MODEL} --logdirlogs %load_ext tensorboard %tensorboard --logdir logs这一步骤通过 model_inspect.py 把模型结构导出到 TensorBoard可以直观确认 EfficientDet 的 backboneEfficientNet、BiFPN 特征融合网络与检测头结构是否与 checkpoint 匹配。5.3 在 COCO val 上做正式评估把 val2017 图像与标注转成 tfrecord 后运行注意末尾的归一化 hparams 覆盖!python main.py --modeeval \ --model_name{MODEL} --model_dir{ckpt_path} \ --val_file_patterntfrecord/val* \ --val_json_fileannotations/instances_val2017.json \ --hparamsmean_rgb0.0,stddev_rgb1.0,scale_rangeTrue教程中记录的 D1 实际输出为AP 0.4084、AP50 0.5991、AP75 0.4402与文档表格中 D1 的 APval 40.8、AP50 60.0、AP75 44.1完全吻合可以作为你本地复现是否成功的对照基准。注意这段评估在教程环境里耗时约 17 分钟D1D0 约 10 分钟。参数说明参数含义Det-AdvProp 推荐值modeeval评估模式对比训练用train/train_and_evalevalmodel_dircheckpoint 所在目录解压后的模型目录val_file_pattern验证集 tfrecord 的 glob 模式tfrecord/val*val_json_fileCOCO 标注 JSON 路径annotations/instances_val2017.jsonmean_rgb0.0,stddev_rgb1.0覆盖默认 ImageNet 统计量将归一化均值/方差置为 0/1必须设置scale_rangeTrue开启输入缩放到 [-1, 1] 的归一化分支必须设置6. 项目中的配套资源与使用建议在 TensorFlow examples 仓库中与本主题相关的资源路径如下均可直接深入阅读本文档本体Det-AdvProp.md精度与鲁棒性数据的权威出处官方复现教程det_advprop_tutorial.ipynbEfficientDet 总览与全部模型权重README.md其中 2021-03-25 的更新条目正式引入 Det-AdvProp 权重超参数定义归一化、AutoAugment 策略、学习率、anchor 等默认值hparams_config.py训练/评估入口main.py 与 train_lib.py数据加载与增强管线dataloader.pyAutoAugment 策略的施加位置。最后给出三条实操建议直接复用权重如果只想拿到更准更稳的检测器直接下载第 2 节表格中的 Det-AdvProp checkpoint 用于推理即可记得在任何推理/评估命令里带上mean_rgb0.0,stddev_rgb1.0,scale_rangeTrue作为微调起点在私有数据集上做迁移学习时建议以 Det-AdvProp 权重替代 vanilla 权重作为初始化参考 README.md 中 VOC 微调一节的做法使用--ckpt而非--backbone_ckpt并结合var_freeze_expr冻结 backbone 与 BiFPN 部分注意输入归一化一致性从 hparams_config.py 可以看到默认autoaugment_policy None如果你在 Det-AdvProp 基础上进一步自行微调需要显式配置 AA 策略与归一化参数避免与官方评测口径不一致。综上Det-AdvProp 提供了一条不加网络复杂度、不加推理开销的精度与鲁棒性双增益路径干净图像 AP 全面提升COCO-C 损坏场景 mAP 最高提升 3.8VOC 域迁移 mAP 最高提升 1.3且所有实验数据与配套教程都已在仓库中开放可直接下载权重、对照复现。赞分享示例工程【免费下载链接】examplesTensorFlow examples项目地址https://gitcode.com/gh_mirrors/exam/examples点击查看免费下载相关推荐革命性隐私保护工具AI-auth-toolkit零知识认证的终极指南革命性隐私保护工具AI auth toolkit零知识认证的终极指南 在当今数字化时代随着生成式AI技术在金融、电信等受监管行业的广泛应用如何在保障创新的上一篇OGNL表达式实战Apache Struts数据访问与处理技巧下一篇使用NVIDIA GLM-5-NVFP4构建企业级RAG系统完整架构设计与实现创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表