文章目录

  • 领域调研
    • 挑战
    • 分类
    • 困难
    • 相关工作
  • 2023主流方法
  • 我的baseline
    • 提取视频帧
    • 提取移动特征
    • 训练和测试
  • 阶段思考和总结
    • 数据集分析
    • 总结

领域调研

从几个质量非常高的知乎参考资料能快速了解这个领域,非常有帮助。发现这个领域的问题在很多行业都有巨大的潜力和需求,我看到不仅是图像质量评价企业如美图秀秀等,还有用户视频内容平台如字节、B站、快手、小红书等都有巨大需求,这个领域是非常有商业价值的,如果能刚好对这方面很感兴趣,又能努力提升这方面的技术和经验,对未来就业非常有帮助!
快手平台视频质量评价和增强技术报道

挑战


目标是:希望能够有一个客观量化的算法或者一个分数能够告诉我们视频看起来是更好,还是更差!

分类

  • 主观质量评价
    所谓的主观质量评价就是为了收集主观分数,它的任务就是我们研究怎么样去做主观实验能让我们收集到的主观分数又准而且实验的效率又高。主观分数其实就是视频质量分数。
    主观评价往往只在一些特定的情况下用,但是我们做研究的时候,它又非做不可。因为实际上,它是质量的基准,而它收集到的分数被称为Golden Score。因为我们要想研究或开发客观算法的话,这个Golden Score必不可少。
    实际上,算法输出的分数就是为了逼近主观分数。所以主观分数就是我们所谓的Ground Truth,如果没有它,我们设计的客观算法是没有办法衡量它的性能的。

  • 客观质量评价
    客观质量评价其实是研究更多的方向,因为本身做质量评价最终的目的还是希望开发一套软件用它代替人的主观打分,能全自动化、省时、省力,准确地预测主观质量分数,那它就是比较好的算法。
    但是准确率的提升很多时候是比较困难的,有很多方面的因素影响。

质量评价本身的价值:一方面是可以用算法代替人脑,可以提高我们的生产效率;另一方面就是统一和改进视频质量的度量衡;最后就是系统优化

困难

我们怎么去定义质量?

因为人去看视频的时候觉得它更好或者更差的话,我们是有自己的感觉,但是你要想用一种数学模型或者计算公式去量化它,这本身是比较复杂的,因为它的主观性太强了。

质量可能包括清晰度,清晰度怎么用公式算也是一个问题,然后质量还包括色彩的丰富程度、对比度等等。

  • 一方面质量分数的主观性特别强,众口难调
  • 另外一方面,在做客观算法研究时,我们本身对人眼视觉系统了解的并不够多,因为我们希望把人眼视觉系统做到软件里面,如果我们对它的理解不够深入的话,其实我们并没有办法完全模拟视觉系统。现在已经有很多,当然这都是基于经验或知识来设计的算法,有很多机制模拟人眼视觉系统,比如多尺度分析、多通道、各种掩膜效应,这其实都是从Visual Science之类借过来的概念,这些机制的也都很成功。

视频质量评价中常见故障:扭曲、模糊,噪声、抖动,过曝、低曝
美学特性:语义完整,构图合理

相关工作

  • 全参考是指视频源的所有信息都是可用的,比如在视频压缩的场景,因为编码器的输出就是压缩后的视频,那我就可以用全参考的方式来看,相对于我的输入,输出视频的质量到底有什么变化。

  • 部分参考是指视频源中并不是所有的像素我都知道,但是我可以去做一些统计,为了方便在通信系统里,比如在流媒体、客户端做质量评价的时候,我们是没有办法拿到视频源的,因为视频源的数据量本身就很大,但是如果能拿到一些统计量,然后做对比,也是可以提升准确率。

  • 无参考是指压根不知道视频长什么样子,你给我一个视频,我给你打一个分,说是无参考,但实际上我们可以想象,人眼看视频时我们可能会觉得我知道它是好还是坏,但实际上我们人的大脑里边其实也是有参考的。

这也是在跟客户接触时发现的一个比较有意思的问题,其实一个普通人对质量的理解跟他所在地区的带宽是有一定的相关性的,如果他那个区域的带宽普遍比较低,那他对质量容忍的程度就会比较高,他可以给一个比较模糊的视频一个比较高的分数,就是因为他已经习惯了。无参考的分数虽然简单易用,但是它也是要根据场景做调整。


