yolo

杂项

1.运行的时候需要的文件
	1.opencv_darknet.dll
	2.names cfg weights 三个文件
		1.cjml\data\yolov3.names
			1.比如 玛丽 花朵 乌龟 砖头
		2.cjml\cfgv4\yolov4-tiny-dota2.cfg
			1.里面是这个项目的配置
		3.cjml\backupdota2\yolov4-tiny-dota2_last.weights
			1.里面是这个项目的权重

创建项目

流程

1.打开 yolo综合工具 在项目名称里面点 创建 比如 cjml
	1.创建后 在  ProjectNames 下面会生成 cjml ProjectNames\cjml
	2.在 cjml 下面 data 目录 下面有
		1.JPEGImages 里面放入图片后 综合工具会自动载入 综合工具的 打开图库 点击后 就会打开
		2.ProjectNames\cjml\data\JPEGImages 这个文件夹
2.手动标注
	1.新建立类别 比如 玛丽 花朵 乌龟 砖头 这个建立后 保存在
	2.选中 类别后 再图片中 画方框
	3.都标记完毕后 进入 训练状态
	4.关于手动标注的注意事项
		1.框选的大小正合适为好
		2.如果因为图片的缩放 导致最后的识别框选 大小不合适 会导致最后少识别 字符 比如 AB两个字符 A的字符识别后的标注空间
			1.如果遮盖住了B B就不识别了 所以全部标注完毕后 再检查一遍框的大小
	5.另外要防止误操作 点了一个点 作为标记的 都影响笔记大
	6.操作经验
		1.箭头上下左右(A D  可以 W S 不行) 可以移动
		2.左键点击选中后 可以改变大小 移动 退选后 可以下一页
		3.右键可以拖动 滚笼可以放大缩小 del删除当前的图片
3.训练
	1.选择 yolov4 直接点击 开始训练 就等训练结果就行了
	2.再右边 继续 训练 权重文件的地方 开始是空的 没有的 当训练后 这里就有这个文件了
		1.cjml\backupdota2\yolov4-tiny-dota2_last.weights
		2.训练次数少 是看不到这个文件的
	3.可以选择 继续训练
	4.训练 200次 为一组 写入到 权重文件中去 不够 200 次 不保存
	5.loss 值训练 越来越低 一般当低于 0.4 可以识别
	6.当标注的类别 增加后 可以继续训练
	7
4.关于GPU 和 CPU 需要的文件
	1.在 YoPj 里面 有 GPU.cmd vulkan_v4.dll 和 vulkan.exe 三个文件 在 GPU 识别中需要 在 CPU 识别中 仅仅需要一个Dll 文件
		1.opencv_darknet.dll
	2.另外通过 EPRG.exe 可以把 yolov4 模块 反编译成源码 在修改编译为 模块 可以正常调用 只需去掉 启动子程序 里面精模块的部分

sun yolo

目录相关

快捷键打开目录

1.打开主目录:SupportV8\YOLOv8-CPU\1 (所谓主目录就是 识别是用 CPU 还是 GPU 用CUDA)
	1.打开测试截图目录 : \YOLOv8-CPU\1\截图测试
2.打开数据集目录:0000000000delete\1
	1.标注后一键导出在 0000000000delete\1 这个数据集目录下面 文件夹下面
		1.Label.db 在 1\images\ 所有bmp Label.db(SQLite) 里面保存了临时标注时候的 图片信息
	2.一键导出后 会在这个目录下面生成 images label 分别是图片和标注信息

文件介绍

1.YOLOv8-CPU\1\cfg.yaml 里面是训练时候的配置 (每个配置:后面有一个空格 每行后面有 2 个空格)
	imgsz: 640  
	save: True  
	save_period: -1  
	cache: False  
2.0000000000delete\1\data.yaml
	1.里面内容如下
		path: C:/Users/Administrator/Desktop/0000000000delete/1
		train: images
		val: images
		names: ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9']
	2.在 names 里面 [] 里面 可以先生成这个格式 直接粘贴进去 关闭再打开即可
		1.在标注里面 有 分类转换工具
3.0000000000delete\1\pt\train\weights
	1.训练后 如果是首次训练 在此处生成训练的结果
	2.在选择训练模型的时候 可以选择 原始的 yolov8n.pt yolov8s.pt 或者已经训练好的模型 last.pt
	3.如果选择 last.pt 可以继续训练 也可以首次训练 如果是继续训练 还是训练的结果还是写进 以前项目里面的 就算复制过来也不行
	4.如果点首次训练 可以在以前项目的基础上 从第一次训练 但是 属于站在巨人的肩膀上
	5.如果站在巨人的肩膀上 选择 继续训练 新配置的参数无效 比如batch数量 以前是 16 现在配置成 32 也不行 但是如果选首次训练
		1.就会以 32 来训练 每次载入 32 个图片 提高效率

