【论文解读】CNN-Based Fast HEVC Quantization Parameter Mode Decision
时间:2019 年
级别:SCI
机构:南京信息工程大学
摘要
随着多媒体呈现技术、图像采集技术和互联网行业的发展,远程通信的方式已经从以前的书信、音频转变为现在的音频/视频。和 视频在工作、学习和娱乐中的比例不断提高,高清视频越来越受到人们的重视。由于网络环境和存储容量的限制,原始视频必须进行编码才能高效地传输和存储。高效视频编码(HEVC)需要大量的编码时间 递归遍历自适应量化过程中编码单元所有可能的量化参数值。通过比较率失真代价计算出最优量化参数。本文提出了一种基于卷积神经网络的HEVC量化参数快速选择方法,节省了视频编码时间。
介绍
随着多媒体成像技术、图像采集技术和互联网产业的发展,人们的远程通信方式已经从以前的书信方式转变为音视频结合的方式。视频在工作、学习和娱乐中的比重越来越高。此外,高清视频可以提供更清晰、更逼真的图像,对于会议格式、监控精度等各个行业的发展都起着至关重要的作用。然而,随着视频清晰度和分辨率的提高,视频内容需要更多的比特来存储。高效的压缩是超高清视频能否广泛应用于市场的关键。为应对不断变化的视频编码需求,国际联合视频团队发布了HEVC。
新一代标准在技术上进行了深度更新,如在编码结构中采用四叉树算法提高编码树单元的划分水平、使用更大的分辨率和非对称预测单元、多参考帧运动估计等。此外,HEVC将基于块的运动补偿用于帧间预测。HEVC可以计算连续帧之间在空域和时域上最佳匹配块的偏移距离。这是运动矢量MV。通过选择空域或时域上相邻的MV来预测当前MV,然后对MV的预测残差进行编码,从而节省了大量的MV编码比特数。在MV预测方面,HEVC提出了AMVP和Merge两种新技术。这两种新技术都建立一个候选MV列表,然后选择率失真代价最小的MV作为当前主用户的预测MV。两者的区别主要在于Merge模式主要传输候选PU块的索引,而不需要传输MV信息。AMVP模式需要传输当前编码PU的MV信息进行帧间预测。其次,候选链表长度不同;Merge模式的候选列表长度为5,而AMVP模式的候选列表长度仅为2。H.265/HEVC的视频压缩效率得到了很大提高在保证视频压缩质量与先进的视频编码标准H.264编码的高清视频质量无差异后得到显著改善。
HEVC中的变换和量化模块主要根据图像内容计算相关系数,从而减少图像内容的冗余,更高效地压缩视频数据。对于视频编码量化过程,编码单元需要花费大量时间进行最优自适应量化参数选择。该过程被建模为编码单元量化参数的分类,预训练网络模型直接预测不同类型的编码块。最优自适应量化参数。 最后,在视频压缩后的视频质量和码率与原始编码没有显著差异的情况下,实现了视频编码复杂度的优化。
旨在解决视频编码过程中最优量化参数决策计算复杂度高的问题。研究了一种基于卷积神经网络的快速量化参数决策方法。首先,明确了原始高效视频编码标准码的基本量化参数;根据编码提供的方法,通过递归计算视频每帧中包含的所有CUs的率失真代价,得到最优的量化参数偏移。将CU图像与对应偏移量一一对应作为卷积神经网络的训练集,参与卷积神经网络的分类训练。将原有的最优量化参数计算过程替换为训练好的模型和相关代码。实验结果表明,与HEVC中选择最优量化参数的方法相比,所提方法的编码时间平均减少34%,而码率和PSNR的损失基本可以忽略不计。
本文的剩余内容组织如下。第二部分介绍了相关工作。建议工作的详细内容见第3节。第4节给出了实验结果。最后,第五部分对本文进行了总结。
相关工作
目前,视频编码引起了学术界、研究机构和大公司越来越多的关注。在视频编码复杂度优化过程中,根据优化模块的不同,可分为HEVC帧内模块复杂度优化和HEVC模块间复杂度优化两部分,用于消除视频中单帧或多帧之间的冗余信息。有两个重要的方向需要人们去优化,一个是优化不同预测单元的大小,另一个是减少帧内预测方向。根据相邻编码的时空信息, Tang, Jing, Chen等缩小了CU的遍历范围,并通过判断当前最佳预测模式是否为平面模式来优化其他CU的预测模式选择。Tian等提出了一种高效的帧内PU选择算法,根据该算法计算编码树单元及其子编码单元的内容信息。然后他们决定是否直接进行下一轮的PU模式选择过程。Belghith等使用Sobel算子检测CU的边缘并分析CU的纹理含量。如果CU的内容比较简单,编码直接在当前深度执行。否则,如果当前CU的内容是复杂的,则继续划分。Yao等利用纹理的像素排列信息为不同的PUs选择不同的编码模式。Min等通过分析视频帧的纹理特征来分割不同大小的CUs。Qi等利用Soble算子根据图像像素值和空间相关性计算纹理方向信息,选择帧内模式进行预测。Shen等提出了一种基于纹理信息与视频图像时空关系的快速帧内选择算法,通过计算平均绝对误差获得纹理信息。帧间预测的优化在于更好地选择CU和PU。在Kim 中,将运动矢量、跳跃模式下PU的关系以及对应的残差一起作为一个模型。这样可以降低PU决策过程的复杂度。Shen等利用空时域信息确定编码树单元的CU深度范围。他们通过跳过或提前终止不常用的CU深度来动态调整CTU水平。 Kim等通过计算skip模式编码CU的率失真代价,建立了预测当前CU的模型。Feng等利用CU在当前深度的运动信息来判断相邻帧中相同区域的CU划分。该方法通过计算不同CU的深度来减少预测模式的决策方案数量。
目前,视频编码优化的方法可以分为两类:基于统计的方法和基于机器学习的方法。基于统计的方法是根据统计信息提前终止或跳过不必要的模式。 Lee等提出利用失真特征确定合并模式,使用跳过模式跳过不必要的模式。Zupancic等提出了一种自适应的方法,根据更高CU深度的编码信息自底向上反向检测CU。Jung和Park采用了一种利用码率和码率数据自适应加速HEVC编码过程的方法。Jung等人使用了一种基于非零离散余弦变换系数的快速TU决策算法,通过裁剪四叉树来降低复杂度。李,金,林等(提出了一种快速CU判决算法,该算法参考了跳跃模式判决、CU跳跃估计和CU提前终止算法,并利用贝叶斯决策理论确定CU终止阈值。Xiong等提出了一种基于绝对差值估计的快速决策算法。Ahn等提出了一种快速高效的CU编码方法,利用样本自适应偏移量、MV和TU大小等纹理参数来估计纹理复杂度和时间复杂度。上述所有方法都是基于统计分析,过早终止或跨越不相关的CUs/PUs/Tus检查。这可能会限制它对其他序列的适用性。
从机器学习的角度来看,视频编码过程的模式选择可以看作是一个分类问题。例如,HEVC中的CU划分可以被认为是一个二分类任务。现有的机器学习算法用于预测HEVC中CU、PU或TU的大小。Shen等使用贝叶斯决策理论将残差系数的方差映射到TU大小。Kim等提出了一种基于贝叶斯决策理论的CU过早终止算法。在Correa等的研究中,Correa等使用决策树来预测CU的大小。Zhang等设计了一个三输出联合分类器和一个灵活的CU深度决策结构。Alencar等提出了一种基于Pegasos算法的快速CU决策方法,通过在线学习终止CU划分过程。Zhu等设计了一种基于机器学习的决策函数来控制预测精度。Peixoto等构建了一种新的H.264 /AVC到HEVC的转换架构。他们利用H.264/AVC编码参数来确定HEVC编码标准的CU划分模式。利用线性判别函数将H.264/AVC编码参数映射到HEVC编码标准的CU划分上。这些方法通过机器学习预测CU, PU和TU算法。然而,这些算法仅使用弱分类器来实现模式选择。过多的错误分类可能导致较差的RD性能和没有降低复杂度。
上述复杂度优化算法大多集中于HEVC帧内/帧间预测模块中CUs/ PUs的复杂度优化技术。研究人员经常依靠主观推理来解决复杂的计算机视觉问题。这种行为往往会忽略隐含但有用的特征。对于量化模块,上述方法在量化过程中仍然采用递归搜索的方法来选择最优的量化参数。计算最优量化参数的过程占据了整个编码周期的很大一部分。由于视频编码效率受到影响,需要对最优量化参数选择过程进行优化。
提出的方法
在本节中,我们将介绍一种基于卷积神经网络的H.265/HEVC量化参数的快速决策方法。
QP选择的问题表述
HEVC标准参考软件- HM在定量过程中采用两种方式计算定量参数。一是采用传统的计算方法。首先指定一个基于基本QP的量化参数,然后根据该参数计算偏移量不同CUs的复杂性。最后,将基本QP和量化参数偏移量相加得到量化参数。该方法计算速度快,但编码后的视频主观质量较差,给出了编码所对应的量化参数单位不是最好的。二是采用自适应方法计算最优量化参数。修改HM编码配置文件,指定偏移量参数的取值范围为-7~7。每个CU从64×64到8×8 递归遍历所有可能的量化参数,计算率失真代价。通过比较不同率失真代价的15个量化参数,计算出最优量化参数。不仅对视频的质量进行编码使用 该方法的性能优于前者,但比特率有所降低。然而,该方法在计算QPs时需要大量的时间。
我们的方法
提出将HM中最优量化参数的递归遍历方法简化为卷积神经网络在图像分类问题中的应用。训练模型直接推导量化参数值。得到最终的量化参数,替换HM原有的量化参数计算模块,如图1所示。由于HEVC编码视频的大部分时间都集中在量化参数的计算上,因此最终在理想状态下的编码时间可以节省约14/15。

我们的网络结构
考虑到如果使用复杂的网络结构,可能会给量化模块带来新的复杂度问题。训练模型使用简单的卷积神经网络,如图2所示。卷积层1使用64个卷积核(3×3×3),步幅设置为1,填充设置为相同,激活函数使用ReLU。池化层1选择最大池化,3×3滤波器,步幅设置为2,池化后进行局部响应归一化。卷积层2使用16个卷积核(3×3×64),填充也设置为相同,激活函数使用ReLU。池化层2也选择最大池化,使用3×3过滤器,步幅设置为1,池化完成后执行局部响应归一化操作。全连接层1通过操作将池化层输出的数据转换为一维列表,设置节点数为128,激活函数使用ReLU。全连接的第2层也是128个节点,激活函数使用ReLU。softmax回归层完全输出前一个连接层并执行线性回归,然后计算每个类的得分。Loss使用交叉熵损失,学习率设置为0.0001。

其中N表示CU的大小(64×64, 32×32, 16×16, 8×8),不同大小的CU分别训练和预测。
实验结果和分析
本文使用国际视频编码组提供的15个视频测试序列,收集如表1所示的训练数据,并使用帧内编码结构对HM参考软件的性能进行测试。

为了增加结果的可信度和网络模型的可行性,将基本QP分别设置为22、27、32、37。对每个视频序列的前200帧进行HM编码。记录视频帧的索引、每帧中各编码单元的位置以及编码过程中对应的量化参数。由于相邻帧之间的内容差异不大,因此每10帧提取用于训练的帧。然后,根据编码单元在整个原始视频帧中的位置对原始图像中包含的用于训练的编码单元进行裁剪;最后,总共训练了16种基于不同基本QPs、不同CU大小、不同QP偏移量的不同卷积神经网络模型,分别对应四种基本量化参数下的四种不同编码单元大小。
为了保证实验结果的真实性和可信性,我们将HM16.0原始的最优量化参数模块替换为我们提出的方法结果。编码时间、码率、峰值信噪比(PSNR)均基于原始HM参考软件。
视频编码需要在编码质量、码率和编码时间之间进行权衡。这些参数是评价视频编码方法优劣的基础。在编码过程中,利用训练好的模型预测与最优QPs相比的量化参数。判断该方法计算出的不同编码单元对应的量化参数是否与HM16.0量化相同参数。训练得到的最优QPs的平均准确率为81.2%。
为了验证所提方法对HEVC编码性能的影响,采用编码时间、BDBR和BDPSNR作为性能评价指标。综合考虑预测时间、硬盘读写速度等环境因素测量的编码时间如表2所示。
从表2可以看出,与原始方法相比,Johnny视频序列在整个测试结果中表现最好。当基本QP设置为37时,总体时间节省约34.56%。实验结果受硬件环境的限制,时间仅证明了该方法在此应用中的可行性。结合实验环境,平均编码时间可以节省约34.29%,大大提高了编码效率。

为了验证所提方法与原方法在码率和编码视频质量方面的差异,采用BDBR和BDPSNR作为测量指标。结果如表3所示。

从表中可以看出,BDBR和BDPSNR的损失与视频分辨率的关系不大。平均BDBR提升0.98%,即码率提升0.98%。BDPSNR平均降低了0.05 dB,即编码后的视频质量降低了0.05 dB。
为了更直观地观察码率和视频质量之间的差异,给出了码率失真曲线。如图3所示,蓝色线表示HM16.0最优自适应量化参数对编码效果的影响。红线表示所提方法对编码效果的影响。可以清楚地看到,与原始方法相比,本文方法编码的码率和视频质量损失可以忽略不计。

结论
为了解决超高清视频无法在日常生活中广泛应用的问题,国际联合编码小组JCT-VC头脑风暴,推出了HEVC。虽然编码效率等方面的性能都超过了上一代编码标准H.264。HEVC选择最优的自适应量化参数仍然需要花费大量时间。
为了优化HEVC在量化参数选择算法中的复杂度,提升HEVC的编码性能,利用卷积神经网络将复杂的量化参数计算问题简化为卷积神经网络图像分类问题。
实验结果表明,与自适应最优量化参数选择方法相比,提出的量化参数快速判定方法在HEVC参考代码中可以节省约34%的平均视频编码时间,其他损失基本被忽略。
相关文章:
【论文解读】CNN-Based Fast HEVC Quantization Parameter Mode Decision
时间:2019 年 级别:SCI 机构:南京信息工程大学 摘要 随着多媒体呈现技术、图像采集技术和互联网行业的发展,远程通信的方式已经从以前的书信、音频转变为现在的音频/视频。和 视频在工作、学习和娱乐中的比例不断提高࿰…...
在Linux上安装CLion
本教程将指导你如何在Linux系统上安装CLion,下载地址为:https://download.jetbrains.com.cn/cpp/CLion-2022.3.3.tar.gz。以下是详细的安装步骤: 步骤1:下载CLion 首先,你需要使用wget命令从提供的URL下载CLion的tar…...
R语言贝叶斯网络模型、INLA下的贝叶斯回归、R语言现代贝叶斯统计学方法、R语言混合效应(多水平/层次/嵌套)模型
目录 ㈠ 基于R语言的贝叶斯网络模型的实践技术应用 ㈡ R语言贝叶斯方法在生态环境领域中的高阶技术应用 ㈢ 基于R语言贝叶斯进阶:INLA下的贝叶斯回归、生存分析、随机游走、广义可加模型、极端数据的贝叶斯分析 ㈣ 基于R语言的现代贝叶斯统计学方法(贝叶斯参数估…...
多维时序 | Matlab实现PSO-GCNN粒子群优化分组卷积神经网络多变量时间序列预测
多维时序 | Matlab实现PSO-GCNN粒子群优化分组卷积神经网络多变量时间序列预测 目录 多维时序 | Matlab实现PSO-GCNN粒子群优化分组卷积神经网络多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 Matlab实现PSO-GCNN粒子群优化分组卷积神经网络多…...
Oracle 学习(1)
Oracle简介 Oracle是殷墟(yīn Xu)出土的甲骨文(oracle bone inscriptions)的英文翻译的第一个单词,在英语里是“神谕”的意思。Oracle公司成立于1977年,总部位于美国加州,是世界领先的信息管…...
华为HCIA认证H12-811题库新增
801、[单选题]178/832、在系统视图下键入什么命令可以切换到用户视图? A quit B souter C system-view D user-view 试题答案:A 试题解析:在系统视图下键入quit命令退出到用户视图。因此答案选A。 802、[单选题]“网络管理员在三层交换机上创建了V…...
Nginx Unit 1.27.0 发布
目录 介绍 更新内容 将 HTTP 请求重定向到 HTTPS 为纯路径 URI 提供可配置的文件名 完整的更新日志 其他 平台更新 介绍 Nginx Unit 是一个动态应用服务器,能够与 Nginx Plus 和 Nginx 开源版并行或独立运行。Nginx Unit 支持 RESTful JSON API,…...
【影像组学入门百问】#32—#34
#32-影像组学研究过程中,图像重采样参 数怎么选择? 在影像组学研究过程中,选择合适的图像重采样参数对于保证分析质量和准确性至关重要。以下是在选择图像重采样参数时需要考虑的一些建议: 1.目标分辨率:首先&#…...
YOLOv5代码解析——yolo.py
yolo.py的主要功能是构建模型。 1、最主要的函数是parse_model,用于解析yaml文件,并根据解析的结果搭建网络。这个函数的注释如下: def parse_model(d, ch): # model_dict, input_channels(3)"""解析模型文件,并…...
4种feature classification在代码的实现上是怎么样的?Linear / MLP / CNN / Attention-Based Heads
具体的分类效果可以看:【Arxiv 2023】Diffusion Models Beat GANs on Image Classification 1、线性分类器 (Linear, A) 使用一个简单的线性层,通常与一个激活函数结合使用。 import torch.nn as nnclass LinearClassifier(nn.Module):def __init__(se…...
最新Unity DOTS Physics物理引擎碰撞事件处理
最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎,今天我们给大家分享和介绍一下这个物理引擎的碰撞事件处理以及核心相关概念。 Unity.Physics物理引擎的主要流程与Pipeline Unity.Physics物理引擎做仿真迭代计算的时候主要通过以下步骤来…...
springboot集成websocket全全全!!!
一、界面展示 二、前置了解 1.什么是websocket WebSocket是一种在单个TCP连接上进行全双工通信的持久化协议。 全双工协议就是客户端可以给我们服务器发数据 服务器也可以主动给客户端发数据。 2.为什么有了http协议 还要websocket 协议 http协议是一种无状态,非…...
SpringMVC:整合 SSM 中篇
文章目录 SpringMVC - 04整合 SSM 中篇一、优化二、总结三、说明注意: SpringMVC - 04 整合 SSM 中篇 一、优化 在 spring-dao.xml 中配置 dao 接口扫描,可以动态地实现 dao 接口注入到 Spring 容器中。 优化前:手动创建 SqlSessionTempl…...
oracle即时客户端(Instant Client)安装与配置
之前的文章记录了oracle客户端和服务端的下载与安装,内容参见: 在Windows中安装Oracle_windows安装oracle 如果不想安装oracle客户端(或者是电脑因为某些原因无法安装oracle客户端),还想能够连接oracle远程服务&#…...
POP3协议详解
基本介绍 POP3是一种用于从邮件服务器获取电子邮件的协议。它允许邮件客户端连接到邮件服务器,检索服务器上存储的邮件,并将邮件下载到客户端设备上。POP3的工作原理如下: 连接和身份验证: 邮件客户端通过TCP/IP连接到邮件服务器…...
电子病历编辑器源码,提供电子病历在线制作、管理和使用的一体化电子病历解决方案
概述: 电子病历是指医务人员在医疗活动过程中,使用医疗机构信息系统生成的文字、符号、图表、图形、数据、影像等数字化信息,并能实现存储、管理、传输和重现的医疗记录,是病历的一种记录形式。 医院通过电子病历以电子化方式记录患者就诊的信息,包括&…...
WT2605C高品质音频蓝牙语音芯片:外接功放实现双声道DAC输出的优势
在音频处理领域,双声道DAC输出能够提供更为清晰、逼真的音效,增强用户的听觉体验。针对这一需求,唯创知音的WT2605C高品质音频蓝牙语音芯片,通过外接功放实现双声道DAC输出,展现出独特的应用优势。 一、高品质音频处理…...
IntelliJ IDEA 2023.3 最新版如何如何配置?IntelliJ IDEA 2023.3 最新版试用方法
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...
如何查看内存卡使用记录-查看的设备有:U盘、移动硬盘、MP3、SD卡等-供大家学习研究参考
主要功能 USB Viewer(USB移动存储设备使用记录查看器)可用于查看本机的USB移动存储设备使用记录。可查看的设备有:U盘、移动硬盘、MP3、SD卡……等。 可用于兵器、航空、航天、政府、军队等对保密要求较高的单位,可在计算机保…...
九、W5100S/W5500+RP2040之MicroPython开发<HTTPOneNET示例>
文章目录 1. 前言2. 平台操作流程2.1 创建设备2.2 创建数据流模板 3. WIZnet以太网芯片4. 示例讲解以及使用4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 烧录验证 5. 注意事项6. 相关链接 1. 前言 在这个智能硬件和物联网时代,MicroPython和树莓派PICO正…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