2023主流方法

  • FAST-VQA: Efficient End-to-End Video Quality Assessment with Fragment Sampling code

  • Exploring the Effectiveness of Video Perceptual Representation in Blind Video Quality Assessment code

  • An End-to-End No-Reference Video Quality Assessment Method With Hierarchical Spatiotemporal Feature Representation pdf

  • A Fast and Efficient No-Reference Video Quality Assessment Algorithm Using Video Action Recognition Features pdf

  • Starvqa: Space-Time Attention for Video Quality Assessment pdf

  • DisCoVQA: Temporal Distortion-Content Transformers for Video Quality Assessment pdf

  • 主流数据集排行榜
    在paper with code数据集上的排行榜,可以轻松找到对应主流数据集的历年方法和最好结果,一般都有公开代码,很容易借鉴!!!

KoNViD-1k Benchmark Video Quality Assessment
MSU NR VQA Database Benchmark (Video Quality Assessment) | Papers With Code

我的baseline

在了解了比赛内容、数据集和领域的基本研究内容后,开始尝试使用baseline调试和训练模型,验证基本结果:

提取视频帧

主要是根据代码调整路径和格式内容,传入正确的视频路径,让opencv提取视频关键帧,一般十秒左右的视频提取十张关键帧,减少计算量,提高模型效率!

    video_capture = cv2.VideoCapture()video_capture.open(filename)cap=cv2.VideoCapture(filename)video_length = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))video_frame_rate = int(round(cap.get(cv2.CAP_PROP_FPS)))for i in range(video_length):has_frames, frame = video_capture.read()if has_frames:# key frameif (video_read_index < video_length) and (frame_idx % video_frame_rate == 0):read_frame = cv2.resize(frame, dim)exit_folder(os.path.join(save_folder, video_name_str))cv2.imwrite(os.path.join(save_folder, video_name_str, \'{:03d}'.format(video_read_index) + '.png'), read_frame)          video_read_index += 1frame_idx += 1

提取移动特征

使用resnet50在kinetics数据集上训练过的预训练模型提取图片中的移动特征,根据视频得到对应图片的抖动、晃动等slow和fast特征,便于之后预测视频抖动时对应的质量分数。

slowfast_r50在kinetics数据集训练,提取高层和底层特征; action detection数据集预训练模型;# slowfast extract feature:for x in range(0,5):self.feature_extraction.add_module(str(x), slowfast_pretrained_features[x])self.slow_avg_pool.add_module('slow_avg_pool', slowfast_pretrained_features[5].pool[0])self.fast_avg_pool.add_module('fast_avg_pool', slowfast_pretrained_features[5].pool[1])self.adp_avg_pool.add_module('adp_avg_pool', slowfast_pretrained_features[6].output_pool)def forward(self, x):with torch.no_grad():x = self.feature_extraction(x)slow_feature = self.slow_avg_pool(x[0])fast_feature = self.fast_avg_pool(x[1])slow_feature = self.adp_avg_pool(slow_feature)fast_feature = self.adp_avg_pool(fast_feature)return slow_feature, fast_feature

训练和测试

训练模型,直接将视频帧的特征进行卷积学习并和slow, fast feature进行融合训练,最终fc回归对应分数

# Input data
video (bs, channel, video_len, h, w)
feature_3D (bs, feature_slow + feature_fast)# model
# three stage spatial features (avg + std) + motionself.quality = self.quality_regression(4096+2048+1024+2048+256, 128,1)def _forward_impl(self, x, x_3D_features):x = self.conv1(x)x = self.bn1(x)x = self.relu(x)x = self.maxpool(x)x = self.layer1(x)x = self.layer2(x)x_avg2 = self.avgpool(x)x_std2 = global_std_pool2d(x)x = self.layer3(x)x_avg3 = self.avgpool(x)x_std3 = global_std_pool2d(x)x = self.layer4(x)x_avg4 = self.avgpool(x)x_std4 = global_std_pool2d(x)x = torch.cat((x_avg2, x_std2, x_avg3, x_std3, x_avg4, x_std4), dim = 1)# x: batch * frames x (2048*2 + 1024*2 + 512*2)x = torch.flatten(x, 1)# x: batch * frames x (2048*2 + 1024*2 + 512*2 + 2048 + 512)x = torch.cat((x, x_3D_features), dim = 1)# x: batch * frames x 1x = self.quality(x)# x: batch x framesx = x.view(x_size[0],x_size[1])# x: batch x 1x = torch.mean(x, dim = 1)return x

