当前位置: 首页 > article >正文

从YOLOv3到YOLOv5s6:我的《明日之后》自动采集脚本升级实录(附完整代码)

从YOLOv3到YOLOv5s6我的《明日之后》自动采集脚本升级实录三年前用YOLOv3写的《明日之后》自动采集脚本最近打开GitHub发现居然还有人在提issue。看了眼游戏官网——好家伙这游戏居然还活着趁着周末把代码翻出来重跑了一遍结果在RTX 3060上帧率还不到20fps。这性能放在2023年实在说不过去于是决定用YOLOv5s6彻底重构这个项目。1. 为什么要从YOLOv3升级到YOLOv5s6去年帮朋友部署一个工业质检系统时第一次接触YOLOv5当时就被它的易用性震惊了。相比YOLOv3需要手动编译Darknet的折腾YOLOv5开箱即用的体验简直像从DOS时代跳到了macOS。性能对比实测数据指标YOLOv3-608YOLOv5s6-1280提升幅度mAP0.552.3%63.7%21.8%推理延迟(ms)48.223.5-51.2%内存占用(MB)1872896-52.1%更惊喜的是模型兼容性。原本担心要重新标注数据集结果发现YOLOv5完全兼容v3的标注格式中心点宽高归一化坐标我的旧数据集直接就能用。PyTorch生态也比Darknet友好太多想加个TensorBoard监控训练进度pip install tensorboard就搞定了。实际测试发现YOLOv5s6在1280x720分辨率下的检测精度比YOLOv3在608x608下还高出11.4个百分点2. 训练环境搭建与数据准备我的开发环境配置GPU: RTX 3060 12GBCUDA: 11.7PyTorch: 1.13.1# 创建conda环境 conda create -n yolo5 python3.8 conda activate yolo5 # 安装依赖 pip install torch1.13.1cu117 torchvision0.14.1cu117 --extra-index-url https://download.pytorch.org/whl/cu117 pip install opencv-python matplotlib pandas seaborn tqdm pyyaml数据集结构保持与v3时代一致datasets/ └──明日之后/ ├── images/ # 存放所有游戏截图 │ ├── scene1.png │ └── scene2.png └── labels/ # 对应标注文件 ├── scene1.txt └── scene2.txt标注文件示例class_id center_x center_y width height0 0.512 0.723 0.124 0.156 3 0.112 0.456 0.078 0.3423. 模型训练实战记录3.1 配置文件详解创建data/game.yaml配置文件# 数据集路径配置 path: ../datasets/明日之后 train: images # 训练集路径相对path val: images # 验证集路径 test: # 测试集路径可选 # 类别定义 nc: 11 # 类别数量 names: [树, 石头, 草药, 狼, 僵尸, 鹿, 熊, 直升机, 浆果, 蘑菇, 煤]3.2 启动训练的关键参数python train.py --img 1280 \ --batch 16 \ --epochs 100 \ --data data/game.yaml \ --weights yolov5s6.pt \ --device 0 \ --optimizer AdamW \ --cache ram遇到的坑与解决方案CUDA内存不足将batch size从32降到16启用--cache ram将数据集预加载到内存过拟合问题添加--rect参数启用矩形训练减少图像填充带来的噪声类别不平衡使用--cls 0.5增加分类损失权重3.3 训练过程监控YOLOv5内置的TensorBoard日志太香了实时查看各项指标tensorboard --logdir runs/train重点关注三个指标曲线metrics/mAP_0.5- 置信度阈值0.5时的平均精度metrics/precision- 识别结果的精确率val/obj_loss- 验证集的目标检测损失4. 部署优化与性能调优4.1 模型导出为ONNX格式import torch model torch.hub.load(ultralytics/yolov5, custom, best.pt) model.eval() torch.onnx.export(model, torch.randn(1, 3, 1280, 1280), game_model.onnx)4.2 OpenCV加速推理方案import cv2 net cv2.dnn.readNetFromONNX(game_model.onnx) blob cv2.dnn.blobFromImage(img, 1/255.0, (1280,1280), swapRBTrue) net.setInput(blob) outs net.forward()性能对比推理方式帧率(fps)GPU占用PyTorch原生4278%ONNXOpenCV5365%TensorRT加速6852%4.3 游戏窗口实时捕获方案import mss import win32gui def capture_game_window(): hwnd win32gui.FindWindow(None, 明日之后) left, top, right, bottom win32gui.GetWindowRect(hwnd) with mss.mss() as sct: monitor {left: left, top: top, width: right-left, height: bottom-top} img np.array(sct.grab(monitor)) return img[:,:,:3] # 去除alpha通道5. 完整代码实现核心检测类封装class GameDetector: def __init__(self, model_path): self.model torch.hub.load(ultralytics/yolov5, custom, pathmodel_path) self.model.conf 0.6 # 置信度阈值 self.model.iou 0.45 # NMS阈值 def detect(self, img): results self.model(img, size1280) return results.pandas().xyxy[0] # 返回DataFrame格式结果 def filter_targets(self, results, target_types): targets [] for _, row in results.iterrows(): if row[name] in target_types and row[confidence] self.model.conf: targets.append({ type: row[name], x1: int(row[xmin]), y1: int(row[ymin]), x2: int(row[xmax]), y2: int(row[ymax]) }) return targets主循环控制逻辑def main(): detector GameDetector(best.pt) while True: start_time time.time() # 捕获游戏画面 img capture_game_window() # 执行目标检测 results detector.detect(img) trees detector.filter_targets(results, [树, 石头]) # 显示检测结果 show_detection(img, trees) # 计算帧率 fps 1 / (time.time() - start_time) print(f当前帧率: {fps:.2f})6. 效果对比与优化建议升级前后的关键指标对比采集效率测试10分钟版本采集次数误采率平均帧率YOLOv38712.6%18.2fpsYOLOv5s61425.3%47.5fps几个实用优化技巧启用--half参数使用FP16精度推理速度提升20%对于固定场景使用--rect矩形推理减少图像变形调整--conf-thres和--iou-thres平衡精度与速度在Mumu模拟器上最终实现了稳定50fps的检测速度比旧版本快近3倍。最让我意外的是YOLOv5s6的功耗控制——GPU温度始终保持在65℃以下风扇噪音比v3时代小多了。

