当前位置: 首页 > news >正文

标注工具labelimg使用简介

以yolov11为例,训练之前要先准备好数据集,以下是yolov11的训练代码,其中data.yaml 指向数据集的路径,以网上检测安全帽为例,下载连接:

工地安全帽识别检测数据集

https://gitcode.com/open-source-toolkit/10c53

train.py代码

from ultralytics import YOLOif __name__ == '__main__':# Load a pretrained YOLOv8 modelmodel = YOLO('yolo11n.pt')# Train the model on a custom datasetmodel.train(data='data/data.yaml', epochs=400, imgsz=640, batch=64, workers=8)

data.yaml内容,里面有7个类别,可根据需要调整

train: ../train/images
val: ../valid/images
test: ../test/imagesnc: 7
names: ['Gloves', 'Helmet', 'Non-Helmet', 'Person', 'Shoes', 'Vest', 'bare-arms']

成品数据集的样子,test可选

而labelimg正是制作数据集的一种常见工具

安装:

pip install labelimg

建议使用python3.9版本,python3.10或更高python版本中labelimg可能会闪退

启动labelimg

在安装了labelimg的python环境中直接输入:labelimg    按回车即可打开

现在从上面下载的数据集中取10张图片进行标注练习,为了简便

再点击左侧的Open Dir,它会提示以下窗口,点Yes,然后再去选择图片文件夹

Change Save Dir是选择保存目录,也可以指定到Test下面,到时候再划分

这个下载的数据集有7个类别:names: ['Gloves', 'Helmet', 'Non-Helmet', 'Person', 'Shoes', 'Vest', 'bare-arms']

  • Gloves:手套
  • Helmet:头盔
  • Non-Helmet:未戴头盔
  • Person:人员
  • Shoes:鞋子
  • Vest:背心
  • bare-arms:裸露手臂

我们可以根据需要来标注,以只检测安全帽为例,取2个类别'Helmet', 'Non-Helmet'

按字母W可切换到画框模式,例如框中图片中的人头,它会跳出类别窗口,输入Non-Helmet

下次就直接可以选择这个类别了

一张图片完成标注后,点Next Image会转到下一张,快捷键是d (文章底部有快捷键大全)

检测完最后一张就可以关闭labelimg了,然后打开Test文件夹

里面有对应生成了txt标签信息

打开其中一个txt

制作好数据集之后,还要进行划分,可以借助ai实现,以阿里通义为例

Test下添加01文件夹,把图片和txt移动到01文件夹里面

用vscode打开Test文件夹

用vscode中的通义灵码,进行划分,如下图告诉ai要实现的功能,它会生成一个python文件,运行后,就会多出3个文件夹了

新建一个Dataset文件夹,把这3个文件夹移动到Dataset内

再添加data.yaml文件

train: ./train/images
val: ./val/images
test: ./test/imagesnc: 2
names: ['Non-Helmet', 'Helmet']

最后的目录结构如下图,注意以上只用10张图片进行演示标注过程,实际上训练的图片最好100张或更多。val也就是valid文件夹,名字可以修改

然后,如果电脑上已经配置好yolov11环境,就可以开始训练了

from ultralytics import YOLOif __name__ == '__main__':# Load a pretrained YOLOv8 model (e.g., yolo11n.pt)model = YOLO('yolo11n.pt')# Train the model with early stoppingresults = model.train(data='Dataset/data.yaml',      # 数据配置文件epochs=100,                 # 最大训练轮数(早停会提前停止)patience=50,                # ⭐ 早停耐心值:连续50轮没提升就停imgsz=640,                  # 图像尺寸batch=16,                   # batch sizeworkers=8,                  # 数据加载线程数device=0,                   # 使用GPU(0表示第一块GPU)project='runs/train',       # 保存项目目录name='exp',                 # 实验名称exist_ok=False,             # 防止覆盖已有实验optimizer='AdamW',          # 可选优化器lr0=0.001,                  # 初始学习率amp=True,                   # 自动混合精度(加速训练))print("✅ Training completed. Best model saved automatically.")

经过大概20多分钟,训练完成 ,次数这里选择的是100,根据需要选择

训练完成后会生成best.pt,写一个检测图片的代码:

