自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

亮眼看视界

何亮的技术随笔

  • 博客(63)
  • 资源 (3)
  • 收藏
  • 关注

原创 画质增强概述-4-传统方法增强实践

传统方法和AI方法是一个互相补充的关系,要看具体的场景和视频类型,一般而言,传统方法性能上相对比AI方法更好些,对算力要求相对低一些,成本上自然也更低传统方法的保边滤波(如导向滤波等)、锐化、对比度增强等很多时候都有比较好的效果,在视频转码服务中使用适当的话往往会有非常好的收益(主观画质提升、码率大幅下降等),不过这些算法网上介绍的都很多了,在此不再赘述4.1 去划痕算法介绍先看效果:上半部是原始图片,下半部是处理过的效果,可以看出来划痕消除还是比较明显的,下面介绍算法实现过程a.

2022-03-18 12:01:14 5154

原创 画质增强概述-3.3-AI增强实践之服务形态

low-level 视觉任务输入输出一般都是RGB数据,那么在生产环境,除非在移动端增强后直接显示,否则基本是需要对数据进行压缩,然后存储或者传输。服务端的增强服务,多数是把增强服务封装为ffmpeg 的一个 video filter 来使用更方便一些3.3.1 video-enh c sdk首先是将推理模块封装成 c SDK,该SDK中包含 opencv 和推理引擎 TensorRT 的调用,不过经过封装后,暴露的接口建议是纯C接口,因为 ffmpeg 不支持 c++ 风格的头文件,相对而言,c

2022-03-17 15:37:26 6012

原创 画质增强概述-3.2-AI增强实践之推理与部署

low-level 的视觉模型要在生产环境的服务端部署使用,还是有一些工作要做的。当然,本文不涉及在移动端的部署,我理解移动端模型部署很核心的工作是模型压缩(量化、枝剪和蒸馏),这块我涉及不算很深入,只搞过一点量化和枝剪,就不展开描述了。3.2.1 推理框架主要试了三个推理框架:阿里的MNN、facebook的libtorch和nvidia的TensorRTa. MNNMNN相对而言成熟度稍差些,优势是开源,有问题可以自己看代码,甚至做一点点修改,我在windows上跟MingW32结合编译

2022-03-17 10:59:45 3435

原创 画质增强概述-3.1-AI增强实践之超分训练

三 画质增强的AI增强实践画质增强处理从方法上可以分为传统方法和深度学习(AI)方法,他们是互相补充的关系,传统方法相对而言性能会好些,AI方法吃GPU、吃算力,很多课题AI方法效果远非传统方法科比,典型的如超分、超帧(频率上采样)、补全、降噪等等,这篇重点介绍AI方法的超分实践,主要分三部分:训练、推理和应用3.1 训练3.1.1 超分主干网络对超分历年比较经典的主干网络做了一次梳理和调研,如下图这个梳理和调研还是有非常大价值的,然后把他们预训练模型用自己真实场景的素材跑一遍看

2022-03-16 16:20:21 3284 1

原创 画质增强概述-2-应用场景

二 画质增强应用场景画质增强应用场景是非常广泛的,本质上,“谁会嫌画质太好了呢”,随着传输、显示等基础设施和硬件的进步,画质增强的应用一定会越来越光放,我这里只是简单介绍一下几个典型场景2.1 实时增强实时增强主要形态可以分为直播实时增强和RTC增强2.2 长视频增强-老片修复2.3 短视频增强2.4 监控视频增强...

2022-03-15 11:39:11 2272

原创 画质增强概述-1-定义

一 什么是画质增强1.1 定义所谓画质增强,就是综合运用传统数字图像处理和新兴的深度学习等算法工具,修复图片或视频中存在的各种画质问题,让用户有更好的视觉观看体验1.2 常见的画质问题及修复工具模糊(各种模糊,如运动模糊、镜头失焦等) -> 锐化/去模糊分辨率低 -> 超分辨率(简称超分)卡顿/帧率低 -&g...

2022-03-14 10:56:37 3947

原创 复杂toB业务的场景方法论

