一个口罩识别模型的完整旅程:从采集图片到交付上线
这是一个真实客户场景的完整还原(细节已脱敏):某连锁药房需要在全部门店执行口罩合规。本文按时间线记录这个二分类模型从零到上线的每一步、每一步的产出物与耗时。
目标与契约
消费方是客户的识别系统:输入单张人员抓拍图,输出"戴口罩概率"。书面契约三条——输入 1×3×64×64 RGB 除以 255;输出 2 维 logits(softmax 由系统侧调用);输出末位为"未戴口罩"概率,阈值 0.5。契约先行,后面所有环节都围绕它执行。
全流程时间线
- 第一天:采集与建库;
- 第二天:标注与质检;
- 第三天:训练与调参;
- 第四天:导出验证与加密交付;
- 第二周:上线试运行与 v2 迭代。
第一天:采集与建库
从门店现有摄像头导出两周内不同时段的抓拍约 900 张(佩戴口罩与未佩戴口罩大致各半),打包上传。平台在线解压,按文件哈希去重后剩 863 张。管理员创建数据集时预设两个类别——with_mask(戴口罩)、without_mask(未戴口罩)——注意顺序:消费方要求"未戴"在输出末位,而字典序恰好满足,创建时即锁定。压缩包子目录名与预设类别一致的图片自动打标入库。
第二天:标注与质检
两名标注员在工作台对自动打标兜不住的散图点选类别,自由填类名的入口不存在。规范里写明:口罩拉到下巴按"未戴"标,模糊图进待定池。当天完成全部标注,管理员抽检 20 张全部合格,顺手把采集混进来的 17 张无关图(测试截图等)批量删除。
第三天:训练
创建训练任务:轻量分类底座、输入 64×64、30 个 epoch、batch 32,提交给内网 GPU Worker。训练 38 分钟完成,验证集(分层抽样 20%)top1 精度 96.4%,逐 epoch 曲线在管理端实时可见。第一次精度只有 91%,排查发现"未戴"类里混入一批戴口罩但被口罩遮住大半张脸的远景图——按规范移入待定池后重训,达到 96%。
第四天:验证与交付
一键导出 TorchScript:导出工具自检(输出 shape、与训练基准对位、加载回归)全部通过;三端一致性验证(Python/Go/Java 各 20 张对比)全绿;末位类别校验确认 without_mask 在最后一位。生成 AES 加密交付包,为客户识别系统签发一年期 License。消费方按他们文档里的验收脚本 torch.jit.load 后喂入随机张量,输出形状 [1,2]——验收通过。
上线后的迭代
试运行一周,收集误判样本 41 张:多为口罩拉到下巴、用手半遮的场景。回流平台标注后,与原数据合并训出 v2,验证集精度 97.1%,同样的门禁走完再交付替换。此后每季度例行迭代一次。全程没有算法工程师驻场。
三条经验
- 契约先行:输入输出与类别顺序在第一天就写下来,能省掉最贵的返工;
- badcase 是最值钱的数据:v2 的提升全部来自试运行回流的那 41 张图;
- 流程走通比单点精度更重要:第一次跑通的流水线,后续新场景按天复制。
相关阅读:数据标注怎么做才高效、模型交付的三道关。
想在自己的数据上训练这样的模型?训练平台私有化部署 + 成品模型货架,总有一款适合你。
联系我们获取方案 →