最终在训练集上训练最好结果(肯定过拟合):
epcoh 99: SRCC: 0.8974, KRCC: 0.9006, PLCC: 0.7245, and RMSE: 5.7074

阶段思考和总结

数据集分析

  • 数据类型
    Axxxx_yy.mp4 refers to the video Axxxx.mp4 enhanced by color, contrast and brightness enhancement method yy.
    Bxxxx_yy.mp4 refers to the video Bxxxx.mp4 stabilized by method yy.
    Cxxxx_yy.mp4 refers to the video Cxxxx.mp4 deblurred by method yy.

三种不同类型的损伤给原视频,对应测试集不同的分数预测,可以三个模型专门预测对应类别和分数;
【要么三个模型,要么一个模型两个任务(分类和回归)】

  • 数据打分
    相同视频不同处理的分数差异;整体视频的分数值水平;

  • 数据集预测存在问题
    基于baseline模型,提取视频关键帧和移动状态,可以较好解决这两个问题,但对于色彩亮度、对比度的评估不准确!
    借鉴aesthetic assessment方法加入,评估视频的色彩、亮度和对比度等;

  • 数据测试无反馈,如何选择可能的最佳策略
    选择部分训练集训练,部分训练集验证;(多折验证)
    将模型结果在验证和测试集上测试,分析结果可靠性!
    如何划分数据集?如何设定比例?

  • 分析数据集对应结果和实际视频内容
    人工验证,逐个分析和对比不同数据内容,发现:一个场景对应多个损伤,用mse+rank L1损失函数融合提升结果

  • 加入额外的数据训练
    实用IJCV方法混合数据集训练,得到最佳结果;
    超参无法调整优化(多折验证)

  • 考虑不同方法
    从paper with code排行榜看,优先考虑三个方法:最好DOVER, 框架Faster VQA和混合数据集IJCV-MANIQA

  • 分析结果
    • 可视化loss曲线
    • 分折train验证
    • 热力图可视化

总结

因为科研工作太忙,没有太多时间投入比赛,导致错过了验证集时间,而测试集并不实时公布结果榜单,所以在调研和做了baseline工作后,发现根本没法验证模型在验证集和测试集的结果,只能用多折验证来比较不同模型和参数的性能。

另一个问题是,视频质量评价的方法主要是是设计各种模型结构,或者融合各类先验信息。该比赛中未限制模型性能,且可以使用额外数据,我在下载数据集时发现大部分都需要登记申请,但时间冲突,未充分利用额外数据。

以后要参加比赛一定要做好充分的计划。一方面不能太影响最重要的工作,另一方面要规划好比赛时间,如硬件、相关基础和方法调研、额外数据集准备等,最后是一定要多分析数据,找到其中存在最能直观理解的问题,针对问题来优化比调参更有价值!

参考资料

  1. 视频质量评价基础与实践
  2. 图像视频质量评估 (IQA/VQA)

