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

免备案空间网站高端网站制作公

免备案空间网站,高端网站制作公,淘宝官网首页登录电脑版,深圳网络营销培训前言 YOLO(You Only Look Once)系列是目标检测领域的经典算法,凭借速度快、精度高的特点被广泛应用。最新的 YOLO11 在模型结构和性能上进一步优化,本文将从环境搭建到实战应用,详细讲解 YOLO11 的使用方法&#xff0…

前言

YOLO(You Only Look Once)系列是目标检测领域的经典算法,凭借速度快、精度高的特点被广泛应用。最新的 YOLO11 在模型结构和性能上进一步优化,本文将从环境搭建到实战应用,详细讲解 YOLO11 的使用方法,适合新手快速上手。

一、环境准备

1. 系统要求

  • 操作系统:Windows 10/11、Ubuntu 20.04+、欧拉系统等
  • 硬件:CPU 可运行,GPU(NVIDIA)可加速(推荐,需支持 CUDA)

2. 安装 Python

  • 推荐版本:Python 3.8-3.11(兼容性最佳)
  • 下载地址:Python 官网
  • 验证安装:
    python --version  # 或 python3 --version
    

3. 安装 YOLO11(Ultralytics 库)

YOLO11 由 Ultralytics 团队维护,通过ultralytics库即可使用,安装命令:

# 基础安装(CPU/GPU通用)
pip install ultralytics# 如需GPU加速,需额外安装对应版本PyTorch(带CUDA)
# 参考PyTorch官网:https://pytorch.org/get-started/locally/
# 例如CUDA 11.8版本:
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

4. 验证安装

python 运行

import ultralytics
from ultralytics import YOLOprint("Ultralytics版本:", ultralytics.__version__)  # 需≥8.1.0(支持YOLO11)
model = YOLO("yolo11n.pt")  # 加载轻量模型
print("模型加载成功!")

运行无报错则安装成功。

二、YOLO11 模型介绍

YOLO11 提供多个预训练模型,不同模型在速度和精度上有差异:

模型大小 (MB)输入尺寸适合场景
yolo11n.pt6640x640轻量化部署、快速推理
yolo11s.pt23640x640平衡速度与精度
yolo11m.pt66640x640中等精度需求
yolo11l.pt155640x640高精度需求
yolo11x.pt234640x640最高精度(速度较慢)

模型会自动下载,首次使用需联网。

三、实战教程:目标检测基础操作

1. 单张图片检测

from ultralytics import YOLO
import osdef detect_and_save_results(image_path, output_txt_path=None):"""对图片进行目标检测,并将结果保存到TXT文件参数:image_path: 输入图片的路径(本地路径或URL)output_txt_path: 输出TXT文件的路径,默认与图片同目录、同名"""# 1. 加载预训练的YOLO模型(可替换为其他模型,如yolo11s.pt、yolo11m.pt等)model = YOLO("yolo11n.pt")  # 轻量级模型,适合快速测试# model = YOLO("yolo11l.pt")  # 较大模型,精度更高但速度较慢# 2. 执行目标检测(使用GPU加速,若无GPU会自动切换到CPU)results = model(image_path, device=0)  # device=0表示使用第一个GPU,无GPU可省略# 3. 处理输出路径:默认与图片同目录,文件名相同,后缀改为.txtif output_txt_path is None:img_dir = os.path.dirname(image_path)img_name = os.path.splitext(os.path.basename(image_path))[0]output_txt_path = os.path.join(img_dir, f"{img_name}_detections.txt")# 4. 解析检测结果并写入TXTwith open(output_txt_path, "w", encoding="utf-8") as f:# 遍历每张图片的检测结果(此处仅处理单张图片)for result in results:# 遍历每个检测到的目标for box in result.boxes:# 获取目标类别名称(如"person"、"car")cls_name = model.names[int(box.cls)]# 获取置信度(保留4位小数)confidence = round(float(box.conf), 4)# 获取边界框坐标(x1, y1, x2, y2,左上角和右下角坐标)x1, y1, x2, y2 = map(round, box.xyxy[0].tolist())  # 转为整数# 写入TXT,格式:类别 置信度 x1 y1 x2 y2f.write(f"{cls_name} {confidence} {x1} {y1} {x2} {y2}\n")print(f"检测结果已保存至:{output_txt_path}")return output_txt_path# 示例:检测本地图片并保存结果
if __name__ == "__main__":# 输入图片路径(可替换为本地图片路径,如"test.jpg",或URL)input_image = "bus.jpg"  # 本地图片# input_image = "https://ultralytics.com/images/bus.jpg"  # 网络图片# 调用函数执行检测并保存结果detect_and_save_results(input_image)

2. 批量图片检测并生成标注图

