yolov8训练模型、测试视频
yolov8先训练生成best.pt文件,用这个生成的模型进行视频的测试
因为本来用的代码生成的测试视频打不开,格式应该是损坏了,或者部分帧没有正常保存吧。
修改了一下代码,现状可以正常打开生成的视频了。
1、训练代码train.py
import os# os.environ["CUDA_VISIBLE_DEVICES"] = "3" # 同样是选择第3块GPUfrom ultralytics import YOLO# Load a model
# model = YOLO("yolov8n.yaml") # build a new model from YAML
# model = YOLO("yolov8n.pt") # load a pretrained model (recommended for training)# ffs = os.listdir("cfg1116/new_cfg")
# for ff in ffs:
model = YOLO(f"cfg1116/yolov8n.yaml") # build from YAML and transfer weights
# Train the model
# results = model.train(data=r"/mnt/disk3/sunjiahui/CV-code/v8_all/data.yaml", epochs=5, imgsz=1280, workers=0, batch=2, device=[2])
results = model.train(data=r"/mnt/disk3/sunjiahui/CV-code/v8_all/data.yaml",epochs=500,imgsz=1280,workers=0,batch=2,device=[0],hsv_h=0.015, # HSV色调变化hsv_s=0.7, # HSV饱和度变化hsv_v=0.4, # HSV亮度变化degrees=0.0, # 旋转角度translate=0.1, # 平移比例scale=0.5, # 缩放比例shear=0.0, # 剪切变换perspective=0.0, # 透视变换flipud=0.0, # 上下翻转概率fliplr=0.5, # 左右翻转概率mosaic=1.0, # Mosaic增强的概率mixup=0.0 # MixUp增强的概率
)
model.val(imgsz=[1280,1280])
2、测试代码:视频
from ultralytics import YOLO
import cv2
import osos.environ["CUDA_VISIBLE_DEVICES"] = "2" # 同样是选择第3块GPUdef process_video():# 初始化模型model = YOLO("runs/detect/train2/weights/best.pt")# 输入输出路径input_path = "/mnt/disk3/sunjiahui/CV-code/v8_all/XIONG_AN/shipin.mp4"output_path = "/mnt/disk3/sunjiahui/CV-code/v8_all/XIONG_AN/output_video15.mp4"# 尝试不同编解码器组合codec_options = ['mp4v', 'avc1', 'X264', 'MJPG']success = Falsefor codec in codec_options:try:cap = cv2.VideoCapture(input_path)fps = int(cap.get(cv2.CAP_PROP_FPS)) or 30 # 处理fps为0的情况width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))fourcc = cv2.VideoWriter_fourcc(*codec)out = cv2.VideoWriter(output_path, fourcc, fps, (width, height))print(f"尝试使用编解码器 {codec}...")while cap.isOpened():ret, frame = cap.read()if not ret:breakresults = model.predict(frame, conf=0.15)annotated_frame = results[0].plot()# 确保帧格式正确if annotated_frame.shape[:2] != (height, width):annotated_frame = cv2.resize(annotated_frame, (width, height))out.write(annotated_frame)success = Truebreakexcept Exception as e:print(f"编解码器 {codec} 失败: {str(e)}")if os.path.exists(output_path):os.remove(output_path)continuefinally:cap.release()out.release()if success:print(f"视频生成成功!保存路径:{os.path.abspath(output_path)}")print("如果仍无法播放,请尝试以下方案:")print("1. 使用 VLC 播放器(兼容性最佳)")print("2. 执行命令:ffmpeg -i output_video.mp4 -c:v libx264 final.mp4")else:print("所有编解码器尝试失败,改用图像序列方案...")save_as_image_sequence(model, input_path)def save_as_image_sequence(model, input_path):"""备用方案:保存为图片序列"""output_dir = "video_frames"os.makedirs(output_dir, exist_ok=True)cap = cv2.VideoCapture(input_path)frame_count = 0while cap.isOpened():ret, frame = cap.read()if not ret:breakresults = model.predict(frame)annotated_frame = results[0].plot()cv2.imwrite(f"{output_dir}/frame_{frame_count:04d}.jpg", annotated_frame)frame_count += 1cap.release()print(f"图像序列已保存至 {output_dir},可用以下命令合成视频:")print(f"ffmpeg -framerate 30 -i {output_dir}/frame_%04d.jpg -c:v libx264 output.mp4")if __name__ == "__main__":process_video()
相关文章:
yolov8训练模型、测试视频
yolov8先训练生成best.pt文件,用这个生成的模型进行视频的测试 因为本来用的代码生成的测试视频打不开,格式应该是损坏了,或者部分帧没有正常保存吧。 修改了一下代码,现状可以正常打开生成的视频了。 1、训练代码train.py im…...
03.网络编程套接字(二)
文章目录 简单的TCP网络程序 服务端创建套接字 服务端绑定 服务端监听 服务端获取连接 服务端处理请求 客户端创建套接字 客户端发起请求 服务器测试 单执行流服务器的弊端 多进程版的TCP网络程序 线程池版的TCP网络程序 简单的TCP网络程序 服务端创建套接字 我…...
一周学会Flask3 Python Web开发-Flask3之表单处理WTForms安装与定义WTForms表单类
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们平时开发项目,都会用到表单,编写表单,提交表单,验证表单,如果…...
Git基本命令索引
GIT基本命令索引 创建代码库修改和提交代码日志管理远程操作操作分支 创建代码库 操作指令初始化仓库git init克隆远程仓库git clone 修改和提交代码 操作指令查看文件状态git status文件暂存git add文件比较git diff文件提交git commit回滚版本git reset重命名或者移动工作…...
【论文阅读笔记】SL-YOLO(2025/1/13) | 小目标检测 | HEPAN、C2fDCB轻量化模块
目录 摘要 1 引言 2 相关工作 3 方法 3.1 为小目标检测增加一个头 3.2 优化网络结构 3.3 改进轻量化模块 3.3.1 C2fDCB 3.3.2 SCDown 4 实验 4.1 数据集 4.2 实验环境 4.3 与其他模型的比较 4.4 消融研究 ▲不同网络结构的分析 ▲不同模块的分析 ▲不同降采样…...
MySQL SQL 优化专题
MySQL SQL 优化专题 1. 插入数据优化 -- 普通插入(不推荐) INSERT INTO tb_user VALUES(1,tom); INSERT INTO tb_user VALUES(2,cat); INSERT INTO tb_user VALUES(3,jerry);-- 优化方案1:批量插入(推荐,不建议超过1…...
Mac上安装Pycharm
说明:仅供参考,是自己的安装流程,以免以后自己想不起来来看看的笔记 官网地址:https://www.jetbrains.com/pycharm/ 1、点击Download,跳转到下一个页面 2、MAC,选择Mac OS,在Pycharm Professio…...
flask框架基础入门学习教程
文章目录 前言1. 环境搭建1.1Python安装1.2选择Python开发环境1.3 创建虚拟环境(可选但推荐)1.4 安装 Flask 2. 第一个 Flask 应用3. 路由和视图函数3.1 基本路由3.2 动态路由3.3 路由参数类型 4. 请求和响应4.1 获取请求数据4.2 响应对象 5. 模板渲染6.…...
Qt显示一个hello world
一、显示思路 思路一:通过图形化方式,界面上创建出一个控件显示。 思路二:通过编写C代码在界面上创建控件显示。 二、思路一实现 点开 Froms 的 widget.ui,拖拽 label 控件,显示 hello world 即可。 qmake 基于 .…...
MySQL快速搭建主从复制
一、基于位点的主从复制部署流程 确定主库Binlog是否开启修改主从server_id主库导出数据从库导入数据确定主库备份时的位点在从库配置主库信息查看复制状态并测试数据是否同步 二、准备阶段(主库和从库配置都需要修改) 1、确定主库Binlog是否开启 2、修改主从se…...
力扣-动态规划-674 最长连续递增序列
思路 dp数组定义:以i为结尾的最长连续递增序列递推公式: if(nums[i-1] < nums[i]) dp[i] dp[i-1] 1; dp数组初始化:都为1遍历顺序:顺序时间复杂度: 代码 class Solution { public:int findLengthOfLCIS(v…...
在笔记本电脑上用DeepSeek搭建个人知识库
最近DeepSeek爆火,试用DeepSeek的企业和个人越来越多。最常见的应用场景就是知识库和知识问答。所以本人也试用了一下,在笔记本电脑上部署DeepSeek并使用开源工具搭建一套知识库,实现完全在本地环境下使用本地文档搭建个人知识库。操作过程共…...
leetcode 94. 二叉树的中序遍历
题目如下 做了那么多道难题,给自己放放松。通过代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int …...
YOLOv12:目标检测新时代的破局者
目录 一、YOLOv12 横空出世二、YOLOv12 的性能飞跃2.1 多规模优势2.2 对比超越 三、技术创新与原理剖析3.1 区域注意力模块(Area Attention,A2)3.2 残差高效层聚合网络(R-ELAN)3.3 架构优化细节 四、实验验证与结果分析…...
基于OFDR的层压陆相页岩油储层中非对称裂缝群传播的分布式光纤监测
关键词:OFDR、分布式光纤传感、裂缝传播 一. 概述 四川盆地凉高山组优质页岩油储层存在复杂的垂直重叠岩性,大陆页岩油储层存在发育层理,薄层和天然裂缝,对水平井多级压裂技术的裂缝网络形态控制和监测构成挑战。本研究提出了一…...
Linux虚拟机网络配置-桥接网络配置
简介 本文档旨在指导用户如何在虚拟环境中配置Linux系统的桥接网络,以实现虚拟机与物理主机以及外部网络的直接通信。桥接网络允许虚拟机如同一台独立的物理机一样直接连接到物理网络,从而可以被分配一个独立的IP地址,并能够与网络中的其他设…...
软开经验总结
文章目录 软开经验总结一、二次开发时候操作步骤二、logger的作用!!!三、git使用 软开经验总结 一、二次开发时候操作步骤 改 SDK 和 language level改 maven 配置改数据库 注意Mysql 版本 差别是否过大!!࿰…...
关于虚拟环境中遇到的bug
conda和cmd介绍 介绍 Conda 概述: Conda是一个开源包管理系统和环境管理系统,尤其适用于Python和R语言的开发环境。它允许用户创建独立的虚拟环境,方便地管理依赖包和软件版本。 特点: 环境管理:可以创建、导入、导…...
C 语言在微软平台:经典与创新的交融
在编程语言的璀璨星空中,C 语言犹如一颗耀眼的恒星,散发着永恒的光芒。当这颗恒星与微软强大的平台相互辉映时,更是碰撞出了绚丽多彩的火花,构建起了一个充满无限可能的编程世界。 C 语言与微软平台的深厚渊源 C 语言诞生于 20 …...
大数据测试中,数据仓库表类型有哪些?
本文我们一起了解一下数据仓库测试的对象,直白一点讲就是一张表,这张表分为以下几种类型: 全量表:没有分区的表,数据全量更新或者增量合并,我们通常理解就是把这些数据放到了一个文件夹里面。这样会有什么…...
Windhawk终极指南:免费开源Windows定制工具完整教程
Windhawk终极指南:免费开源Windows定制工具完整教程 【免费下载链接】windhawk The customization marketplace for Windows programs: https://windhawk.net/ 项目地址: https://gitcode.com/gh_mirrors/wi/windhawk 你是否厌倦了Windows系统千篇一律的界面…...
智慧铁路列车车辆和人员检测数据集VOC+YOLO格式5059张2类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):5059标注数量(xml文件个数):5059标注数量(txt文件个数):5059标注类别…...
GD32F103 DAC输出不稳?排查DMA传输和定时器触发的5个常见坑点
GD32F103 DAC输出不稳?排查DMA传输和定时器触发的5个常见坑点 在嵌入式开发中,DAC(数字模拟转换器)的稳定输出对许多应用至关重要。然而,当使用GD32F103的DAC功能时,开发者常常会遇到输出波形不稳定、数据错…...
告别手动肝船!碧蓝航线自动化脚本Alas终极使用指南
告别手动肝船!碧蓝航线自动化脚本Alas终极使用指南 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 还在为碧蓝航…...
别再只用yum了!手把手教你用RPM包在CentOS 7.9上安装最新版LibreOffice 7.5.4(含中文包)
告别老旧版本:CentOS 7.9手动安装LibreOffice 7.5.4全攻略 在开源办公软件领域,LibreOffice无疑是当前最活跃、功能最全面的选择之一。然而许多CentOS用户发现,通过系统默认的yum仓库安装的LibreOffice版本往往落后官方最新版数年之久。以Cen…...
别急着换件!汇川伺服报Er.136/Er.740编码器故障,先按这3步自查(附线缆选购建议)
汇川伺服编码器故障排查指南:从干扰溯源到线缆优化 工业现场最让人头疼的莫过于设备间歇性抽风——明明昨天还运行良好,今天却频繁报Er.136或Er.740编码器故障。作为经历过数十次类似案例的技术老兵,我必须强调:80%的编码器问题根…...
手把手教你用Google Cloud语音API为Android App加个“耳朵”和“嘴巴”(附免费额度避坑指南)
实战指南:在Android应用中集成Google Cloud语音技术 想象一下,你的Android应用能够听懂用户说话,还能用自然流畅的语音回应——这不再是科幻电影里的场景。借助Google Cloud的语音API,即使是独立开发者也能快速为应用添加专业的语…...
紧急停止与异常停机:天勤策略里的断线保护与人工兜底
前言 网络闪断、进程被 kill、策略异常未捕获,都可能让持仓暴露在无人管理状态。天勤文档里有紧急停止相关能力(见 advanced/emergency_stop.rst),我把它和自建「停机即平仓/撤单」脚本配合使用。下面写工程清单,不替代…...
别再死记硬背了!用这5个HBase Shell实战场景,轻松搞定日常数据操作
HBase Shell实战手册:5个真实场景解锁高效数据操作 在数据爆炸式增长的时代,HBase作为分布式NoSQL数据库的佼佼者,凭借其高吞吐、低延迟的特性,成为处理海量结构化数据的首选方案。然而,许多开发者虽然掌握了基础命令&…...
青铜器RDM:CBB 模块全周期管控,赋能研发高效复用
阶段 1、痛点与定位在研发项目中,CBB 通用基础模块是提升研发效率、降低研发成本、保障产品可靠性的核心关键。如何高效管理、复用、评价 CBB?青铜器 RDM 系统给出一站式解决方案。阶段 2、资源库搭建与全周期管控系统内置标准化 CBB 资源库,…...
