- 1 - 研 究 生 课 程 论 文 封 面 ( 20 25 — 20 26 学年 第 一 学期) 课程名称: 机器学习案例 课程类型: 专业学位课(必修课) 授课教师: 张恺 学 时: 32 学 分: 2 论文得分 批阅人签字 批阅意见: 论文题目 : 基于深度学习的游戏视频智能 解说(弹幕)系统 姓名: 杨云鑫 学号: 212512020054 年级: 2025 级 专业: 电子信息 学院: 物理与电子信息学院 注意事项: 1 、 以上各项由研究生本人认真填写; 2 、 研究生课程论文应符合一般学术规范,具 有一定学术价值,严禁抄袭或应付;凡学 校检查或抽查不合格者,一律取消该门课 程成绩和学分,并按有关规定追究相关人 员责任; 3 、 论文得分由批阅人填写,并签字确认;批 阅人应根据作业质量客观、公正的签写批 阅意见(原则上不少于 50 字); 4 、 原则上要求 所有课程论文 均须用 A4 纸打 印,加装本封面 , 左侧装订; 5 、 课程论文由学生所在学院 ( 系 ) 统一保存 , 以备查用。 河南理工大学研究生院制 - 2 - 目 录 1 绪论 ..................................................................................................................................... 3 1.1 任务背景 ........................................................................................................... 3 1.2 系统整体说明 ................................................................................................... 4 2 设计对象与数据准备 ......................................................................................................... 4 2 .1 游戏选择 ........................................................................................................... 4 2 .2 数据来源介绍 ................................................................................................... 4 3 解说方案与数据标注 ......................................................................................................... 5 3 .1 解说池设计思路 ............................................................................................... 5 3 .2 数据处理及标注 ............................................................................................... 6 4 模型构建与训练 ................................................................................................................. 7 4 .1 模型结构说明 ................................................................................................... 7 4 .2 训练方法说明 ................................................................................................... 8 4 .2 解说合成与视频渲染实现 ............................................................................. 1 1 5 实验结果与分析 ............................................................................................................... 1 3 5 .1 实验结果 ......................................................................................................... 1 3 5 .2 效果分析 ......................................................................................................... 1 4 5 3 失败案例与问题分析 ..................................................................................... 1 5 6 总结与展望 ....................................................................................................................... 1 7 6 .1 总结 ................................................................................................................. 1 7 6 2 可能改进的方向 ............................................................................................. 1 7 - 3 - 1 绪论 1.1 任务背景 近年来,随着电子竞技的快速发展, MOBA ( Multiplayer Online Battle Arena )类游戏如《王者荣耀》 和《英雄联盟》 在全球范围内拥有数亿玩家 , 在 其影响下 , 游戏视频的数量呈爆炸式增长 。 当 观看比赛录像或直播时 , 实时的解 说能够极大地提升观众的沉浸感。然而,人工解说成本高昂且难以覆盖海量 的 UGC (用户生成内容)视频。 MOBA (多人在线战术竞技)为了提升观众的观看体 验,实时的 游戏 比赛解说至关重要。 如今 , 计算机视觉技术的进步使得机器 “ 看懂 ” 视频成为可能 , 可以很方便 地让 观众快速理解战局 。 传统的图像分类技术(如 AlexNet, VGG )只能处理静 态图片 , 无法理解 “ 动作 ” 的连续性 ( 例如 : 英雄从草丛移动到线上并释放技能 是一个连续过程 ) 。 因此 , 本任务的核心挑战在于如何让机器同时理解 “ 画面里 有什么 ” ( 空间特征 ) 和 “ 动作是如何发生的 ” ( 时间特征 ) , 即 视频动作识别 ( Video Action Recognition ) 。本课程设计旨在利用深度学习技术,构建一个 游戏视频智能解说(弹幕)系统 。该系统能够输入一段游戏视频,自动识别画 面中的局势变化(如团战、发育、推塔等),并输出对应的解说弹幕 。 1.2 系统整体说明 本系统旨在构建一个基于深度学习的端到端( End-to-End ) MOBA 游戏视频 智能解说框架 。 系统以 《 王者荣耀 》 游戏视频为输入对象 , 通过计算机视觉技术 实时分析画面中的时空特征,识别当前战局状态(如团战、发育、 Gank 等), 并最终合成带有语义对应关系的中文解说弹幕视频。整体数据流如下: 输入层: 接收任意时长的《王者荣耀》对局录像( MP4/AVI 格式)。 预处理层: 采用滑动窗口算法( Sliding Window )将长视频切分为固定时长的 片段( Segment ),并进行抽帧与归一化。 特征提取层 (Encoder) : 使用在 ImageNet 上预训练的 ResNet-18 网络提取每 一帧的高维特征向量。 时序建模层 (Decoder) : 将特征序列输入 LSTM 网络,聚合上下文信息。 输出层: 通过全连接层映射到预定义的解说类别,并利用 OpenCV+PIL 渲染引 擎将解说词以弹幕形式回写到视频帧上。 - 4 - 2 设计 对象与数据准备 2.1 游戏选择 根据任务书要求 , 本项目选择 《 王者荣耀 》 作为研究对象 。 该游戏采用上 帝视角,相比于 FPS (第一人称射击)游戏, MOBA 游戏采用固定的俯视视角。 地图背景相对静态 , 仅英雄 、 兵线和特效在移动 。 这种视觉特性非常有利于 CNN ( 卷积神经网络 ) 提取前景特征,降低了背景噪声的干扰。画面元素(如英雄血 条 、 技能特效 、 防御塔 ) 特征显著 , 且 局势逻辑清晰 , 而且游戏中的行为动作和 经典事件比较多,可以很容易设计出数据标签, 非常适合计算机视觉建模 。 2.2 数据来源介绍 为了保证训练数据的质量与信息密度 , 本 设计 并未采用低端局录像 , 而是制 定了严格的数据采集标准 , 视频 数据 全部 采集自 B 站 2025 年 KPL 职业联赛回 放 , 如图 2-1 所示 。 这些对局中战术执行明确 , 团战爆发规律 , 无效垃圾时间少 。 图 2-1 由于完整对局通常长达 15-20 分钟,包含大量无意义的跑图时间 ,而且是 KPL 官方赛事回放 , 里面不可避免的会插入一些广告信息 , 这些信息严重影响观 感和模型训练,先采用剪辑软件把视频里的广告等与标签画面无关的东西剪掉 。 根据任务书的建议,最终 将原始视频剪辑为 6 至 8 分钟的精彩片段。 因为要照顾到游戏片段观感, 重点保留了 清线发育 、 局部集火、完美团战 、 重要龙点以及 推高地等关键事件 。 剔除了英雄选择界面 、 加载 界面 、 商店购买界 面以及长时间的黑屏转场。原始分辨率均为 1080 p (1 920 × 1080 ) ,涵盖了游戏 的前、中、后期全流程。 帧率为 6 0fps ,保证了动作的连贯性。 - 5 - 3 解说方案与数据标注 3.1 解说池设计思路 本 设计不采用生成式文本的方法 , 而是采用分类映射法 。 将 “ 解说生成 ” 建 模为多分类问题 来处理 。 根据游戏进程的逻辑 , 设计了一个包含 14 个 类别的固 定解说池 , 每个标签( Label )都对应一个类别事件 。 解说池的设计依据游戏里 面的常见动作, 解说内容设计为短句弹幕风格 , 内容 符合 王者荣耀 游戏的语境 。 以下是设计的 14 个标签: Label 0 -> " 【开局】 全军出击!对局开始啦 " Label 1 -> " 【发育】 平稳发育中,积攒经济 " Label 2 -> " 【游走】 双方正在游走,寻找机会 " Label 3 -> " 【埋伏】 嘘!草丛里有人蹲人! " Label 4 -> " 【反野】 强势入侵!抢夺对面野区 " Label 5 -> " 【控龙】 正在打龙,争夺关键资源 " Label 6 -> " 【推塔】 拆迁队上线!压制防御塔 " Label 7 -> " 【高地】 兵临城下!正在逼近高地 " Label 8 -> " 【拉扯】 互相试探,消耗血量 " Label 9 -> " 【 Gank 】 抓到了!这里发生了一次交火! " Label 1 0 -> " 【团战】 正面 5V5 团战爆发!神仙打架! " Label 1 1 -> " 【击杀】 蓝方拿下人头! " - 6 - Label 1 2 -> " 【击杀】 红方还以颜色! " Label 13 -> " 【胜利】 Victory! 恭喜获胜方 " 3.2 数据处理及标注 由于原始视频无法直接输入神经网络 , 必须经过切分 、 抽帧和清洗 。 本项目 设计了自动化的数据处理流水线。 切分策略 : 采用滑动窗口法 , 设定窗口大小 Window_Size = 4s , 步长 Step = 4s 。将长视频离散化为若干个短视频片段( Clips )。每个片段作为一个独立 的训练样本 。 人工标注:使用 CSV 索引文件记录标注信息。格式如下: filename, label game01_clip_001.mp4, 0 game01_clip_002.mp4, 1 ... 如图 3-1 所示 图 3-1 标注过程中剔除了转场动画和切坏的片段 ( 提取不到有效信息 ) 等无效样本 , 确保每个小片段都有对应的标签。 抽帧策略 : 视频数据具有高度的时序冗余性 ( 相邻两帧画面差异极小 ) 。 为 了降低计算量并防止过拟合 , 对每个 4 秒片段采用均匀抽帧策略 , 从每个片段中 均匀抽取 12 帧关键图像。 数据增强 : 为了提高模型在不同录制环境下的鲁棒性 , 在训练集上应用了随 机数据增强:随机水平翻转 (Random Horizontal Flip): 概率 p=0.5 。模拟红 - 7 - 蓝方视角的镜像变化 。 颜色抖动 (Color Jitter): 随机调整亮度 ( ± 10%) 和对 比度 ( ± 10%) ,模拟不同设备屏幕录制的色差。 图像预处理 :为了适配 ResNet-18 模型的输入要求,对所有抽取出的帧进 行了统一处理,首先是尺寸调整,将原始 1920 × 1080 的图像强制缩放为 160 × 160 像素。因为 160px 是保留小地图与技能细节的最小分辨率阈值,且能保 证在显存有限的情况下支持 Batch_Size=16 的训练。然后再进行归一化处理, 使用 ImageNet 数据集的统计参数进行标准化 , 这可将像素值映射到分布更均匀 的区间,有助于梯度下降算法的快速收敛。 数据集划分 :最终构建的数据集共包含有效样本 504 个。如图 3-2 所示。按照 8:2 的比例随机划分为:训练集 (Training Set) ,用于模型权重的更新。验证 集 (Validation Set) :用于监控训练过程中的 Loss 变化,防止过拟合。 图 3-2 - 8 - 4 模型构建 与训练 4.1 模型结构说明 为了同时处理视频数据的 “ 空间特征 ” 与 “ 时间特征 ” , 模型 构建了一种基 于 CNN-LSTM 的复合神经网络架构。 虽然 Transformer 在捕捉长距离依赖方面具有显著的技术优势,但是,它 对数据量的需求极大。在本 设计 仅有几百个样本的小样本场景下,强行使用 Transformer 极易导致严重的过拟合 , 且训练难以收敛 。 相比之下 , CNN-LSTM 架 构虽然在长时序上略逊一筹,但在小数据下泛化能力更强、训练更稳定。因此 , 基于 数据规模的客观限制,我选择了性价比更高的 CNN-LSTM 架构 ,而将 Transformer 作为数据扩充后的下一步改进方向。 同 时 , 考 虑 到 训 练 数 据 有 限 , 我 没 有 从 零 初 始 化 权 重 , 而 是 调 用 了 torchvision.models 库中在 ImageNet 数据集上预训练好的权重文件,并在此 基础上进行了迁移学习 (Transfer Learning) 和微调 。 采用 ResNet-18 作为空 间特征提取器 , 采用 LSTM 作为时序逻辑推理器 。 传统的图像分类模型无法理解 时间维度上的动作演变。因此,本系统设计了双流处理流程: 空间流 (Spatial Stream) : 由卷积神经网络 (CNN) 负责 。 将视频的每一帧 视为独立图像,提取画面中的物体、纹理和场景特征。 时间流 (Temporal Stream) :由循环神经网络 (RNN) 负责。将空间流提取 的特征序列串联起来,分析帧与帧之间的逻辑关系 。 关于 ResNet ( Residual Network ) : 它是一种通过引入残差连接解决深度 网络梯度消失与表示瓶颈问题的卷积神经网络结构。 ResNet-18 属于轻量级版 本 , 由 18 层卷积层和 1 个全连接层组成 , 常用于图像分类 、 目标检测等任务 。 相比于 VGG 或 ResNet-50 , ResNet-18 在保证特征提取能力的同时,参数 量更少,推理速度更快,非常适合对实时性要求较高的解说场景。 考虑到本设计数据量有限(数百个样本),若从零训练 CNN 极易导致过拟 合。因此,本设计加载了 ResNet-18 在 ImageNet 数据集上的预训练权重。这 使得模型在初始状态下就具备了识别边缘 、 形状和纹理的通用视觉能力 。 通过去 除 ResNet-18 最后的全连接分类层,仅保留卷积层与池化层来具体实现。对于 输入尺寸为 160 × 160 的图像, ResNet-18 输出一个 512 维的特征向量。 关于 LSTM (Long Short-Term Memory) :它是一种特殊的循环神经网络 ( RNN ),专门设计用于解决 RNN 中存在的长期依赖问题。 LSTM 通过其独特的 “ 门 ” 结构 ( 输入门 、 遗忘门和输出门 ) 来控制信息的流动 , 从而能够记住长期 - 9 - 的信息。 LSTM 的设计初衷是为了克服标准 RNN 中的 “ 梯度消失 ” 问题 。 在标准 RNN 中,重复的结构模块通常只有一个简单的结构,例如一个 tanh 层。而在 LSTM 中 , 重复的模块包含四个特殊的结构 , 这使得 LSTM 能够更好地处理和预测时间 序列中间隔和延迟较长的重要事件。 LSTM 的应用非常广泛 , 例如在自然语言处理 、 语音识别和手写识别等领域 。 其变体包括双向 LSTM 和门控循环单元( GRU ),这些变体在不同的应用场景中 也表现出色。 在本设计中,输入为 12 帧画面的 ResNet 特征。 LSTM 单元按时间步依次 处理这 12 个特征向量 , 更新内部的隐藏状态 。 取 LSTM 在最后一个时间步 ( 第 12 帧 ) 的输出向量 , 该向量聚合了整个 4 秒视频片段的完整时空信息 , 随后送 入全连接层进行最终的分类。 把 LSTM 输出的那个包含了全视频信息的向量 , 送入一个全连接层 (Linear Layer) 。 这个层的作用就是做 “ 选择题 ” 。 它把抽象的特征映射到 14 个概率值 上(对应 14 种解说)。哪个概率最大,就选哪条解说作为最终弹幕。 4.2 训练方法说明 本 设计 基于 PyTorch 深度学习框架进行模型的搭建与训练。由于个人电脑 硬件资源有限 , 为了加快训练速度 , 本设计 过程主要在 Kaggle 云平台的 GPU 环 境下完成。 如图 4-1 所示。 图 4-1 在硬件方面 , 具体采用 Kaggle 云平台提供的双路 NVIDIA Tesla T4 GPU 进 行加速计算 。 在软件方面 , 操作系统为 Linux (Ubuntu 内核 ) , 这是工业界标准 的 AI 部署环境。针对 Linux 环境下缺少中文字体库导致 OpenCV 渲染乱码的 问题 , 特别配置了字体热加载模块 。 此外 , 使用 CUDA 12.6 作为底层计算驱动 。 - 10 - 还 用 到 了 常 见 的 Python 3.12.12 用 来 编 程 以 及 PyTorch 1.13 用 于 构 建 ResNet-LSTM 网络图、计算梯度与反向传播。 Torchvision 用于加载预训练的 ResNet-18 权重及图像增强 (Transforms) 。 在调用的库方面 , 使用 OpenCV(cv2) 和 PIL(Pillow) :用于视频流的切片、图像格式转换及中文弹幕的绘制渲染。 还有最常用的 NumPy 和 Pandas : 用于张量矩阵运算 ( 如图像归一化 ) 及 CSV 标 注文件的读取与管理。 调用库如图 4-2 所示。 图 4-2 损失函数 (Loss Function) 与优化器 (Optimizer) 的选择:由于这是一个 1 4 分 类 问 题 ( 对 应 14 种 解 说 弹 幕 ) , 我 直 接 使 用 了 交 叉 熵 损 失 函 数 (CrossEntropyLoss) 。 它 能 够 很 好 地 衡 量 模 型 输 出 的 概 率 分 布 与 真 实 标 签 ( One-hot )之间的差异。在训练初期,我尝试使用了普通的 SGD (随机梯度下 降),但发现 Loss 下降非常缓慢,而且容易卡在局部最优解。经过查阅资料 , 我最终换成了 Adam 优化器。 Adam 能够自适应调整学习率,实测发现它收敛速 度比 SGD 快很多。 为了在捕捉动作细节与降低计算量之间取得平衡 , 系统并未处理视频的所有 帧,而是采用 “ 等距稀疏采样 ” 策略。即在 4 秒的视频片段(共 120 帧)中 , 以 Stride=10 为步长,均匀抽取 12 帧关键图像作为模型输入。实验证明,该 采样率 ( 约 330ms/ 帧 ) 足以覆盖 MOBA 游戏中技能释放与团战爆发的关键瞬间 。 训练参数的设置并非一蹴而就,而是经过了多次 尝试 才确定的 。 输入尺寸 (Input Size) : 最初我想保留 1080p 原画质输入 , 但显存瞬间溢 出 (OOM) 。 后来尝试压缩到 224 × 224 ( ResNet 的标准输入 ) , 但在 Batch Siz e 为 16 时显存依然不太合适。为了在 “ 保留细节 ” 和 “ 显存占用 ” 之间找平衡 , 我最终将输入尺寸锁定为 160 × 160 。虽然牺牲了一点清晰度,但足以看清英雄 和技能,且能保证程序稳定运行。 学习率( Per-parameter Adaptive Learning Rate ):由于使用了预训练的 - 11 - ResNet 权重 ,不需要 太大的 学 习率 去重头学 。我将 初始学 习率设为 1e-4 (0.0001) 。 训练中发现 , 如果设为 1e-3 , Loss 曲线波动非常大 , 无法收敛 ; 设 为 1e-4 后, Loss 下降曲线变得非常平滑。 迭代轮数 (Epochs) : 由于数据集较小 ( 只有几百 张切片图 ) , 模型很容易过 拟合 。 我设置了总共训练 10 个 Epoch 。 观察日志发现 , 大概在第 7 个 Epoch 时 , 验证集的准确率就不再提升了,说明模型已经收敛。 在训练过程中 , 我发现模型一开始容易 “ 死记硬背 ” ( 过拟合 ) , 导致训练 集分数很高,但测试集很差。我在全连接层前加了一个 Dropout ( 丢弃层 ) ,比 例设为 0.5 。 它的原理是 每次训练随机让一半的神经元 “ 休息 ” 。 这样强迫模型 不能依赖某几个特定的特征,必须统筹全局,从而提高了模型的泛化能力。 4.3 解说合成与视频渲染实现 模型输出的仅仅是一个代表类别的数字索引(如 Index=10 ),为了将其转 化为用户可见的解说弹幕视频 , 本系统设计了一个基于 OpenCV 与 PIL (Python Imaging Library) 的后处理渲染流水线。该模块负责将模型预测结果映射为自 然语言文本,并将其逐帧合成到原始视频画面中,最终编码为 MP4 格式文件。 具体处理流程如下: 系统首先对 LSTM 输出的概率向量进行 Softmax 归一化处理,获取当前视 频片段属于各个类别的置信度 。 使用 torch.argmax() 函数提取概率最大的索引 值作为当前片段的预测标签( Predicted Label )。 根据第 3.1 节定义的解说池,将数字索引映射为对应的中文解说文本。例 如,当预测结果为 10 时,系统自动检索出文本: “ 【团战】 正面 5V5 团战爆 发!神仙打架! ” 。由于模型是针对 4 秒片段( Clip )进行预测的,为了保证 观感流畅 , 系统会将该解说文本 锁定 ( Hold ) 并持续显示在当前片段对应的所 有原始帧上,直到下一个时间窗口更新预测结果。 由于 Linux (Kaggle) 环境缺失中文字体库,常用的 OpenCV cv2.putText 函数仅支持 ASCII 字符,无法正确渲染中文(会出现乱码或问号)。且游戏团 战画面色彩高亮 、 背景复杂 , 普通的白色文字极易被技能特效淹没 。 为解决乱码 与可视性问题,本系统设计了 “ 描边高亮渲染算法 ” ,具体步骤如下 : OpenCV 读取的视频帧默认为 BGR 格式,而 PIL 库处理图像需要 RGB 格 式。 PIL 与 OpenCV 的格式转换 OpenCV 虽然处理视频快,但对中文支持很差 。 因此 , 在绘制每一帧弹幕时 , 我首先使用 cv2.cvtColor 函数 , 将图像从 OpenCV 默认的 BGR 格式转换为 PIL 库能识别的 RGB 格式 。 转换后 , 利用 PIL 库的 - 12 - ImageFont 模块,加载了项目目录下的 msyh.ttf (微软雅黑)字体文件,并将 字号设置为 60px , 确保弹幕在 1080P 的画面中足够大 、 足够清晰 。 为了防止弹 幕与游戏中 的 高亮特效混淆 , 我设计了一个双层的绘制逻辑 : 给文字人工加了一 圈 “ 黑色描边 ” , 把它和复杂的背景隔离开 。 在描边画好后 , 我在正中心的位置 画上亮青色的主体文字 , 以确保在复杂的团战背景中依然清晰可见 , 形成了极高 的对比度。上传的字体和视频如图 4-3 所示。 图 4-3 最后,将绘制好的 PIL 图片再转回 OpenCV 的 BGR 格式,完成单帧渲染 。 渲染完成的单帧图像被送入视频编码器 。 采用 mp4v 编码器 , 保证输出视频的兼 容性。输出视频的帧率( FPS )严格锁定为 60fps ,与原始输入视频保持一致, 确保解说弹幕与游戏画面的时间轴完全同步 , 避免不同步现象 。 经过处理的所有 帧被按顺序写入 final_chinese_real.mp4 文件,作为系统的最终交付产物。 - 13 - 5 实验结果 与分析 5.1 实验结果 在 Kaggle 平台 的 GPU T4x2 的 环境下 , 经过 10 轮 (Epochs) 的训练 , 模 型 在 验 证 集 上 的 准 确 率 趋 于 稳 定 。 系 统 成 功 生 成 了 名 为 final_chinese_real.mp4 的演示视频。如图 5-1 所示,模型在验证集上的 最高 准确率最终稳定在 5 8.4 % 左右。 视频效果如图 5-2 所示。 图 5-1 图 5-2 - 14 - 5.2 效果分析 虽然验证集准确率 5 8 4 % 在数值上并不显著,但考虑到由于本设计任务属 于 14 分类问题 , 随机猜测的基准准确率仅为 1/14 ( 约为 7.1% ) 。 本模型的性 能达到了随机基准的 8. 2 倍 , 证明 ResNet-LSTM 架构成功从有限的视频数据中 提取到了有效的时空特征。此外,观察训练日志发现,模型在训练集 (Training Set) 上的准确率高达 90% 以上 , 而验证集准确率停滞在 60% 以下 。 这是典型的 过拟合 (Overfitting) 现象。 训练数据显示,尽管本设计在 LSTM 层引入了 Dropout (p=0.5) 并在训练 策略上使用了早停法 (Early Stopping) ,但验证集准确率( 5 8 4 % )与训练集准 确率 ( 90%+ ) 之间仍存在显著差距 。 但是通过对生成视频的定性分析发现 , 虽然 最高 准确率受限 , 但大部分预测结果在语义上具有一定的合理性 , 视觉违和感较 低 , 可能是由于个别标签的边界界定并不清楚 , 导致有些错误的输出没有那么违 和。 针对这种明显的 “ 过拟合 ” 现象, 以及标签边界模糊的问题,经深入分析 , 造成该现象的主要原因如下: 第一 , 数据量太少 , “ 喂不饱 ” 模型 , 这是 最主要的原因 。 ResNet-18 拥有 千万级的参数量,具有极强的特征拟合能力。虽然 Dropout 降低了神经元之间 的共适应性 , 但在本设计仅有数百个样本的极端小样本的场景下 , 模型的容量依 然远超数据的复杂度 。 模型倾向于 “ 记忆 ” 训练集中的特定噪声 ( 如某一局游戏 中特定的英雄皮肤搭配),而非学习通用的战术语义,导致泛化能力受限。 第二 , 游戏画面的差异性 。 王者荣耀这款游戏角色和皮肤众多 , 由于训练集 和验证集分别取自不同的对局视频 , 不同对局中英雄组合 、 技能特效颜色的巨大 差异导致了数据分布的偏移 。 模型在训练集中学到的某些视觉特征 ( 如特定英雄 的技能光效 ) 在验证集中有可能并不存在 , 这种差异是单纯依靠正则化手段难以 消除的。 第三 , 人工标注的主观性 。 在制作数据集时 , 我发现 “ 什么时候算团战开始 ” 很难界定 。 比如从 “ 埋伏 ” 变成 “ 团战 ” , 中间有一个过渡期 。 我在标注时 , 只 能人为划一条线 。 模型在训练时强行记住了我划的那条线 。 但到了验证集 , 局势 变化稍微不一样 , 模型就会在 “ 埋伏 ” 和 “ 团战 ” 两个分类之间左右摇摆 , 导致 预测错误 。 相似的情况还出现在 “ Gank ” 和 “ 团战 ” 之间 , 有时候单靠个人主观 判断都会有错误,更何况让模型来学习。 - 15 - 5.3 失败案例与问题分析 模型 “ 失明 ” ,所有动作均识别为同一类(如 “ 打野 ” )。在早期推理时 , 模型置信度极低 ( 约 10%-13% ) , 且解说词一成不变 。 经排查 , 是由于数据预处 理尺寸不匹配导致的。训练时使用 160x160 分辨率,而推理代码中错误地设置 为了 112x112 。 这导致模型输入的特征图严重失真 , 无法提取有效特征 。 将推理 代码中的 IMG_SIZE 修正为 160 ,问题得以解决。如图 6-1 所示。 图 5 - 3 解说字幕显示为 “ 方块 ” 乱码 。 使用 OpenCV 的 putText 函数或 PIL 默认 字体绘制中文解说时 , 画面上出现大量 [][][] 乱码 。 这是由于实验环境 ( Linu x 系统 ) 默认缺少中文字体库 , OpenCV 默认只支持 ASCII 字符 , OpenCV 和 PIL 无 法渲染中文字符。编写代码自动下载 / 指定 msyh.ttf 字体文件路径,并在绘制 函数中强制加载该字体,成功解决了乱码问题。如图 6-2 所示。 图 5 - 4 - 16 - 混淆类别分析 。 进一步分析模型的预测行为 , 我们发现错误主要集中在语义 相似的类别之间。例如, “ Label 9 (Gank) ” 与 “ Label 10 ( 团战 ) ” 存在较高 的混淆率。 如图 5-5 所示。 这是因为 Gank (抓人)往往是团战的导火索,两者 在画面上都表现为多名英雄的技能释放与血量下降。在 4 秒的时间窗口内,如 果 Gank 迅速演变为多人混战,模型很难界定其确切的语义边界。这提示我们 , 未来的改进可能需要引入多标签分类 ( Multi-label Classification ) 机制 , 即 允许一段视频同时属于 “ Gank ” 和 “ 团战 ” 。 图 5-5 - 17 - 6 总结与展望 6.1 总结 本次课程设计围绕 “ 基于深度学习的游戏视频智能解说 ” 这一课题 , 完成了 一个从数据采集 、 预处理 、 模型构建到视频合成的完整系统 。 回顾整个开发过程 , 独立搭建了基于 PyTorch 的深度学习开发环境,打通了 “ 视频切片 → 空间特征 提取 (ResNet ) → 时序逻辑建模 (LSTM) → 弹幕渲染合成 ” 的端到端流水线。特 别是解决了 Linux 环境下中文字体缺失导致的乱码问题,以及输入图像尺寸失 配导致的识别故障,积累了宝贵的 课程设计 经验。 本 设计 采用了经典的 CNN-LSTM 复合架构 。 实验证明 , 该架构能够有效提取 视频中的关键语义 ( 如区分 “ 打野 ” 与 “ 团战 ” ) 。 虽然最终验证集准确率停留 在 5 8.4 % 左右,但这主要受限于数据规模过小(仅数百样本)导致的过拟合, 而非模型本身的缺陷 。 这让我深刻理解到 , 在深度学习领域 , “ 数据质量与规模 ” 的重要性往往不亚于 “ 模型结构 ” 。 针对 王者荣耀这款 游戏的实时性要求 , 放弃 了高延迟的生成式文本,设计了基于 “ 分类 + 检索 ” 的解说池方案。虽然形式较 为简单 , 但在实际测试中 , 生成的弹幕能够准确对应战局高潮点 , 验证了该方案 在计算资源有限场景下的可行性。 6.2 可能改进的方向 受限于硬件资源 与个人能力 , 本 设计 仍存在诸多提升空间 。 若未来继续完善 该 设计 ,我计划从以下三个 方面 进行深入优化: 第一 , 构建大规模数据集 ( 最迫切的改进 ) 。 目前的过拟合问题 ( 训练集 90% vs 验证集 5 8 % ) 表明模型处于 欠拟合 ( Under-fitting ) 数据 的状态 。 将数据 集扩展到几千甚至几万个样本 , 同时引入数据增强策略强迫模型学习更鲁棒的特 征, 而非死记硬背特定的英雄皮肤。 第二, 向 Transformer 架构演进 。 目前的 LSTM 模型在处理超过 10 秒的 长序列时 , 记忆能力会衰退 。 未来的改进方向是将时序模块升级为 Transformer Encoder 甚至 VideoMAE 架构 。 相比于本 设计 当前采用的 LSTM 循环架构 , 基于 Transformer 的生成式模型在视频解说任务中 有它 显著的技术 优势。 LSTM 受限于循环结构,容易面临梯度消失问题,难以捕捉超过 10 秒的长 距离因果关系 。 Transformer 依托自注意力机制 (Self-Attention) ,能够并行 - 18 - 关注视频序列中的任意两帧 , 从而有效理解 “ 草丛埋伏 ” → “ 团战爆发 ” 这种跨 度较大的战术逻辑 , 实现真正的全局战局感知 。 在拥有更多算力的情况下 , 可以 接入轻量级语言模型 ( 如 GPT-2 ) , 将图像特征作为 Prompt 输入 , 实现真正的 “ 看图说话 ” ,让解说词不再千篇一律。 目前的分类模型只能检索预定义的固定话术 , 存在机械重复感 。 Transformer 架构具备强大的自然语言生成 (NLG) 能力 , 能够根据画面细节 ( 如英雄的走位 、 技能颜色 ) 动态生成 “ 千人千面 ” 的描述性语句 , 使机器解说具备拟人化的情感 色彩与表达张力 。