from ultralytics import YOLO
import cv2
import osdef detect_image(image_path, model_path='best.pt', save_dir='runs/detect', show_result=True):"""使用训练好的YOLO模型检测单张图片Args:image_path (str): 要检测的图片路径model_path (str): 训练好的模型路径save_dir (str): 检测结果保存目录show_result (bool): 是否显示检测结果窗口"""# 加载模型model = YOLO(model_path)# 创建保存目录os.makedirs(save_dir, exist_ok=True)# 进行检测results = model.predict(source=image_path,save=True,           # 保存检测结果save_dir=save_dir,   # 保存目录show=show_result,    # 是否显示图片窗口conf=0.5,            # 置信度阈值iou=0.5              # IOU阈值)print(f"✅ 检测完成,结果已保存到 {save_dir}")# 如果需要显示结果且有检测到对象,则显示if show_result and results[0].boxes is not None:# 获取检测结果图像plotted_image = results[0].plot()# 显示图像cv2.imshow('Detection Result', plotted_image)print("按任意键关闭显示窗口...")cv2.waitKey(0)cv2.destroyAllWindows()return resultsdef detect_images_in_directory(images_dir, model_path='yolo11n.pt', save_dir='runs/detect', show_result=False):"""使用训练好的YOLO模型检测目录中的所有图片Args:images_dir (str): 包含图片的目录路径model_path (str): 训练好的模型路径save_dir (str): 检测结果保存目录show_result (bool): 是否显示检测结果窗口(仅对最后一张图片有效)"""# 加载模型model = YOLO(model_path)# 创建保存目录os.makedirs(save_dir, exist_ok=True)# 进行检测results = model.predict(source=images_dir,save=True,save_dir=save_dir,show=show_result,conf=0.5,iou=0.5)print(f"✅ 检测完成,{len(results)} 张图片的结果已保存到 {save_dir}")# 显示最后一张图片的检测结果if show_result and len(results) > 0 and results[-1].boxes is not None:# 获取最后一张图片的检测结果plotted_image = results[-1].plot()# 显示图像cv2.imshow('Detection Result', plotted_image)print("按任意键关闭显示窗口...")cv2.waitKey(0)cv2.destroyAllWindows()return resultsif __name__ == '__main__':# 示例1: 检测单张图片并显示结果detect_image(r'G:\cpppro2\TestYolov11\Dataset\test\images\Video4_260_jpg.rf.05ceff198aeb0fe5870232779710005d.jpg')# 示例2: 检测目录中的所有图片,显示最后一张的检测结果# detect_images_in_directory('Dataset/test/images')print("请取消注释上面的示例代码并提供正确的图片路径来运行检测")

labelImg快捷键:

关于:imgsz 参数


文章转载自:

http://3oBGDXxE.bxmbj.cn
http://2gl1u8cJ.bxmbj.cn
http://qhlsvu3r.bxmbj.cn
http://jaUCsRl4.bxmbj.cn
http://q6Xf0P8H.bxmbj.cn
http://Hmg3PUbY.bxmbj.cn
http://xhyod5WU.bxmbj.cn
http://T1W6LzRV.bxmbj.cn
http://vSaXJ3tM.bxmbj.cn
http://qTlzBLu7.bxmbj.cn
http://vJCv7mDZ.bxmbj.cn
http://nAdYclNj.bxmbj.cn
http://jCRvkklD.bxmbj.cn
http://CR1VsN5K.bxmbj.cn
http://ToaW7oQD.bxmbj.cn
http://4HocXeUV.bxmbj.cn
http://gxh0ULDX.bxmbj.cn
http://XZjWrNfz.bxmbj.cn
http://0PvGyOct.bxmbj.cn
http://1Pv7iMKT.bxmbj.cn
http://Irdz3JvJ.bxmbj.cn
http://xz9jXsrn.bxmbj.cn
http://sib0hbir.bxmbj.cn
http://aNcFM9fZ.bxmbj.cn
http://AbsNfbvV.bxmbj.cn
http://4dpdttot.bxmbj.cn
http://KQscBU09.bxmbj.cn
http://GZg098AR.bxmbj.cn
http://4PlbPQTk.bxmbj.cn
http://TzkSkh0M.bxmbj.cn
http://www.dtcms.com/a/367004.html

相关文章:

  • 用 Rust + Actix-Web 打造“Hello, WebSocket!”——从握手到回声,只需 50 行代码
  • 【Java EE进阶 --- SpringBoot】Spring IoC
  • 机器学习基础-day03-机器学习中的线性回归
  • GPT-5冷酷操盘,游戏狼人杀一战封神!七大LLM狂飙演技,人类玩家看完沉默
  • FastGPT源码解析 Agent工作流编排后端详解
  • Python基础(①④内存管理机制)
  • 脑卒中目标检测含完整数据集
  • Unity核心概率⑤:GameObject
  • 【Python办公】tkinter词云图生成器
  • 使用Qt Charts实现高效多系列数据可视化
  • 【数据可视化-106】华为2025上半年财报分析:用Python和Pyecharts打造炫酷可视化大屏
  • tsconfig.json的target和module详解
  • 无人机气象观测技术
  • 【开题答辩全过程】以 小众商户小程序为例,包含答辩的问题和答案
  • house (ai)
  • Dify 从入门到精通(第 75/100 篇):Dify 的实时流式处理进阶(高级篇)
  • 从质疑到真香:小白使用「飞牛NAS」+「节点小宝」的花式操作
  • 关于NET Core jwt Bearer Token 验证的大坑,浪费3个小时,给各位兄弟搭个桥。
  • 人工智能学习:传统RNN模型
  • PyTorch DDP 随机卡死复盘
  • JVM 类加载全过程
  • 关于IDEA构建Gradle项目时报错“contentRootData“ is null的一次排查
  • devcpp 5.11的详细安装步骤
  • 高效菜单管理页面:一键增删改查
  • jmeter压测工具使用详情
  • finally 与 return的执行顺序
  • Java String vs StringBuilder vs StringBuffer:一个性能优化的探险故事
  • 邦芒干货:新入职场的人必须要知道的三大事情
  • JY-H818|科智立RFID高频读写器产品参数解析
  • LVDS系列27:Xilinx 7系 OSERDESE2原语(三)