相关文章:

从YOLOv3到YOLOv5s6:我的《明日之后》自动采集脚本升级实录(附完整代码)

从YOLOv3到YOLOv5s6:我的《明日之后》自动采集脚本升级实录 三年前用YOLOv3写的《明日之后》自动采集脚本,最近打开GitHub发现居然还有人在提issue。看了眼游戏官网——好家伙,这游戏居然还活着!趁着周末把代码翻出来重跑了一遍&a…...

RecGOAT:基于LLM与图最优传输的多模态推荐系统

1. 项目背景与核心价值在信息爆炸的时代,推荐系统已经成为连接用户与内容的关键桥梁。传统推荐系统往往面临两大痛点:一是难以有效融合用户行为、文本描述、图像内容等多模态数据;二是缺乏对用户深层次意图的理解能力。RecGOAT创新性地将大语…...

抖音下载器完整指南:专业级无水印批量下载自动化方案

抖音下载器完整指南:专业级无水印批量下载自动化方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppor…...

7个实用Bootstrap-Modal案例:从简单对话框到复杂应用

7个实用Bootstrap-Modal案例:从简单对话框到复杂应用 【免费下载链接】bootstrap-modal Extends the default Bootstrap Modal class. Responsive, stackable, ajax and more. 项目地址: https://gitcode.com/gh_mirrors/bo/bootstrap-modal Bootstrap-Modal…...

7步打造你的专属宝可梦世界:Universal Pokemon Randomizer ZX完全指南

7步打造你的专属宝可梦世界:Universal Pokemon Randomizer ZX完全指南 【免费下载链接】universal-pokemon-randomizer-zx Public repository of source code for the Universal Pokemon Randomizer ZX 项目地址: https://gitcode.com/gh_mirrors/un/universal-po…...

基于MCP协议的中文敏感词过滤工具:集成DFA算法与AI工作流

1. 项目概述:一个敏感词过滤的“瑞士军刀”最近在做一个内容社区的后台审核系统,最头疼的就是用户生成内容(UGC)的合规性检查。手动审核效率低,用现成的云服务又担心数据隐私和定制化问题。就在这个当口,我…...

5分钟掌握原神抽卡数据分析:免费开源工具完整使用指南

5分钟掌握原神抽卡数据分析:免费开源工具完整使用指南 【免费下载链接】genshin-wish-export Easily export the Genshin Impact wish record. 项目地址: https://gitcode.com/GitHub_Trending/ge/genshin-wish-export 还在为原神抽卡记录无法保存而烦恼吗&a…...