import os
import shutil
from ultralytics import YOLO
from PIL import Image, ImageDraw, ImageFontdef batch_detect_and_annotate(input_dir, output_dir="demo"):"""批量处理文件夹中的图片,生成标注后的图片和识别结果TXT参数:input_dir: 存放待识别图片的文件夹路径output_dir: 输出结果的文件夹路径(默认当前目录的demo文件夹)"""# 1. 创建输出文件夹(若不存在)os.makedirs(output_dir, exist_ok=True)print(f"所有结果将保存至:{os.path.abspath(output_dir)}")# 2. 加载YOLO模型(可替换为其他模型,如yolo11s.pt、yolo11m.pt等)model = YOLO("yolo11n.pt")  # 轻量级模型,适合快速测试# model = YOLO("yolo11l.pt")  # 更大模型,精度更高但速度较慢# 3. 获取输入文件夹中所有图片文件image_extensions = (".jpg", ".jpeg", ".png", ".bmp", ".gif")  # 支持的图片格式image_files = [f for f in os.listdir(input_dir)if f.lower().endswith(image_extensions)]if not image_files:print(f"错误:在{input_dir}中未找到任何图片文件!")return# 4. 批量处理每张图片for img_file in image_files:# 构建图片路径img_path = os.path.join(input_dir, img_file)img_name = os.path.splitext(img_file)[0]  # 不含扩展名的文件名try:# 5. 执行目标检测results = model(img_path, device=0)  # device=0启用GPU,无GPU可删除# 6. 生成标注后的图片# 从结果中获取标注后的图片(YOLO自动绘制检测框)annotated_img = results[0].plot()  # 返回numpy数组格式的图片# 转换为PIL图片并保存pil_img = Image.fromarray(annotated_img[..., ::-1])  # 转换BGR为RGBoutput_img_path = os.path.join(output_dir, f"{img_name}_annotated.jpg")pil_img.save(output_img_path)# 7. 保存识别结果到TXT文件txt_path = os.path.join(output_dir, f"{img_name}_detections.txt")with open(txt_path, "w", encoding="utf-8") as f:for box in results[0].boxes:cls_name = model.names[int(box.cls)]confidence = round(float(box.conf), 4)x1, y1, x2, y2 = map(round, box.xyxy[0].tolist())f.write(f"{cls_name} {confidence} {x1} {y1} {x2} {y2}\n")print(f"处理完成:{img_file} → 已保存标注图和TXT")except Exception as e:print(f"处理{img_file}时出错:{str(e)}")print(f"\n所有图片处理完成!结果保存在:{os.path.abspath(output_dir)}")# 示例:运行批量处理
if __name__ == "__main__":# 待识别图片所在的文件夹(请替换为你的图片文件夹路径)input_folder = "/opt"  # 例如:"D:/my_images" 或 "./test_pics"# 调用函数,结果会保存在当前目录的demo文件夹中batch_detect_and_annotate(input_folder)

3. 视频实时检测与播放

import cv2
from ultralytics import YOLO# 加载YOLO模型,可根据需求更换模型,如yolo11n.pt等
model = YOLO("yolov8n.pt")# 打开视频文件,若要使用摄像头,将路径改为0,如cap = cv2.VideoCapture(0)
video_path = "5b48211588c89.mp4"
cap = cv2.VideoCapture(video_path)while cap.isOpened():# 从视频中读取一帧success, frame = cap.read()if not success:break# 对帧进行目标检测results = model(frame)# 遍历检测结果,绘制标记框for result in results:boxes = result.boxes.data.tolist()for box in boxes:x1, y1, x2, y2, conf, cls_id = boxclass_name = model.names[int(cls_id)]# 这里可以添加条件,只标记特定类别,如只标记bus# if class_name == "bus":cv2.rectangle(frame, (int(x1), int(y1)), (int(x2), int(y2)), (0, 255, 0), 2)label = f'{class_name} {conf:.2f}'cv2.putText(frame, label, (int(x1), int(y1) - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)# 显示标记后的帧cv2.imshow("Object Detection", frame)# 按下'q'键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放视频捕获对象并关闭所有窗口
cap.release()
cv2.destroyAllWindows()

4. 自定义目标标记(例如只标记 "bus")