【竞赛】视频质量评价竞赛经验记录-2(调研和尝试)相关推荐

  1. 【竞赛】视频质量评价竞赛经验记录-1(比赛介绍)

    文章目录 机缘 比赛内容 机缘 偶然看到CVPR2023的关于视频质量质量评价的比赛,刚好和我做的图像美学质量评价方向有些相关,花了点时间参加比赛感受了一下,也将自己以前积累的经验应用和实践了一把,有 ...

  2. NTIRE @ CVPR 2021 视频质量增强竞赛:数据库、方法及结果汇总(官方发布)

    本文转载自知乎,已获作者授权转载. 链接:https://zhuanlan.zhihu.com/p/368256419 NTIRE 2021 视频质量增强竞赛 (Challenge on Qualit ...

  3. 视频质量评价:挑战与机遇

    正文字数:5168  阅读时长:10分钟 本文整理自鹏城实验室助理研究员王海强在LiveVideoStack线上分享上的演讲.他通过自身的实践经验,详细讲解了视频质量评价的挑战与机遇.   文 / 王 ...

  4. H.264 视频质量评价方法 (基于视频内容)

    Michal Ries等人在论文<Content Based Video Quality Estimation for H.264/AVC Video Streaming>中,描述了一种基 ...

  5. [总结]视频质量评价技术零基础学习方法

    前段时间略忙,因此一直计划要总结的很多东西都没来得及写,这两天趁着空闲时间写上一篇.以后等时间充裕了再补充一些内容.本文总结一下学习视频质量评价技术的方法.视频质量评价是我研究生阶段主要的工作,包括发 ...

  6. 视频质量评价技术零基础学习方法

    前段时间略忙,因此一直计划要总结的很多东西都没来得及写,这两天趁着空闲时间写上一篇.以后等时间充裕了再补充一些内容.本文总结一下学习视频质量评价技术的方法.视频质量评价是我研究生阶段主要的工作,包括发 ...

  7. 大淘宝技术斩获NTIRE 2023视频质量评价比赛冠军(内含夺冠方案)

    近日,CVPR NTIRE 2023 Quality Assessment of Video Enhancement Challenge比赛结果公布,来自大淘宝音视频技术团队的同学组成「TB-VQA」 ...

  8. CVPR 2023|淘宝视频质量评价算法被顶会收录

    近日,阿里巴巴大淘宝技术题为<MD-VQA: Multi-Dimensional Quality Assessment for UGC Live Videos>-- 适用于无参考视频质量评 ...

  9. CVPR 2023|淘宝视频质量评价算法MD-VQA

    关注公众号,发现CV技术之美 本文介绍CVPR 2023论文<MD-VQA: Multi-Dimensional Quality Assessment for UGC Live Videos&g ...

最新文章

  1. 硬盘突然提示没有初始化_分享一下固态硬盘不认盘的修复方法
  2. 如何让LINUX程序运行在多CPU?
  3. 布隆过滤器、一致性哈希算法总结
  4. 【Flask项目2】创建模型类映射到数据库,密码加密实现(3)
  5. 嵌入式小白到大神学习全攻略(学习路线+课程+学习书籍+练习项目)
  6. patent sub categories
  7. 通用运输APP/小型物流托运APP/客运班车APP/PHP+MYSQL管理后端
  8. 具有搜索和自定义分页的React Bootstrap表
  9. OpenGL第六节:加载png图片
  10. GM8284DD(GM8284DR)LVDS转TTL芯片功能汇总及设计注意事项
  11. 价值连城 人工智能的通识课 - 吴恩达Andrew Ng AI For Everyone
  12. Maven坐标和依赖
  13. 2个抖音工程师搞出新工具,意外风靡字节内部,项目经理用上安静多了,程序员不骗程序员...
  14. 计算机论文指数,我国计算机领域学术论文引用中的马太效应——以《计算机学报》和《计算机研究与发展》为例...
  15. 入库出库JAVA技术详情_基于Java_EE的入库出库管理系统
  16. python调整视频内容比例_moviepy音视频剪辑:与大小相关的视频变换函数crop、even_size、margin、resize介绍...
  17. JAVA程序获取图片信息
  18. C++ 打印pid和tid
  19. 泛微oa流程表单之请假单(判断请假结束时间不能小于等于请假开始时间)
  20. “带薪摸鱼”偷刷阿里老哥的面经宝典,三次挑战字节,终斩offer,修成正果!

热门文章

  1. 解决Maven打包报错:Failed to clean project: Failed to delete[亲测好用]
  2. 一.Kafka入门到精通-Kafka快速入门
  3. Window10下出现的WiFi功能消失,适配器显示错误56的解决办法
  4. 如何做一个基于JAVA外卖点餐系统毕业设计毕设作品(springboot框架)
  5. 33.递归数列XDOJ
  6. Shell中$ 各种含义
  7. flyme android os 耗电,魅族运行安卓5.0 Flyme OS系统实测 性能流畅度提升
  8. 五首奇诗传天下,文字墨香日月长!(上)
  9. React Native不同设备分辨率适配和设计稿尺寸单位px的适配
  10. LatinIME输入法的一些总结