构建AI客服系统时利用Taotoken实现模型的灵活调度与降级

构建AI客服系统时利用Taotoken实现模型的灵活调度与降级 1. 高并发客服系统的核心挑战 在线客服系统需要处理大量并发请求,同时保证响应速度和稳定性。传统单一模型接入方式存在明显瓶颈:当主模型因流量激增或服务波动导致响应延迟时,缺乏快…...

锁相环CD4046的另类玩法:不只用VCO,巧用74LS161实现可编程分频

锁相环CD4046与74LS161的创意组合:构建可编程分频系统 在电子设计领域,资源复用和低成本优化一直是工程师追求的目标。当我们手头没有专用分频芯片时,如何利用常见元器件实现灵活可调的分频功能?本文将展示一种巧妙结合CD4046锁相…...

智能号码解析:3分钟实现陌生来电精准定位的终极指南

智能号码解析:3分钟实现陌生来电精准定位的终极指南 【免费下载链接】location-to-phone-number This a project to search a location of a specified phone number, and locate the map to the phone number location. 项目地址: https://gitcode.com/gh_mirror…...

终极Equalizer APO音频调校指南:从基础配置到专业级音质优化

终极Equalizer APO音频调校指南:从基础配置到专业级音质优化 【免费下载链接】equalizerapo Equalizer APO mirror 项目地址: https://gitcode.com/gh_mirrors/eq/equalizerapo Equalizer APO是一款免费开源的Windows系统级音频处理工具,通过强大…...

Betaflight开源飞控固件:从架构设计到高级调优的完整教程

Betaflight开源飞控固件:从架构设计到高级调优的完整教程 【免费下载链接】betaflight Open Source Flight Controller Firmware 项目地址: https://gitcode.com/gh_mirrors/be/betaflight Betaflight作为业界领先的开源飞行控制器固件,为多旋翼和…...

终极解决:Homebrew-Extensions 项目常见问题解决方案

终极解决:Homebrew-Extensions 项目常见问题解决方案 【免费下载链接】homebrew-extensions Homebrew tap for PHP extensions :beers: 项目地址: https://gitcode.com/gh_mirrors/ho/homebrew-extensions Homebrew-Extensions 是一个专为 PHP 开发者打造的 …...

pynput社区贡献指南:如何为这个开源项目添砖加瓦

pynput社区贡献指南:如何为这个开源项目添砖加瓦 【免费下载链接】pynput Sends virtual input commands 项目地址: https://gitcode.com/gh_mirrors/py/pynput pynput是一个强大的Python库,用于监控和控制用户输入设备,包括键盘和鼠标…...

RedisBloom完全指南:5大概率数据结构彻底解析

RedisBloom完全指南:5大概率数据结构彻底解析 【免费下载链接】RedisBloom Probabilistic Datatypes Module for Redis 项目地址: https://gitcode.com/gh_mirrors/re/RedisBloom RedisBloom是Redis的概率数据类型模块,为开发者提供了高效的布隆过…...

WaveTools鸣潮工具箱:终极游戏性能优化与账号管理完整指南

WaveTools鸣潮工具箱:终极游戏性能优化与账号管理完整指南 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools WaveTools鸣潮工具箱是一款专为《鸣潮》玩家设计的全能辅助工具,能够一键…...

终极IPyParallel入门指南:5分钟搭建你的第一个并行计算集群

终极IPyParallel入门指南:5分钟搭建你的第一个并行计算集群 【免费下载链接】ipyparallel IPython Parallel: Interactive Parallel Computing in Python 项目地址: https://gitcode.com/gh_mirrors/ip/ipyparallel IPyParallel是一款强大的Python并行计算工…...

不只是安装:用FFTW库在Visual Studio里做个简单频谱分析(附完整C++代码)

不只是安装:用FFTW库在Visual Studio里做个简单频谱分析(附完整C代码) 信号处理工程师和研究者们常常需要将时域信号转换为频域表示,以便分析信号的频率成分。FFTW(Fastest Fourier Transform in the West)…...

2026最权威的AI学术神器解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 借助自然语言处理以及深度学习模型的免费AI论文写作工具,能够按照用户所输入的标…...