import os
from ultralytics import YOLO
from PIL import Image, ImageDraw, ImageFont
import numpy as npdef detect_and_mark_bus(input_dir, output_dir="demo"):"""批量处理图片,仅用红色框标记公交车(bus),其他目标不标记"""# 创建输出文件夹os.makedirs(output_dir, exist_ok=True)print(f"结果保存至:{os.path.abspath(output_dir)}")# 加载YOLO模型model = YOLO("yolo11n.pt")  # 可替换为其他模型# 获取输入文件夹中的所有图片image_extensions = (".jpg", ".jpeg", ".png", ".bmp", ".gif")image_files = [f for f in os.listdir(input_dir) if f.lower().endswith(image_extensions)]if not image_files:print(f"错误:{input_dir}中未找到图片!")return# 批量处理每张图片for img_file in image_files:img_path = os.path.join(input_dir, img_file)img_name = os.path.splitext(img_file)[0]try:# 执行检测results = model(img_path, device=0)  # 无GPU可删除device参数img = Image.open(img_path).convert("RGB")  # 打开原图draw = ImageDraw.Draw(img)  # 创建绘图对象# 遍历检测结果,只处理bus类别for box in results[0].boxes:cls_name = model.names[int(box.cls)]  # 获取类别名称if cls_name == "bus":  # 仅标记公交车# 获取边界框坐标(x1, y1为左上角,x2, y2为右下角)x1, y1, x2, y2 = map(int, box.xyxy[0].tolist())# 绘制红色框(线宽3)draw.rectangle([x1, y1, x2, y2], outline="red", width=3)# 绘制类别和置信度(红色文字)confidence = round(float(box.conf), 2)  # 保留2位小数text = f"bus {confidence}"# 设置字体(可选,避免中文乱码)try:font = ImageFont.truetype("arial.ttf", 18)  # 系统字体except:font = ImageFont.load_default()  # 默认字体draw.text((x1, y1 - 20), text, fill="red", font=font)# 保存标注后的图片output_img_path = os.path.join(output_dir, f"{img_name}_bus_marked.jpg")img.save(output_img_path)print(f"已处理:{img_file} → 保存至 {output_img_path}")except Exception as e:print(f"处理{img_file}出错:{str(e)}")print(f"\n所有图片处理完成!结果在:{os.path.abspath(output_dir)}")if __name__ == "__main__":# 待处理图片所在的文件夹(替换为你的图片文件夹路径)input_folder = "/opt"  # 例如:"D:/my_pics" 或 "./test_images"detect_and_mark_bus(input_folder)

四、常见问题解决

  1. 模型下载慢:手动下载模型(Ultralytics Assets),放入~/.cache/ultralytics/目录(Linux)或C:\Users\用户名\.cache\ultralytics\(Windows)。

  2. GPU 无法使用

    • 检查 PyTorch 是否为 CUDA 版本:python -c "import torch; print(torch.cuda.is_available())"(返回 True 则正常)。
    • 确保 CUDA 驱动版本与 PyTorch 兼容。
  3. cv2.imshow () 报错

    • Linux:安装依赖sudo apt-get install libxcb-xinerama0
    • 无图形界面:改用保存视频方式(见 3.3 节)。

参考资料

  • 使用Ultralytics YOLO 进行模型训练 -Ultralytics YOLO 文档
  • YOLO11 GitHub 仓库
http://www.dtcms.com/wzjs/563538.html

相关文章:

  • 大连微网站制作网站建设排行榜
  • 四川建设厅官方网站链接搜索
  • Linux主机设置网站首页13572074638网站建设
  • 中国建设注册管理中心网站首页网站建设价格西安
  • 网站做支付端口的费用网红营销定义
  • 做初中题赚钱的网站怎么计算网站开发费用
  • 邢台做网站服务想调用等三方网站数据该怎么做
  • 网站开发数据库技术优秀营销案例分享
  • 可以做系统同步时间的网站设计制作散发寄递销售展示使用
  • 东昌网站建设北票市建设工程安全管理站网站
  • 建设网站基础电子烟网站设计
  • 建设网站费用计入什么费用微信对接网站可以做301跳转吗
  • 丽江建设工程信息网站国家高新技术企业证书图片
  • 北京市建设公租房网站局域网做网站 内网穿透
  • 团队网站建设哪家便宜许昌小学网站建设
  • 杭州网站开发平均工资广州天河区做网站的公司
  • 山东济南做网站公司管理咨询公司需要的能力
  • 邯郸网站制wordpress qq 群
  • 网站升级维护期间能访问吗wordpress 嵌入地图
  • 北京有哪些炫酷的网站页面论述三种常见的网络营销方式
  • discuz网站名称注册公司最少需要多少钱
  • wordpress角色权限管理seo优化知识总结
  • 福州市建网站公司软文推广名词解释
  • 公司网站页面设计项目建设综述
  • 如何利用社交网站做招聘最新军事新闻热点事件
  • 台州建设工程网站小程序开发怎么做
  • 丝绸之路网站建设pc下载网
  • 京东网站的设计特点怎样建立商贸网站
  • 建设产品网站课程设计找网页设计公司去哪个平台
  • 网站建设需求登记表网页设计基础教学设计及ppt