yolo模型介绍(二)
目录一、Yolo和VLM的比较二、Yolo的数据标注三、Yolo的使用1YOLO推理图片2YOLO钢铁缺陷检测一、Yolo和VLM的比较回顾上篇内容yolo模型介绍 讲了yolo模型的诸多用途其实yolo模型在工业检测中也是一个相对主导的位置。特点是速度快一张推理大概5毫秒左右可以满足产线实时的缺陷检测要求。缺点就是需要人工数据标注。YOLO 系列在工业视觉检测中占据主导地位• 速度: 单张图推理5-15ms (GPU), 满足产线实时检测(通常要求 100ms)• 精度: mAP持续提升, 已能胜任大部分缺陷检测任务• 易用性: Ultralytics 库封装极好, 3 行代码完成训练• 部署灵活: 支持导出ONNX / TensorRT/ OpenVINO, 可部署到边缘设备• 生态成熟: 社区庞大, 教程和预训练模型丰富那么YOLO 和VLM, 在实际项目中应该怎么选?维度YOLO专用检测模型VLM视觉大模型如 Qwen-VL输出精确的边界框bbox 类别 置信度自然语言描述 缺陷类型判断速度~10ms / 张GPU~2-5s / 张API定位精度像素级 bbox精确定位缺陷位置无 bbox 或非常粗略数据需求需要标注数据训练通常数百数千张零样本即可使用改 Prompt 即可新类别适应需要收集数据 重新训练修改 Prompt 即可识别新类别部署成本本地部署无额外成本API 调用有费用或需大显存自部署离线能力完全离线运行通常需要网络除非本地部署可解释性输出框和分数较直观可以输出 为什么 的文字解释二、Yolo的数据标注数据标注一般使用labelImg或者label-studio工具。在本文中我以labelImg为例演示一下数据标注的过程1下载工具https://github.com/HumanSignal/labelImg2运行labelImg.py运行中的报错问题都可以让Trae帮忙解决。3打开文件夹双击切换需要标注的图片4创建区块在图的缺陷上面画一个框画完自动弹出小窗标注缺陷的名称点击OK完成后左侧保存按钮或者Ctrl S对标注保存。标注好了的结果生成了xml格式的文件包含了缺陷的位置信息和我们手动打上的标签信息。还可以将缺陷信息保存为txt和Json格式。可以在这个地方进行切换。大家可以用一用试试看。数据标注的目的是准备训练数据告诉YOLO模型在什么样的位置有什么样的缺陷。这是属于一种监督式的学习方法教给AI要识别的缺陷是什么样的。我们的训练流程如下step 1:先标注图片告诉AI都有哪些bug以及所在的位置step 2:使用yolo模型学习这些标注 images 得到训练好的yolo模型step 3:应用yolo模型去做预测。三、Yolo的使用1YOLO推理图片yolov12n.pt是YOLOv12 系列的 nano最小版预训练权重文件.pt是 PyTorch 模型权重后缀yolov12n.pt文件非常小参数量约 2.6M文件大小仅 5.3MB。文件如果不存在则会自动下载。from ultralytics import YOLO # 不存在则自动下载预训练权重 model YOLO(./yolov12n.pt) # 使用model进行目标检测 results model(./000000000139.jpg) results[0].show()推理结果这是一张室内的图片yolo模型把物体标注出来并给了一个置信度。PyTorch 是深度学习底层框架YOLO 是目标检测算法现在 Ultralytics‑YOLO (v5/v8/v11/v12) 是用 PyTorch 写出来的上层应用 / 算法库。yolo12n.pt本质就是PyTorch 保存的模型权重文件。2YOLO钢铁缺陷检测准备标注好的钢铁缺陷照片这些照片里面有如下的6种典型的热轧带钢表面缺陷即氧化铁皮压入(RS)、 斑块(Pa)、开裂(Cr)、点蚀(PS)、夹杂(In)和划痕(Sc定义dataset.yaml文件。这个文件中指定了训练集验证集和测试集的目录。并且指定的缺陷的数量和种类。训练集需要给到训练图片的文件夹Images还需要给到这些图片标注的文件夹labelstxt格式和ANNOTATIONSxml格式训练格式倒不复杂如下# 初始化 YOLO 模型 model YOLO(yolov12.yaml) # 从配置文件新建模型 # model YOLO(yolov12n.pt) # 加载预训练模型可选 # 显示模型信息 model.info() # 模型训练 results model.train( data./steel_data/dataset.yaml, # 数据集配置文件 epochs100, # 训练轮数 batch8, # 批次大小 imgsz640, # 输入图像尺寸 patience50, # 早停轮数 saveTrue, # 保存模型 device0, # GPU设备号 workers8, # 数据加载线程数 pretrainedTrue, # 是否使用预训练权重 optimizerauto, # 优化器类型 verboseTrue, # 是否显示详细信息 # 数据增强参数 scale0.5, # 图像缩放比例 mosaic1.0, # 马赛克数据增强概率 mixup0.1, # 混合数据增强概率 copy_paste0.1, # 复制粘贴增强概率 ) # 在测试集上评估模型 results model.val()yolov12.yaml这个文件ultralytics会帮忙自动下载。我这边是训练了100轮每一批训练8个。训练一共花费了40多分钟训练完成保存在这个train6路径里面了训练好的权重是last.pt和best.pt。测试一下model2 YOLO(./runs/detect/train6/weights/best.pt) # 在单张图像上测试模型 test_image_dir ./steel_data/test/images if os.path.exists(test_image_dir): for image_name in sorted(os.listdir(test_image_dir))[-20:]: # 测试后20张图片 image_path os.path.join(test_image_dir, image_name) results model2(image_path) # 保存预测结果 results[0].save(os.path.join(./runs/detect/predict, image_name))测试效果如下
上一篇/下一篇内容由系统自动关联
返回资讯列表 →