
声明整个流程不要求任何代码能力仅需要一个帮你编码的大模型我用的GLM兄弟们信我试试这个方案从头开始跑两天时间效果很好这个是Deepseek给我出的好主意下一个轻量的预训练图片检测模型自己标注一些广告图片进行训练大约50-100张就可以了然后导出模型文件本地调用模型检测。告诉你的AI你要基于YOLOV11训练一个本地模型然后在现有自动化哪个地方调用。让AI实现本地训练和调用的代码并且指导你标注和训练。我的AI先给我写了个项目结构和训练代码然后它这么跟我说50 多张图已经够训练了按以下步骤操作第1步同步图片到训练目录python yolo_tools/prepare_batch.py这会把raw/中的新图复制到images/train/并显示统计。没啥意义只是帮我复制了下文件属于AI对我的关怀型代码这个还能随机按比例复制图片。第2步启动 labelImg 标注注意我python3.1.3运行这个labelImg会崩溃deepseek建议降级。实测降到3.9没办法搞个新的虚拟环境再跑下PyQt5也得降级5.15.4conda create-nlabelimgpython3.9conda activate labelimg pipinstalllabelImg-ihttps://mirrors.aliyun.com/pypi/simple/ pipinstallPyQt55.15.4-ihttps://pypi.tuna.tsinghua.edu.cn/simplepipinstalllabelImg-ihttps://mirrors.aliyun.com/pypi/simple/cdyolo_tools labelImg datasets/close_button/images/train datasets/close_button/classes.txt datasets/close_button/labels/trainclasses.txt是类别文件里面只有一行close_buttonlabelImg 操作要点笔记本装上鼠标能加速打标切换格式打开后左侧点PascalVOC按钮切换为YOLO创建类别首次提示输入类别名输入close_button画框按W键用鼠标拖拽矩形框住关闭按钮框住整个可点击区域包括背景圆/方框保存CtrlS下一张D键多关闭按钮同一画面有多个X/跳过按钮时全部标注无广告图直接D跳过不需要标注自动作为负样本标注完后调用labelimgae时传入的标签文件夹datasets/close_button/labels/train里面就有txt了。第3步标注完成后划分验证集python yolo_tools/prepare_batch.py --split-val0.2自动把 20% 已标注图片移到val/。第4步训练AI叫我运行下面的命令不过不是很放心叫它给我解释下看完发现自己想多了。AI说这点数据量不需要装显卡环境你机器也没有显卡直接运行脚本用CPU训练就行。代码设了一堆参数指定了github预训练参数yolo11n.pt。直接切到act模式相信AI。另外如果网不好记得手动下yolo11n.pt。注意到AI装了ultralytics失败了一直不肯放弃猛猛重试赶紧叫停让它直接用刚刚labelimage的python 3.9不要用3.1.3了numpy也得降级到1.xpipinstallultralytics21|tail-5pipinstallnumpy2-ihttps://pypi.tuna.tsinghua.edu.cn/simple试试环境conda run-nlabelimg39 python-cfrom ultralytics import YOLO; print(Import OK)导入成功开训。cdyolo_tools python train_close_button.py等着训练结果的时候还是叫AI总结了下它的代码train_close_button.py代码详解整体流程解析参数 → 检查数据集 → 加载预训练模型 → 训练 → 输出结果4.1. 解析参数parser.add_argument(--pretrained,typestr,defaultyolo11n.pt)关键参数参数默认值作用--pretrainedyolo11n.pt预训练权重首次运行自动从GitHub下载--epochs100训练轮数每轮遍历所有训练图片一次--batch16每次同时处理16张图CPU建议8减少内存压力--imgsz640输入图片统一缩放到640×640--devicecpu训练设备--patience20早停连续20轮验证集没改善就停止4.2. 检查数据集defcheck_dataset(data_yaml):# 检查 data.yaml 是否存在# 检查 images/train/ 和 labels/train/ 目录# 统计训练图片和标注文件数量确保数据集就绪防止训练到一半才发现缺文件。4.3. 加载预训练模型迁移学习modelYOLO(yolo11n.pt)这是关键——不是从零开始训练而是基于 COCO 数据集80类通用物体的预训练权重做微调fine-tune预训练模型已经学会了边缘、纹理、形状等底层视觉特征微调只需要教会它关闭按钮长什么样所以 50 张图就够了否则从零训练需要上万张类比预训练 学会了画画的基本功微调 学画特定风格的画4.4. 训练核心参数resultsmodel.train(dataargs.data,# 数据集配置指向 data.yamlepochsargs.epochs,# 训练100轮imgszargs.imgsz,# 图片缩放到640×640batchargs.batch,# 每批16张deviceargs.device,# CPU训练patienceargs.patience,# 20轮没改善就停止4.5数据增强参数对少样本友好mosaic1.0,# 马赛克增强4张图拼成1张增加多样性mixup0.1,# 混合增强两张图叠加混合copy_paste0.1,# 复制粘贴把关闭按钮复制到其他位置degrees10.0,# 随机旋转±10度translate0.1,# 随机平移10%scale0.5,# 随机缩放50%fliplr0.5,# 50%概率水平翻转hsv_h0.015,# 色调微调hsv_s0.7,# 饱和度变化hsv_v0.4,# 亮度变化为什么需要数据增强50 张图太少增强可以让模型看到更多变化同一个关闭按钮旋转一下、变暗一点、换个位置模型都要能识别相当于把 50 张图变出几百张的效果4.6训练过程每轮epoch的训练过程1. 读取 train/ 中的图片打乱顺序 2. 每批16张送入模型预测 3. 计算预测和标注的差异损失函数 4. 反向传播更新模型权重 5. 每轮结束后用 val/ 图片评估准确率 6. 如果连续20轮 val 准确率没提升 → 早停 7. 保存最佳权重到 best.pt4.7. 输出runs/detect/train/ ├── weights/ │ ├── best.pt ← 最佳模型验证集表现最好的那一轮 │ └── last.pt ← 最后一轮的模型 ├── results.csv ← 每轮训练指标 └── confusion_matrix.png ← 混淆矩阵训练完成后用best.pt导出 ONNX不用last.pt因为 best 是验证集表现最好的last 可能已经过拟合了。第5步导出 ONNXpython export_onnx.py提示50 张图标完大约需要 15~30 分钟。标注时注意框要完整包含整个可点击区域不要只框X线条。训练中指标可以窗口里有下面这样的输出Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size 74/100 0G 1.135 1.199 0.8149 1 640: 100% ━━━━━━━━━━━━ 4/4 6.9s/it 27.6s Class Images Instances Box(P R mAP50 mAP50-95): 100% ━━━━━━━━━━━━ 1/1 1.4s/it 1.4s all 11 11 0.986 1 0.995 0.686顺便让AI分析各种指标的含义一、训练损失Training Losses这些值只反映模型在训练集上的拟合程度越低越好但不能完全代表真实检测能力可能过拟合。指标含义可投入使用的参考值box_loss定位损失预测框与真实框的位置、大小误差。通常降到0.5 ~ 1.0左右说明框的位置基本学准了。cls_loss分类损失是否准确识别出“关闭按钮”这个类别。需要降到1.0 以下最好0.5 以下说明模型已经能确信地区分按钮和背景。dfl_loss分布焦点损失 (Distribution Focal Loss)用于精细调整框的边缘。一般降到0.8 ~ 1.2左右即可对 CPU 训练的小模型不用过于追求极致低。注意如果你的训练集和验证集完全一样你目前是 11 张验证集 训练集这些损失即使很低也不代表模型真的好必须看验证集指标。二、验证集评估指标核心关注这些直接反映模型对从未见过的新图片的检测能力是判断能否投入使用的决定性依据。指标含义可投入使用的参考值Precision §精确率模型预测出的框中有多少是对的。P 低 → 乱画框误点率高。一般要求≥ 0.7。对于广告关闭这种“不能误点”的场景最好能到0.8 以上。Recall ®召回率所有真实的关闭按钮有多少被模型找到了。R 低 → 漏过广告。至少≥ 0.7。如果要求不高0.6 也可接受但会漏掉一些广告。mAP50最重要的综合指标在“预测框与真框重叠 ≥50%”就算对的标准下平均检测精度。≥ 0.7 可初步试用≥ 0.85 可放心使用。这是你判断模型是否“学会”的核心指标。mAP50-95更严格的综合指标要求重叠度从 50% 到 95% 都很好。小数据集训练通常只能到0.4 ~ 0.6不必强求。mAP50 过关即可投入试用。如果训练结束时100 epoch能接近以下数值就可以集成到 Airtest 中试用cls_loss 0.8box_loss 0.8Precision≥ 0.7Recall≥ 0.7mAP50≥ 0.75实际使用中你还可以通过提高推理时的置信度阈值conf来牺牲部分召回率换取极高的精确率避免误触其他按钮这也是广告关闭场景的常用技巧。照这个标准74轮成绩感觉已经可以了啊赶紧导出让它干活。但是报错了得装依赖项路径也嵌套了但是问题不大先导出吧pipinstallonnx1.16.1 onnxslim onnxruntime-ihttps://pypi.tuna.tsinghua.edu.cn/simple python export_onnx.py--weightsruns/detect/runs/detect/train/weights/best.pt引入工程让AI写吧没啥建议记得在主工程里也安装onnxrunner主工程可以和训练环境是两个虚拟环境安装不同的py版本。因为我还有其它检验方法所以把置信度阈值设得很低。效果很好。快去试试。