楔子:问题的引出-李敏之问 前段时间出差北京的时候,我们的销售李敏问了我一个很好的问题:“何老师,如果产研为什么按照客户提的需求来组织研发呢?客户要啥我们就做啥不好吗?“我从产研的角度回答了这个问题:”是不是产研把客户提的这几个需求做掉,单子就能拿下来?业务就能做起来,销售能拍胸脯保证吗?按照我的理解和经验,似乎很少有销售敢这样保证“。这个问题非常好,抽象出来,我理解本质上是一个产品驱动力的问题,即到底产品迭代的驱动力应该来自哪里?是客户提的具体需求,还是产研根据友商产品去“借鉴”,还是哪里...

2021-10-29 16:01:15 710

原创 deblock filter 研发阶段总结

一. 研发进展工程链接:https://github.com/riverlight/qn-enh-sdk 算法封装成 ffmpeg filter 的工程 https://github.com/riverlight/ImageRestoration_CNNdeblock 模型截止本周,deblock filter 的优化大约花费了5-6周时间,算法效果简单总结如下:psnr 提升 在显著的块效应图片上,经过deblock处理后,psnr 约提升了 1.8db 在 32*32 的小样本...

2021-04-16 15:32:42 390

原创 MNN 转换工具编译记录

我的平台是 windows 10编译还是很费劲的,记录下要点吧一共三个 repo:zlib、protobuf 和 MNN,最开始编译 protobuf,没下 zlib,虽然 protoc.exe 能编译出来,但MNN编译的时候,就会说缺少:MNN_compression.pb.h另外,我机器装了 mingw64、ninja 和 vs2019,这三个尝试过编译,最后成功的是 mingw64,三个 repo 的 cmake 命令记录如下:zlib:cmake -G "Unix Makefile.

2021-03-09 19:27:41 2323

原创 视频云业务思考

一 视频云业务特点视频云和其他云计算服务相比,有着如下两个鲜明的特点:1.1既广又深“广”主要指两方面,一是应用广,视频云服务正在快速的基础设施化,成为云计算重要组成部分,且高增长的趋势还将持续相当一段时间。二是涉及的技术领域广,从视频数据流转的角度看,包含视频的生产、分发、传输、处理、消费等环节,这就涉及到短视频sdk、直播SDK、RTC、点直播CDN、播放器、云存储、转码(实时或非实时)、审核、AI分析、剪辑等产品形态,这些产品涉及的技术,既有音视频特有的编解码、图形/图像/视频/音频处理.

2021-01-20 00:39:12 398

原创 秀场直播主播pk实现的四种技术架构

秀场互动直播是 RTC 技术应用的常见场景,虽然主播PK 的业务逻辑不算复杂,但由于在标准直播模式和主播PK 模式的切换过程中容易产生卡顿、黑屏等现象,为了在优雅实现业务逻辑的同时,最大程度缓解类似的音视频体验问题,工程师们八仙过海各显神通,提出了很多种秀场直播的实现架构,下面我们介绍其中最典型的四种架构方案A:概要说明:最常见的实现方式,标准直播使用推流SDK,切换成PK模式的话,走的是连麦及合流转码服务; 算是个基准方案,其他方案的优缺点主要都基于跟方案A进行比较方案风险:..

2020-10-22 19:28:58 2166 1

原创 直播推流端网络优化策略

移动直播推流端的网络优化是直播开发的难点之一,下面简单说下我的理解和解决策略。总体原则要尽量加深对 H.264 等协议的理解,协议规范的制定者想出来的这些算法一方面当然是要尽量提高压缩效率,但同时他们也考虑到了 H.264 的各种应用,尤其是网络传输,事实上,直播推流端的网络优化要做好,必须要和编码器的算法配置相结合的原则1优先确保音频传输,这是以前视频会议的传输策

2016-07-22 17:16:27 3431

原创 ffmpeg 编译

每次在 windows 上编译 ffmpeg 都是一种煎熬,因为我的机器上有非常多的开发环境,今天(20160528)为了能用上 ffserver,又一次编译了 ffmpeg,遇到坑无数,所以简单做个记录。1. 一开始用电脑上以前装好的 msys+mingw 进行编译,结果只编出来 ffmpeg.exe ffplay.exe 和 ffprobe.exe,没有我要的 ffserver,网

2016-05-28 00:56:37 501

原创 sparkR read json file error