关于文件总结

1.只有截图 和 配置文件 cfg.yaml 默认是在 CUDA 或者 CPU 下面的 1 下面
2.其他的都是 在 数据集 目录
3.在设置

数据集下面的目录介绍

1.images 里面存图片 除了图片 还有 一个 Label.db 里面是存放的 标记情况 这个文件夹可以单独载入刷新 就可以看到标记情况
	1.完全脱离了 labels 可以直接 一键导出为 images和labels
2.labels 存放的具体的标记情况 训练的时候 必须的文件
3.model 轻量模型转换出来的 必须是轻量的 CPU CUDA10.2 CUDA 11.3 原生的不行 里面没有 export 程序
	1.转换后 里面有三个文件 bin names param 到时候 E程序直接读入
4.predict 预测 结果文件夹 有 labels 和 已经框出来的结果 但是图片上已经被涂鸦了 
	1.可以用这个labels 和 原始的 images 用 标注文件转Label 功能 产生 Label.db 这个文件在 images 文件夹中
	2.然后 拿上这个 带有 Label.dab 的 images 文件夹 到标注功能 把文件夹路径放进去 刷新 就会发现全部标注了
	3.也就是 变相实现了 自动标注
5.pt 里面有 train 里面有 best.pt last.pt 就是训练的结果
6.val 是验证 里面也有  train
7.data.yaml 类文件 内容如下
	path: C:/Users/Administrator/Desktop/0000000000delete/1
	train: images
	val: images
	names: ['A','B','C','D','E','F']

关于 验证

