学习日记(2026年3月24日)

今日学习内容

今天主要围绕 YOLOv11 的模型训练与视频预测展开,遇到并解决了多个实际问题。上午调试视频预测代码时,因帧分辨率过大(1422×2160)导致内存分配错误(_ArrayMemoryError),通过自动缩放帧后再还原的方式解决。下午训练自定义模型时,遇到了特征图尺寸不匹配的错误,通过修正 YAML 文件中卷积步长和索引,并恢复被污染的 block.py 文件,最终模型成功构建。此外,还处理了数据集路径配置错误的问题。

遇到的主要问题及解决方案

  1. 视频预测内存不足

· 现象:使用 model.predict(source=video) 时出现 Unable to allocate 8.79 MiB 错误,视频帧过大导致 OpenCV 无法分配内存。

· 解决:采用逐帧读取视频,在送入模型前先缩小帧尺寸(等比例缩放到 640 边长),预测后再将标注帧放大回原始尺寸保存。这样既避免内存溢出,又保证了输出视频的分辨率不变。

  1. 自定义模型(含 P2 检测层和 SimAM 注意力)特征图尺寸不匹配

· 现象:训练时报 RuntimeError: Sizes of tensors must match except in dimension 1. Expected size 8 but got size 16,提示在 head 的 Concat 层中拼接的两个特征图高宽不一致。

· 原因分析:

· YAML 中 head 第11层使用了步长为2的卷积,导致尺寸缩小一半,后续与 P4 层(40×40)拼接时尺寸不一致(20×40)。

· 同时发现测试代码错误地放在了 block.py 文件末尾,导致导入时 YOLO 未定义。

· 解决:

· 将 head 第11层的卷积步长从 2 改为 1,保持尺寸为 20×20,与上采样后的 P4 层(40×40)不直接拼接,而是先上采样再拼接。

· 清理 block.py 文件,移除末尾的测试代码,确保自定义模块 C3k2_SimAM 正确注册。

· 修正 YAML 中 backbone 索引(如第28行融合 C2PSA 层应使用索引10)。

  1. 数据集路径错误

· 现象:训练时提示 Dataset 'coal.yaml' images not found, missing path '...\coaloal\images\val',路径中出现了拼写错误 coaloal。

· 解决:检查 coal.yaml 文件,将 path 修正为正确的数据集根目录(如 E:\...\datasets\coal),并确保 train 和 val 相对路径正确。

学到的知识点

  1. YOLOv8 视频处理的内存管理:当输入帧过大时,可在读取后立即缩放,避免模型内部因内存分配失败而崩溃。

  2. 模型自定义的调试方法:使用 model.model(dummy) 测试前向传播,打印中间层尺寸定位错误;用独立的测试脚本验证模型结构,避免污染源码文件。

  3. YAML 结构对特征图尺寸的影响:FPN 中的卷积步长和上采样操作必须精确匹配,否则拼接时会出现尺寸不一致。

  4. 数据集配置的路径约定:path 指定数据集根目录,train 和 val 为相对路径,确保实际目录存在且命名正确。

收获与反思

今天在调试中更加深刻体会到"细节决定成败":一个卷积步长、一个索引数字、一个路径拼写错误,都可能导致整个程序失败。通过逐步定位和修正,不仅解决了问题,也加深了对 YOLOv8 内部结构的理解。未来在自定义模型时,应先测试前向传播,确保结构正确再投入训练,避免后期反复调试。

下一步计划

· 开始训练自定义模型,观察 SimAM 注意力对检测精度的提升效果。

· 尝试用 GPU 加速训练(当前为 CPU),提升效率。

· 继续完善视频预测脚本,增加进度条和日志记录。

相关推荐
不羁的木木18 小时前
ArkWeb实战学习笔记04-JavaScript与Native通信
笔记·学习·harmonyos
li星野19 小时前
RAG优化系列:HyDE(假设文档嵌入)——让LLM先写答案再检索
python·学习
知识分享小能手19 小时前
Flask入门学习教程,从入门到精通,Flask智能租房——用户中心知识点详解(9)
python·学习·flask
魔法阵维护师19 小时前
从零开发游戏需要学习的c#模块,第三十一章(技能冷却系统 —— 范围爆炸)
学习·游戏·c#
试剂界的爱马仕19 小时前
《古董局·终局5:潮生》第 4 章:藤田的棋局
人工智能·学习
searchforAI19 小时前
我的Obsidian知识库,现在可以自动剪藏笔记到本地了
人工智能·笔记·学习·音视频·ai工具·obsidian·视频总结
周末也要写八哥20 小时前
Visual C++6.0下载安装流程及PDF学习手册资源
c++·学习·pdf
坤坤藤椒牛肉面20 小时前
C++学习--类和对象
学习
楼田莉子20 小时前
C++20新特性:Range库
开发语言·c++·后端·学习·c++20
段一凡-华北理工大学21 小时前
工业领域的Hadoop架构学习~系列文章02:HDFS架构深度剖析
大数据·人工智能·hadoop·学习·架构·高炉炼铁