25/1/11 算法笔记 Yolov8物体识别
这几天做了给Yolov8检测物体的小任务,今天来做下总结。
首先介绍下整个Yolov8检测的步骤吧,安装库那些就不讲了。
这是我的文件包的对象树。
有images包,里面装了训练和验证的图像。
labels包,装了标注好的labels的txt文件,一开始标注好是json文件,要经过脚本转化,变成yolov能识别的txt文件。
这里我之前遇到一个麻烦,就是我已经开始是用多边形标注的,结果yolov8训练出来一坨,我查了查yolov8好像在目标识别这块不能用多边形。分割的话可以用多边形做。然后就改成矩形做了。
dataset.yaml文件
path: C:/Users/ren/Desktop/gm/guardrail_monitoring/datasets/guardrail
train: C:/Users/ren/Desktop/gm/guardrail_monitoring/datasets/guardrail/images/train
val: C:/Users/ren/Desktop/gm/guardrail_monitoring/datasets/guardrail/images/val# 类别信息
nc: 1
names: ['fence']
script文件里装的是运行脚本
train.py
from ultralytics import YOLOdef train_model():"""训练 YOLOv8 目标检测模型。"""# 加载预训练的目标检测模型model = YOLO("yolov8n.pt") # 使用 YOLOv8 的目标检测模型# 训练模型results = model.train(data="C:/Users/ren/Desktop/gm/guardrail_monitoring/datasets/dataset.yaml", # 数据集配置文件路径epochs=100, # 训练轮数imgsz=640, # 图像大小batch=16, # 批量大小name="guardrail_detection", # 训练任务名称patience=10, # 早停机制,如果 10 轮验证集性能没有提升,则停止训练device="0", # 使用 GPU 训练(如果有 GPU)workers=4, # 数据加载的线程数optimizer="auto", # 自动选择优化器lr0=0.01, # 初始学习率lrf=0.01, # 最终学习率weight_decay=0.0005, # 权重衰减save=True, # 保存训练结果save_period=10, # 每 10 轮保存一次模型)print("训练完成!模型权重保存在 runs/detect/guardrail_detection/weights/ 目录下。")if __name__ == "__main__":train_model()
device = “0”就代表我用的GPU训练,记得要装pytorch的GPU版本。
训练完了之后权值会在run/../weight文件里面,选里面最好的best,吧它的地址换进,infer_image文件里面
from ultralytics import YOLO
from PIL import Image, ImageDraw, ImageFont
import osdef draw_boxes(image, boxes, labels, confidences):"""在图像上绘制边界框和标签。:param image: PIL 图像对象:param boxes: 边界框坐标列表:param labels: 类别标签列表:param confidences: 置信度列表:return: 绘制后的图像"""draw = ImageDraw.Draw(image)font = ImageFont.load_default()for box, label, confidence in zip(boxes, labels, confidences):x1, y1, x2, y2 = boxdraw.rectangle([x1, y1, x2, y2], outline="red", width=2)draw.text((x1, y1), f"{label} {confidence:.2f}", fill="red", font=font)return imagedef infer_image(image_path, output_dir):"""对单张图像进行推理。:param image_path: 图像路径:param output_dir: 输出目录"""# 加载训练好的模型model = YOLO("C:/Users/ren/Desktop/gm/runs/detect/guardrail_detection2/weights/best.pt")# 推理(降低置信度阈值)results = model(image_path, conf=0.1) # 设置置信度阈值为 0.1# 处理结果for result in results:boxes = result.boxes.xyxy.tolist() # 获取边界框坐标labels = result.boxes.cls.tolist() # 获取类别 IDconfidences = result.boxes.conf.tolist() # 获取置信度names = result.names # 获取类别名称# 将类别 ID 转换为类别名称labels = [names[int(cls)] for cls in labels]# 打开图像image = Image.open(image_path)# 绘制标注if boxes: # 如果有检测到目标image = draw_boxes(image, boxes, labels, confidences)else:print(f"{image_path} 未检测到目标!")# 创建输出目录(如果不存在)os.makedirs(output_dir, exist_ok=True)# 保存图像image_name = os.path.basename(image_path) # 获取图像文件名output_path = os.path.join(output_dir, image_name)image.save(output_path)print(f"推理完成!结果保存在 {output_path}")def infer_validation_set(validation_dir, output_dir):"""对验证集进行批量推理。:param validation_dir: 验证集目录:param output_dir: 输出目录"""# 遍历验证集目录中的所有图像for image_name in os.listdir(validation_dir):if image_name.lower().endswith((".jpg", ".jpeg", ".png")): # 仅处理图像文件image_path = os.path.join(validation_dir, image_name)infer_image(image_path, output_dir)if __name__ == "__main__":validation_dir = "C:/Users/ren/Desktop/gm/guardrail_monitoring/datasets/guardrail/images/val" # 验证集目录output_dir = "C:/Users/ren/Desktop/outputs/images" # 输出目录infer_validation_set(validation_dir, output_dir)
最后就训练好了Yolov8模型
明天来解析一下yolov8的源代码逻辑。
相关文章:
![](https://i-blog.csdnimg.cn/direct/b51a745fe8e248ccae1ae1909d4f2260.png)
25/1/11 算法笔记 Yolov8物体识别
这几天做了给Yolov8检测物体的小任务,今天来做下总结。 首先介绍下整个Yolov8检测的步骤吧,安装库那些就不讲了。 这是我的文件包的对象树。 有images包,里面装了训练和验证的图像。 labels包,装了标注好的labels的txt文件&…...
![](https://www.ngui.cc/images/no-images.jpg)
水水水水水水
为了拿推广卷,但不想把我原本完整的文章拆成零散的多篇,只能出此下策随便发一篇,认真写的都笔记专栏里 网络技术:数字时代的基础设施 在当今社会,网络技术无疑是推动现代生活和经济发展的核心动力之一。从简单的信息传…...
![](https://i-blog.csdnimg.cn/direct/d617d6f9daa44591bca3d501d1e2cb28.png)
XS5037C一款应用于专业安防摄像机的图像信号处理芯片,支持MIPI和 DVP 接口,内置高性能ISP处理器,支持3D降噪和数字宽动态
XS5037C是一款应用于专业安防摄像机的图像信号处理芯片,支持MIPI和 DVP 接口,最 大支持 5M sensor接入。内置高性能ISP处理器,支持3D降噪和数字宽动态。标清模拟输出支 持960H,高清模拟输出支持HDCCTV 720P/1080P/4M/5M。高度集成…...
![](https://www.ngui.cc/images/no-images.jpg)
机器学习无处不在,AI顺势而为,创新未来
机器学习无处不在: 1、推荐广告和搜索:推广搜不分家,属于数据科学中,对人的行为进行理解 2、计算机视觉CV:对人看到的东西进行理解 3、自然语言处理:对人交流的东西进行理解 4、数据挖掘和数据分析&…...
![](https://www.ngui.cc/images/no-images.jpg)
pandas处理json的相关操作
Pandas 是一个强大的数据处理库,它提供了丰富的功能来处理 JSON 数据。以下是 Pandas 中处理 JSON 的所有常见操作: 1. 读取 JSON 文件 使用 pandas.read_json() 函数可以从 JSON 文件或 JSON 字符串中读取数据。 从 JSON 文件读取 import pandas as …...
![](https://www.ngui.cc/images/no-images.jpg)
linux内存泄露定位过程(kmemleak和slab debug)
1,当遇到内存增加过多时,或者由于内存导致系统oom时我们怎么定位呢,定位时需要确认是内核态还是用户态内存泄露。 排查步骤 top查看VIRT和RES内存 rootubuntu2004:~# top top - 21:05:39 up 7 min, 1 user, load average: 5.01, 4.09, 2.…...
![](https://www.ngui.cc/images/no-images.jpg)
2025年安卓面试复习总结
文章目录 深入理解并熟练运用常用设计模式及反射原理,能够自定义注解及泛型,多次通过设计模式对 app 代码进行高效重构,显著提升代码的可维护性与扩展性。设计模式自定义注解泛型Kotlin泛型 精通多线程原理,对 ThreadPoolExecutor…...
![](https://www.ngui.cc/images/no-images.jpg)
JS scrollIntoView 技巧揭秘:解锁网页流畅交互
文章目录 一.基本概念二.语法和参数基本语法:element.scrollIntoView();参数详解: 三.应用场景和示例场景一:点击目录点位到相应的位置React 示例代码:Vue3 示例代码: 场景二:轮播图定位到指定图片示例代码…...
![](https://www.ngui.cc/images/no-images.jpg)
【Ubuntu 24.04】常见问题解决
1.24开启3D加速黑屏 参考文章:Ubuntu24开机黑屏,VMware卡死,虚拟机繁忙解决方案 没有3D加速就没有动画,所以我们需要开启3D加速,但是直接开启3D加速会黑屏 由于Ubuntu24内部的图形加速驱动异常,因此需要更新…...
![](https://www.ngui.cc/images/no-images.jpg)
前端依赖安装指南
前端依赖安装指南 一、NVM管理工具安装 1.在 Windows 上安装 下载 NVM for Windows 的安装程序:(最新版本可以在 nvm-windows Releases 页面 找到)运行下载的安装程序并按步骤操作。 2.配置 NVM exe安装自动配置环境变量 3. 验证 NVM 安装 验证 NVM 是否成功…...
![](https://i-blog.csdnimg.cn/direct/54a4bf1b13be4464a2a84285c38a35ff.png)
灌区闸门自动化控制系统-精准渠道量测水-灌区现代化建设
项目背景 本项目聚焦于黑龙江某一灌区的现代化改造工程,该灌区覆盖广阔,灌溉面积高达7.5万亩,地域上跨越6个乡镇及涵盖17个村庄。项目核心在于通过全面的信息化建设,强力推动节水灌溉措施的实施,旨在显著提升农业用水的…...
![](https://csdnimg.cn/release/blog_editor_html/release2.3.7/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=O83A)
ELK实战(最详细)
一、什么是ELK ELK是三个产品的简称:ElasticSearch(简称ES) 、Logstash 、Kibana 。其中: ElasticSearch:是一个开源分布式搜索引擎Logstash :是一个数据收集引擎,支持日志搜集、分析、过滤,支持大量数据…...
![](https://www.ngui.cc/images/no-images.jpg)
《大型语言模型与强化学习的融合:探索问题的新解决方案与开源验证需求》
强化学习在2020年代初期通过开源项目如CleanRL的多学习者PPO算法取得了显著进展,但在语言模型领域未能充分利用其潜力 1. 开源项目CleanRL的贡献 CleanRL 是一个致力于提供简单、高效且易于理解的强化学习(RL)算法实现的开源项目。该项目通…...
![](https://i-blog.csdnimg.cn/direct/8696b98e2db342ccb950e25be9423cb4.png)
springboot 默认的 mysql 驱动版本
本案例以 springboot 3.1.12 版本为例 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.12</version><relativePath/> </parent> 点击 spring-…...
![](https://www.ngui.cc/images/no-images.jpg)
10分钟快速了解OceanGPT(沧渊)
10分钟快速了解OceanGPT(沧渊) 海洋科学任务的大语言模型——OceanGPT OceanGPT是如何训练的?为了训练 OceanGPT (沧渊) ,收集了一个跨越多个领域的海洋科学语料库。由于每个子领域和主题都有其独特的数据特征和模式,因此提出了一个特定于领域的指令生成框架,称为 DoDirec…...
![](https://i-blog.csdnimg.cn/direct/aa0d9afbb2ac4d758bb31ea6e598cf82.png)
蓝桥杯嵌入式速通(1)
1.工程准备 创建一文件夹存放自己的代码,并在mdk中include上文件夹地址 把所有自身代码的头文件都放在headfile头文件中,之后只需要在新的文件中引用headfile即可 headfile中先提前可加入 #include "stdio.h" #include "string.h"…...
![](https://www.ngui.cc/images/no-images.jpg)
Redis优化建议详解
Redis优化建议详解 1. 内存优化 1.1 内存配置 设置最大内存 maxmemory 4gb 内存淘汰策略 maxmemory-policy allkeys-lru 样本数量 maxmemory-samples 51.2 内存优化策略 数据结构优化 使用压缩列表(ziplist)合理设置hash-max-ziplist-entries使用整数…...
![](https://www.ngui.cc/images/no-images.jpg)
ceph 存储 full 阈值调整
前言 在 Ceph 集群中,默认情况下,当某些 OSD(对象存储守护进程)的使用率达到 85% 时,系统会发出 nearfull 警告,并可能限制进一步的写入操作,以防止数据丢失或集群不稳定。 要允许在 OSD 使用率超过 85% 的情况下继续写入,您可以调整以下两个参数: mon_osd_nearful…...
![](https://i-blog.csdnimg.cn/img_convert/59bea1a3ccc60490144f3d477164b2b3.png)
后端技术选型 sa-token校验学习 下 结合项目学习 后端鉴权
目录 后端注册拦截器 实现对 WebMvcConfigurer 接口的类实现 静态变量 方法重写 注册 Spring Framework拦截器 Sa-Token中SaServletFilter拦截器 思考 为什么使用两个拦截器 1. Spring Framework 拦截器 2. SaServletFilter 为什么要注册两个拦截器? 总结 …...
![](https://www.ngui.cc/images/no-images.jpg)
Vue.js组件开发-实现组件切换效果的两种方法 条件渲染、动态组件
在Vue.js中,实现组件切换效果通常依赖于条件渲染或动态组件。 方法一:条件渲染 条件渲染使用v-if、v-else-if和v-else指令来根据条件展示或隐藏组件。这种方法适用于需要在不同条件下展示不同组件的场景。 <template><div><button cli…...
![](https://i-blog.csdnimg.cn/direct/e513539702b5440ca45bf548bd73442d.png#pic_center)
primitive 的 Appearance编写着色器材质
import { nextTick, onMounted, ref } from vue import * as Cesium from cesium import gsap from gsaponMounted(() > { ... })// 1、创建矩形几何体,Cesium.RectangleGeometry:几何体,Rectangle:矩形 let rectGeometry new…...
![](https://i-blog.csdnimg.cn/direct/18fba90f495845618d4912983efcf355.png)
Seata搭建
1.初识Seata Quick Start | Apache Seata 官网 2.准备nacos和 seata 启动nacos startup.cmd -m standalone账号nacos 密码nacos 搭建seata TC 这里下载的 1.4.2 seata-server-1.4.2 1.修改seata配置文件 registry.conf 这里我们使用nacos作为注册中心 和 配置中心 r…...
![](https://i-blog.csdnimg.cn/direct/9fc51a624613444baee53c372339f297.png#pic_center)
流浪猫流浪狗领养PHP网站源码
源码介绍 流浪猫流浪狗领养PHP网站源码,适合做猫狗宠物类的发信息发布。当然其他信息发布也是可以的。 导入数据库,修改数据库配置/application/database.php 设置TP伪静态,设置运行目录, 后台:/abcd.php/dashboard?…...
![](https://www.ngui.cc/images/no-images.jpg)
asammdf python 处理MF4文件库简介
asammdf 是一个功能强大的 Python 库,专门用于处理汽车行业常用的 MDF(Measured Data Format)文件。以下是 asammdf 的主要功能总结: 主要功能 读取和写入 MDF 文件: 支持 MDF 文件的版本 3.x 和 4.x。 能够读取和…...
![](https://www.ngui.cc/images/no-images.jpg)
【“软件工程”基础概念学习】
基础和相关概念 英文:Software Engineering 软:物体内部的组织疏松,受外力作用后容易改变形状软件: 计算机系统的组成部分,是指挥计算机进行计算、判断、处理信息的程序系统。通常分为系统软件和应用软件。借指某项活…...
![](https://i-blog.csdnimg.cn/img_convert/9c6b055b9def98019bad5a8a79c24a2a.png)
省森林防火应急指挥系统
森林防火形势严峻 我国森林防火形势十分严峻,森林火灾具有季节性强、发现难、成灾迅速等特点,且扑救难度大、影响范围广、造成的损失重。因此,构建森林防火应急指挥系统显得尤为重要。 系统建设模式与架构 森林防火应急指挥系统采用大智慧…...
![](https://www.ngui.cc/images/no-images.jpg)
一键整理背包界面功能
一键整理功能 游戏《帕鲁》中的背包界面有一键整理的功能,就是玩家随意拖拽背包格子里的物品,然后导致背包界面看起来很凌乱,比如物品a在一个格子里数量为1,另一个格子里数量为3,或者还有空格杂夹在有物品的格子旁边,一键排序功能可以解决这个问题,(将相同物品整合到一…...
![](https://i-blog.csdnimg.cn/img_convert/e6fc2e8f033b9f47295d2341822c38c3.jpeg)
给DevOps加点料:融入安全性的DevSecOps
从前,安全防护只是特定团队的责任,在开发的最后阶段才会介入。当开发周期长达数月、甚至数年时,这样做没什么问题;但是现在,这种做法现在已经行不通了。 采用 DevOps 可以有效推进快速频繁的开发周期(有时…...
![](https://www.ngui.cc/images/no-images.jpg)
uniapp 使用 pinia 状态持久化
1.创建文件 stores -index.js -global.js2.对应文件内容 index.js 安装插件 npm i pinia-plugin-persistedstate import { createPinia } from pinia; import persist from pinia-plugin-persistedstate; const pinia createPinia(); pinia.use(persist); export default pi…...
![](https://www.ngui.cc/images/no-images.jpg)
HarmonyOS鸿蒙-@State@Prop装饰器限制条件
一、组件Components级别的状态管理: State组件内状态限制条件 1.State装饰的变量必须初始化,否则编译期会报错。 // 错误写法,编译报错 State count: number;// 正确写法 State count: number 10; 2.嵌套属性的赋值观察不到。 // 嵌套的…...
![](https://yqfile.alicdn.com/c8bb95d4d0407f3e9a94a61afa2ab8dd99519111.gif)
文化投资的微网站怎么做/关键词排名技巧
小猪佩奇总是用侧脸示人,不论是转左边还是转右边,脸上总是有2只眼睛,2个鼻孔,1腮红,小手手不断挥呀挥,讲完一句话就要发出猪叫声,最爱在往泥巴坑里跳。 佩奇正脸也是相当神秘,从未用…...
![](https://img-blog.csdnimg.cn/20200807221603643.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTc0MTgzNQ==,size_16,color_FFFFFF,t_70)
怎么让网站快速被收录/百度广告怎么投放多少钱
Web测试 Web通常指的是互联网应用系统,比如税务电子化征管档案系统、金融数据平台、餐饮商家管理后台等等,其实质是C/S的程序。 C是Client——客户端,S是Server——服务器。 Web中的客户端一般指的是Browser——浏览器,也就是B…...
![](https://img-blog.csdnimg.cn/img_convert/48575d01d05cbeb1868d586229f9ca81.png)
网站 营销策略/怎么制作个人网站
想必大家在选购戒指的时候都会遇到这些问题-我的手尺寸是多?我对象的手尺寸是多少?今天曼琨钻石就为大家详细解读一下戒指尺寸对照表以及测量方法!曼琨钻石戒指尺寸测量方法1.准备测量工具:绳子、直尺、剪刀、笔。2.用绳子围绕手指…...
![](http://tool.chinaitlab.com/UploadFiles_9734/200605/20060508115026932.jpg)
初学者怎么做php网站/东莞网站建设推广技巧
七种办法减少Word容量(转)利用Word生成的文档,每页在20KB左右,但看到用记事本生成的文档,相同的内容只有1KB左右,能让Word也减减肥吗?其实我们可以采用一些行之有效的方法来减小Word文档的容量。 1.取消快速…...
![](https://img-blog.csdnimg.cn/img_convert/820e69236cb49f9bd7e1b211b83e5750.png)
网站项目建设与管理论文/北京网络营销策划公司
智能会议室是钉钉官方的免费应用,智能会议室属于企业会议管理系统,帮助企业高效有序组织会议,提升会议室使用效率。[灵光一闪]一、如何新建会议室?企业开通智能会议室后,管理员可以添加并录入会议室信息哦手机端&#…...
![](https://s1.51cto.com/images/20180423/1524481748835860.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
湖南网络科技有限公司/免费seo课程
3月15日,腾讯AI Lab第二届学术论坛在深圳举行,聚焦人工智能在医疗、游戏、多媒体内容、人机交互等四大领域的跨界研究与应用。全球30位顶级AI专家出席,对多项前沿研究成果进行了深入探讨与交流。腾讯AI Lab还宣布了2018三大核心战略ÿ…...