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

今日学习内容

今天主要围绕 YOLOv8 视频目标检测的完整流程进行实践,重点解决内存不足和代码变量错误的问题。上午复习了 Ubuntu 系统中查看 conda 环境的方法,使用 conda env list 快速确认当前环境。下午着手处理一个实际项目:用训练好的 best.pt 模型对一段屏幕录制视频进行检测,并保存标注后的结果。

遇到的主要困难

  1. 内存分配错误:运行预测脚本时,出现 _ArrayMemoryError: Unable to allocate 8.79 MiB 的报错,原因是视频帧分辨率过大(1422×2160),OpenCV 在读取帧时无法分配足够内存。

  2. 变量未定义:修正内存问题后,又遇到 NameError: name 'input_video' is not defined,因为在配置部分用了 video_path,但代码中却引用了 input_video。

解决方法

· 对于内存问题,我在代码中增加了自动缩放机制:当帧面积超过设定阈值(如1080p)时,先等比例缩小帧送入模型预测,再将标注后的帧放大回原始尺寸保存,这样既避免了内存溢出,又保证了输出视频的分辨率不变。

· 对于变量命名错误,我将配置参数统一为 input_video 和 output_video,并修改了代码中所有引用,确保一致性。

收获与反思

今天深刻体会到"细节决定成败":一个变量名不匹配就可能让整个程序崩溃。同时学会了用"先缩放、后还原"的策略处理大尺寸视频,这是工程中应对内存限制的常用技巧。通过这次实践,我对 OpenCV 的视频读写、YOLO 模型推理的内存管理有了更具体的认识。不足的是,没有提前估算视频帧尺寸,导致反复调试,下次应先检查视频属性再设计处理方案。

下一步计划

明天将尝试用 GPU 加速推理,并对比不同缩放比例对检测精度的影响,同时学习如何将结果视频叠加时间戳和类别标签,增强可视化效果。

相关推荐
你想知道什么?9 分钟前
神经网络-学习笔记
笔记·神经网络·学习
CappuccinoRose1 小时前
专项事件体系
前端·学习·网络状态·表单事件·剪贴板事件·拖放事件·页面可见性
(Charon)1 小时前
【Kafka】消息队列学习(一):为什么需要Kafka?从消息队列到整体架构
学习·架构·kafka
传奇开心果编程2 小时前
【Rust入门知识点学与练】第26课:Unsafe Rust
开发语言·学习·rust
励志不掉头发的内向程序员2 小时前
【LibreCAD 2D架构】从 addHistory 到 RS_UndoCycle:LibreCAD 里的两套 History 与撤销机制
开发语言·c++·qt·学习·系统架构
`流年づ2 小时前
人工智能学习笔记 - 自动微分
人工智能·笔记·学习
那年窗外下的雪.2 小时前
AIDC 学习日志|第 24 天|设备输出反推与 MAC Flapping 定位
网络协议·学习·tcp/ip·http·macos·tcpdump
minglie12 小时前
espidf驱动SPI ST7735S LCD
学习
kaixin_啊啊3 小时前
Codex论文辅助全流程
人工智能·笔记·学习·ai·大模型
愚公移山填海3 小时前
【无标题】
笔记·python·学习·pycharm