不止于信号路由:用TMS320F28374S的CLB X-BAR和ePWM X-BAR设计一个自定义硬件保护电路

基于TMS320F28374S的硬件级电机保护系统设计:CLB与ePWM X-BAR深度应用 在电机控制系统中,过流和过压保护的响应速度直接关系到设备安全性和可靠性。传统软件保护方案受限于中断延迟和调度周期,难以实现纳秒级响应。本文将展示如何利用TMS320F…...

如何用Happy Island Designer在10分钟内完成完美岛屿布局规划

如何用Happy Island Designer在10分钟内完成完美岛屿布局规划 【免费下载链接】HappyIslandDesigner "Happy Island Designer (Alpha)",是一个在线工具,它允许用户设计和定制自己的岛屿。这个工具是受游戏《动物森友会》(Animal Crossing)启发…...

R3nzSkin国服换肤工具完整指南:零风险解锁英雄联盟全皮肤体验

R3nzSkin国服换肤工具完整指南:零风险解锁英雄联盟全皮肤体验 【免费下载链接】R3nzSkin-For-China-Server Skin changer for League of Legends (LOL) 项目地址: https://gitcode.com/gh_mirrors/r3/R3nzSkin-For-China-Server 你是否曾羡慕别人拥有的稀有英…...

Open UI5 源代码解析之1234:LocalResetAPI.js

源代码仓库: https://github.com/SAP/openui5 源代码位置:src\sap.ui.fl\src\sap\ui\fl\write\api\LocalResetAPI.js LocalResetAPI 详细分析 文件定位与整体判断 LocalResetAPI.js 位于 sap.ui.fl 模块下的 write/api 目录。单看目录层级,就能看出它不是一个直接面向业…...

零基础3分钟学会:Degrees of Lewdity中文汉化完整指南

零基础3分钟学会:Degrees of Lewdity中文汉化完整指南 【免费下载链接】Degrees-of-Lewdity-Chinese-Localization Degrees of Lewdity 游戏的授权中文社区本地化版本 项目地址: https://gitcode.com/gh_mirrors/de/Degrees-of-Lewdity-Chinese-Localization …...

你的Linux服务器安全吗?从一次nanominer挖矿入侵,聊聊SSH和权限管理的那些坑

Linux服务器安全加固实战:从入侵事件到防御体系构建 当我在凌晨三点收到服务器告警通知时,GPU温度已经飙升到危险阈值。登录后看到python进程占满所有计算资源的那一刻,我意识到这不是普通的性能问题——这是一次精心策划的加密货币挖矿入侵。…...

使用Taotoken CLI工具一键配置多款AI开发工具环境

使用Taotoken CLI工具一键配置多款AI开发工具环境 1. Taotoken CLI工具概述 Taotoken CLI工具(taotoken/taotoken)是为开发者设计的命令行工具,旨在简化多款AI开发工具的配置流程。通过该工具,开发者可以快速为Claude Code、Ope…...

PiliPlus:开源跨平台B站客户端终极指南,5分钟打造纯净观影体验

PiliPlus:开源跨平台B站客户端终极指南,5分钟打造纯净观影体验 【免费下载链接】PiliPlus PiliPlus 项目地址: https://gitcode.com/gh_mirrors/pi/PiliPlus 你是否厌倦了官方B站客户端的广告弹窗和功能限制?想要一个纯净、高效、跨平…...

gh_mirrors/tem/templates最佳实践:10个提升团队文档效率的技巧

gh_mirrors/tem/templates最佳实践:10个提升团队文档效率的技巧 【免费下载链接】templates A set of standard document templates. 项目地址: https://gitcode.com/gh_mirrors/tem/templates gh_mirrors/tem/templates是一套标准化文档模板集合&#xff0c…...

Go语言实现本地大模型推理:llama.go架构解析与工程实践

1. 项目概述:当Llama遇见Go,本地大模型推理的新选择 如果你和我一样,对在本地运行大型语言模型(LLM)充满兴趣,但又对Python生态的依赖和部署复杂性感到头疼,那么 gotzmann/llama.go 这个项目…...

Obsidian Excel插件终极指南:5分钟实现笔记与表格的无缝整合

Obsidian Excel插件终极指南:5分钟实现笔记与表格的无缝整合 【免费下载链接】obsidian-excel 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-excel 在Obsidian中管理表格数据时,你是否经常遇到格式错乱、数据割裂的困扰?传…...