刚接触 sparkR,发现在集群中读取 json 文件有问题:> people 16/04/22 10:48:44 ERROR r.RBackendHandler: loadDF on org.apache.spark.sql.api.r.SQLUtils failedError in invokeJava(isStatic = TRUE, className, methodN

2016-04-22 11:04:00 1084

原创 hbase 异常解决

今天发现spark程序出现如下异常:org.apache.hadoop.hbase.RegionTooBusyException: Above memstore limit解决办法如下:1.  hbaseconf  的  "hbase.master" 增加了 hbase 另外两个 region server 的ip    2. 修改了 hbase 表的设置: alter '

2016-04-10 01:13:46 4113 1

原创 rhadoop 安装要点

1. 先执行 yum 把 c++ 编译环境相关的组件装好yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel lib-devel python-devel ruby-devel2. 按照下面链接的顺序进行rhadoop组件的安装https://github.com

2016-04-08 18:32:28 631

原创 Spark 阶段总结 4

1.    概述本文描述的是spark 学习的第四阶段知识点,主要目的是实现 spark streaming + flume + log4j + mongoDB 的端对端演示,它的基础是    所介绍演示。本文对应的github URL:https://github.com/riverlight/spark-study-1。 2.    mongoDB 安装及调用安装URL:

2016-01-22 22:50:53 744

原创 Spark 阶段总结 3

1.    概述本文描述的是 spark 学习的第三阶段知识点,主要目的是实现 spark streaming + flume + log4j 以 pull 模式进行实时统计,在 (下文简称)中,实现的是 push 模式。由于大部分工作都比较类似,因此本文主要是介绍差别。 2.    相同点虚拟机环境、log4jTest都和 完全一样,在此不赘述。 3.    Flume

2016-01-22 22:49:45 422

原创 Spark 阶段总结 2

1.    概述本文描述的是 spark 学习的第二阶段知识点,主要目的是实现 spark streaming + flume + log4j 的实时统计。学习过程中遇到的坑不少,适当做个总结记录,方便以后查阅。 2.    端对端演示介绍演示环境:cent OS 64bit 的虚拟机环境流程描述:A. log4jTest 输出产生 log4j.log 文件;B. Fl

2016-01-20 23:22:22 614

原创 Spark 阶段总结 1

1.     概述本文描述的是 spark 学习的第一阶段知识点,包括spark 下载安装、IDE 下载与编译,以及spark 程序在虚拟机环境中的部署与运行。 2.     安装准备下载安装spark 之前,需要在虚拟机中先安装配置好 HADOOP,具体安装HADOOP 的方法,可参考下面的链接。 参考链接HADOOP 安装: http://www.iteye.com

2016-01-20 23:20:42 615

原创 FLV 文件分析,包含dump h.264码流

和上篇的 converter对应,这是 flv 转 h.264 的project,ffmpeg 转得似乎有问题,我重写了一个小程序github:   https://github.com/riverlight/FlvParser

2015-12-07 18:48:06 1301

原创 h.264转flv converter

ffmpeg 对 flv 跟h.264转换的支持似乎有问题,转出来的flv和h.264都有问题,于是只好自己写了个简单的 converterhttps://github.com/riverlight/H264toFLVConverter

2015-12-01 09:42:33 900 1

原创 Open CV 学习经验总结

Open CV 简单的说就是一个开源的计算机视觉库,个人感觉功能强大,使用方便,算是图像处理和计算机视觉开发方面的神器了。更详细的介绍可以参考百度百科。         下面我说下我学习 Open CV 的一点心得。         首先是看书,一般而言,书上的知识相对系统一些。这里推荐我觉得比较好的两本书,一本是 (清华于仕琪 刘瑞祯 译) ,这本书不仅仅是介绍Open CV,更多的系

2015-09-16 22:48:52 23315 2

原创 Python 2.7 (64 bit )下安装 OpenCV 3.0

1. 先下载安装 python 2.7 (64bit),下载地址是:https://www.python.org/ftp/python/2.7.10/python-2.7.10.amd64.msi2. 然后是下载 numpy,我下载的地址是:http://www.lfd.uci.edu/~gohlke/pythonlibs/3i673h27/numpy-1.10.0b1+mkl-c

2015-08-27 13:38:16 1645

原创 组建责任驱动型团队的几个原则

引言什么是责任驱动型团队         责任驱动型团队内部所有成员的职责都很明确,团队在完成工作时,表现出的就是分工协作,各司其职,团队气氛轻松和谐,很少或几乎没有内耗,是较高级的团队组织管理形态。         与责任驱动型团队相对应的是事情驱动型团队,这样的团队虽然每个成员名义上都有自己的职责,但实际上是非常不清晰的,在具体工作到来时,轻松的活儿抢着干,吃苦受累的工作躲着干,事情干

2014-08-16 19:59:04 2957

原创 优点缺点谈

何谓缺点?就是一个人或者组织那些达不到社会平均水平的地方。何谓优点?就是比平均水平明显做得好的地方。优点加缺点,等于特点,或曰特色。于是,普世意味着平均水平,大家皆如此。一个人或者一个组织要进步,对待自己的缺点必须采取普世的态度,这里的普世,代表着一种自问“别人可以为什么我不行”的发奋精神。要敲钉子,普世的方法是用锤子,如果我们不会用锤子,那就要学习,如果手头没锤子,就要去买或者借,总

2014-06-10 16:47:32 595

原创 闲谈积极性

1 把工作流程制定清楚,并且明确每个人的岗位,那么你需要的是大家的执行力,而非积极性 2 解决执行力不足的方法应当是罚,当然,罚之前应当确保每个人都经过了充分的流程职责培训,并确实掌握了执行所必要的技能 3 现实中有大量的工作我们并没有现成的工作流程,也无法很清晰的划分岗位职责,那么作为领导者,此时你必须注意提高团队成员的积极性,依靠集体的智慧一起完成任务 4 解决积极性不

2014-05-07 17:02:59 616

原创 做事五部曲

无论做什么事情,有五个方面必须要特别关注。         首先是判断主要矛盾。要记住,任何事情,在任何时刻,主要矛盾都是有且仅有一个。这句话还有一个意思就是,主要矛盾随着时间流逝、组织成长、事物变化它是会改变的,这一点必须着重注意。另一个需要注意的是,当事物表面现象差不多的时候,主要矛盾却可能差别巨大。西人云:“幸福的家庭都是相似的,而不幸的家庭各有自己的不幸”,对于不幸的家庭,不幸是普遍的

2014-03-12 18:51:52 780

原创 肚子饿了想到的

肚子饿了以后要吃饭,饿肚子这个矛盾,必须用吃饭这个方法来解决。         肚子饿了以后要吃饭,发现家里只有米,没有饭,于是只要先做饭,再吃饭。         肚子饿了以后要吃饭,发现没有饭,先做饭发现家里即没有米,也没有菜,于是只好先出去买米买菜。         肚子饿了以后想吃饭,结果比较懒,也不太会做饭,于是只好打个电话叫外卖来解决问题。         矛盾论告诉我

2014-03-11 15:54:09 685

原创 软件研发管理之版本管理

版本管理是软件研发管理中比较容易忽视的一环,这当然是比较好理解的,因为版本管理毕竟和具体业务关系不大。其实,版本管理是很多更高级管理制度的基础,如果版本管理做得糟糕,类似代码审查一类的工作就很难高效方便的执行。         下面介绍目前我们研发团队建议实行的版本管理制度,仅供参考。 1 工具软件:SVN 和 Beyondcompare         SVN是代码备份软件,Be

2014-01-21 19:11:57 11987 1

原创 从’物质决定意识’说起 2

7 实践是检验理论的最好方法,把理论应用于解决实际问题,就产生了解决问题的方案。方案和理论不一样,解决一个实际问题可能有很多方案,但能被实际采用的只能是一个或两个。这就产生了一个最好的方案是什么,它又从何而来的问题。首先,一个好的方案必须是逻辑上没有漏洞的,方案本身不能有自相矛盾的地方。其次,好的方案必须列出分析问题的依据,对方案的制定者而言,问题的依据必须坚持实事求是的原则描述。这一点就

2014-01-03 16:54:54 562

原创 从’物质决定意识’说起

1 物质决定意识是唯物主义的基本观点,我最近在对很多事物做研究的时候,发现物质决定意识这句话的内涵极其丰富,值得花点时间把自己的这些体会系统的记录下来。 2 我们知道,对同一件事情,同一个事物,不同的人看法差别往往会很大。既然物质是客观存在的,而且它又决定意识,那么为什么会出现意识不同的现象呢?这本质上是一个物质如何决定个体意识的问题。单个的人了解物质的方法不外乎实践和学习,这里的实践,包

2013-12-27 11:39:31 1768

原创 霍金实在论中的实践论

霍金在他著名的《大设计》一书中,提出了一种所谓依赖模型的实在论观点:一个物理理论或者世界图景就是一个模型(通常具有数学性质)和一组将模型元素与观测联系起来的规则。在这样一个实在论中,霍金提出了一个好的模型的四个标准,即         1它是优美的;         2不包含任意的、可调整的要素;         3符合并能解释现存的所有观测;         4能够详尽预言未来观

2013-12-04 17:40:10 1540

原创 编程小提示

编程的一些小心得

2013-11-11 17:28:12 742

原创 技术开发和产品开发

在研发项目的进度管理中,有必要对每个研发任务的性质做一个界定,即该任务属于技术开发还是产品开发。         所谓的技术开发,指的是那些风险较大的开发任务,这些风险包括所选技术路线(如硬件、平台等)本身的风险,也包括研发工程师能力不足的风险(如新技术学习能力、分析和解决复杂问题的能力等)。常见的技术开发任务有:验证新的硬件平台、操作系统、开发核心算法、研究新的技术平台等。       

2013-07-29 17:15:05 4698

原创 开发调试之确定原则

所谓的确定原则,指的是对于开发过程中遇到的问题,我们解决问题的思路应该是从胜利走向胜利、从确定走向确定,而不是相反,即从失败走向胜利、从不确定走向确定。这个原则虽然说起来简单,但能成为习惯,遇到问题就按照这个原则去解决却不太容易。         举个例子来说明,比如某软件的 v 0.66版本发现某 bug,而回归到 v 0.60 版本却无此问题,对这个bug ,我们的工程师应该怎么查呢?经过

2013-07-17 16:58:12 535

原创 敏捷开发之工程师素质

前几天和一个刚换工作的同事沟通,他告诉我他所在的新公司领导不喜欢敏捷开发模式,原因是他们领导觉得敏捷开发对工程师素质的要求太高了。我觉得这个想法很新颖,值得讨论一下。 1 我常说,敏捷开发模式的基础是代码要敏捷,即如果工程师生产出来的代码本身不够“敏捷”,那也无所谓谈何种开发模式了,从这个角度看,敏捷开发确实对工程师素质有很高的要求2 对于素质高的工程师,哪个项目经理不喜欢呢?敏捷开发

2013-07-11 16:20:30 1229

原创 技术之路 or 管理之道

软件研发人员在成为高级工程师之后,会有所谓的两条上升通道,一个是继续专注技术,职业发展方向是技术经理、总工程师,另一个是走技术管理之路,成为项目经理、产品总监等。相对来讲,大多数高级工程师更愿意往技术管理方向走,但走得顺利的却不多,常常听到领导评价一些刚刚担任PL (project leader)的工程师说他们技术还不错,但是带团队总是还感觉差点。个人的观察,工程师做不好技术管理的工作,最重要是在

2013-04-28 11:28:41 1149

原创 C++ 类的设计规则

类是C++ 语言的核心概念,要想写出高质量的C++代码,最重要的事情就是把类设计好,下面介绍一些C++类设计的基本规则。 1 命名         类名一般是名词,用大白话说就是类一般都是个“东西”,根据我的命名原则,业务逻辑中涉及到的所有“东西”在程序中都应该有一个对应的类。         类的方法一般是动词,或者动宾式组合,类方法的隐含的主语就是类自己。举个例子来说,类名

2013-04-19 17:14:45 7008 2

原创 C++ 多线程开发技巧 5

新的问题         继续看网络视频播放器的例子。最开始需求很简单:一路网络视频的播放。在程序设计上,主线程负责UI和用户输入响应,另外再开一个线程负责网络视频数据接收、解码和显示,这个线程我们称之为业务线程。现在问题来了:业务线程怎么创建最好? 最常见的处理方式:超级类解决一切         我们知道,主线程是不需要创建的,而涉及到UI的开发中,总存在一个主窗口的窗口类,这

2013-04-18 14:04:15 918

c++与flash 的交互sample

c++与flash 的交互sample,请仔细阅读说明,注意使用绝对路径

2015-12-21

c++与flash交互例程,包含as源码

c++与flash交互例程,包含as源码,请认真阅读文档中的说明

2015-12-21

获取H.264的slice type

得到 H.264 每一帧的Slice type

2012-07-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除