1.选择权重pt和data文件 后 点验证 会生成如下表
验证 各个 类的 识别度 如下
                Class     Images  Instances      Box(P          R      mAP50  mAP50-95): 100%|██████████| 5/5 [00:10<0
                   all        138       2789      0.996      0.989      0.992      0.975
                     0        138         84      0.998          1      0.995      0.978
                     1        138         83          1       0.98       0.99       0.98
                     2        138         76      0.999      0.974       0.98       0.97
                     3        138         63      0.998          1      0.995      0.981
                     4        138         89          1       0.94      0.981      0.959
                     5        138         77          1          1      0.995       0.98
                     6        138         59      0.997          1      0.995      0.986
2.如果某个类识别率(mAp)低 可以专门针对这个类就行标注训练针对性提高

关于各种命令 [mode MODE 默认为train,模式总共有train(训练)、predict(预测)、val(验证)、export(模型转换)]

1.训练
	1.>aidmlm --mode=train --cfg=C:\Users\Administrator\Desktop\0delete\yolo\YolovXTools0225\SupportV8\YOLOv8-CPU\1\cfg.yaml
2.验证
	1.>aidmlm --mode=val --cfg=C:\Users\Administrator\Desktop\0delete\yolo\YolovXTools0225\SupportV8\YOLOv8-CPU\1\cfg.yaml

关于 预测 predict

1.预测后在 0000000000delete\1\predict\train\ 下 有 labels 和 各个图片的标注 可以标注
2.可以预测 视频 也可以预测 图片
3.预测后 如何 替代自动标注呢?
	1.预测后 可以将 labels 里面的 标注保存出来 想要在标注里面 输入路径 点 刷新 显示已经标注 取决于 一个文件 Label.db
	2.如果有 对应的 Label.db 就可以显示出 已经标记过了 这时候 就不需要对应的 labels 只要图片的文件夹里面有 Label.db
	3.刷新后就会显示出已经自动标记了 然后 一键导出后 就会生成两个文件 images 和 labels
	4.当然自动标注也可以实现同样的效果

关于 轻量版识别

1.可以随时打开 打开内置看图工具
2.可以选择 起始 xy 点 日志 矩形 线条 id 分类名 可信度 模型如果没有加密 密码不填即可
3.如果 想加密 可以选择 模型加密

sunyolo 开发 chrome captcha 整个流程

1.设置好 设置YOLOv8所在目录  P:\study\yolo_code\yolo\YolovXTools0225\SupportV8\YOLOv8-CPU
2.点击 菜单 生成数据集目录 输入 目录名称 chrome_captcha
	1.也就是在 设置好的 YOLOv8所在目录 下面的 1\datasets\ 加上这个文件夹名字 就是整个目录
	2.P:\study\yolo_code\yolo\YolovXTools0225\SupportV8\YOLOv8-CPU\1\datasets\chrome_captcha
	3.此时在 chrome_captcha 文件夹下 默认有三个文件
		1.images
			1.这个里面放要标记的文件
		2.labels
			1.这个是标记后的记录
		3.data.yaml
			1.这是这个项目的信息文件
				path: C:/Users/AF5/Desktop/YOLOv8ql/YOLOv8-CPU/1/datasets/qh
				train: images
				val: images
				names: ['技能1','JN2','JN3','H1','H2']
					1.这个就是各种类别 可以提前写成 一个类一行 写成这种格式 放入  names 里面
					2.names: ["人行","红绿灯","公交车","自行车","小轿车","摩托车","消防栓","楼梯","船"]
3.设置好分类后 开始 标记
	1.这个标记的图片目录可以是在任何位置  可以不在 数据集目录下面 选择路径就可以了
	2.标记后 会在该图片目录生成一个  lable.db 这个里面 放着 标记的图片信息 只要图片文件夹里面有这个文件在 标记信息就在
	3.然后可以选择 一键导出 会导入到 项目目录下面
		1.P:\study\yolo_code\yolo\YolovXTools0225\SupportV8\YOLOv8-CPU\1\datasets\chrome_captcha
		2.这个目录多出两个文件夹  images lables
			1.images 里面就是图片
			2.lables 里面 是每个图片的标记信息 训练就是靠这个 一一对应关系 去训练的
			3.同时 这个 labels 和 images 结合 也可以生成  label.db 文件
4.关于 CPU 和 GPU
	1.CPU 模型 v8 用原生和轻量都可以
	2.GPU 模型 必须用原生
		1.并且 得查看版本型号
			1.用 cmd 命令 查看 nvidia-smi 可以看到个表格  有这个版本信息 NVIDIA-SMI 536.40
			2.查看 Nvidia控制面板 有的直接就看到了 如果看不到 点帮助 系统信息 就可以看到了
				1.GTX 30开头 以下 用 CUDA10.2 版本 最低驱动版本要求 441.22
				2.否则就用 CUDA11.3 版本 最低驱动版本要求 465.89
	3.但是原生的 无法 转为轻量型的 所以 要用 轻量型 里面的 export.exe 转为 程序可以调用的 轻量型的
5.关于转为轻量包
	1.必须用原生的 环境
	2.但是需要把轻量的环境里面的 export.exe torchscript2bin.exe 这两个程序 复制到 原生中去
	3.转换完成后 会生成到 当前目录集的 model 文件夹 里面 每次训练 会生成一个文件夹 里面有三个文件
		1.aidmlm.bin
		2.aidmlm.names
		3.aidmlm.param
		4.当然 这三个 文件的 名字是可以更改的
		5.然后可以在 CPU 模式下 用 E 代码 调用识别
6.关于尺寸
	1.尺寸越大 训练越慢 效果还不一定好
	2.像比较小的图片 自己手动放大看 多少倍会出现 类似 马赛克效果 说明那么大就差不多了
	3.像 google 验证码切图 288 感觉就型 如果不切图 需要到 640
	4.如果设置 超过 自己 GPU 的性能 速度就非常慢 可以在 任务管理器查看 GPU性能 感觉超过50% 就 很慢了
	5.所以 批次数 和 尺寸 要合理的结合
	6.好像只要 GPU 利用率 不高 GPU 内存占的高点也不卡 但是 利用率 一旦起来 就会变卡
7.关于 首次训练 和 继续训练
	1.如果改了参数 就必须首次训练 否则 如果选继续训练 参数不生效
		1.但是 可以 把已经训练出来的 .pt 文件 作为 首次训练的初始模型 这时候 mAP 上来就很低
		2.但是 次数 从 1 计算 起
		3.包括改 训练时计算mAP 继续训练也不生效
	2.所以最优模式
		1.可以不停的去以不同的参数去运行
		2.然后如果改参数 就以上次的 运行结果模型 作为 初始模型
		3.这样不断的改 就可以找到合适的参数模型 让GPU 更高效合理的利用
		4.最开始的模式不要打开 训练时计算mAP 当通过训练看到 三个 loss 的平均值变小后 感觉 mAP 估计小了
			1.此时再以上次模型为初始模型 重新开始一轮新从训练 这次训练把 计算 mAP 给加上
			2.因为计算 mAP 是 很浪费时间的
		5.不管怎么调整参数 最终 GPU 利用率 控制在 20% 以内 效果最好 否则会训练得很慢
posted @ 2024-03-19 15:42  闭区间  阅读(15)  评论(0编辑  收藏  举报