自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (2)
  • 收藏
  • 关注

原创 小试从Intel MediaSDK迁移到OneVPL

把Intel Media SDK 2021r1开发的串流编码程序迁移到OneVPL 2023.2的版本, 用来验证MediaSDK迁移到OneVPL的过程

2023-09-13 16:02:46 666

原创 基于Intel MediaSDK的低延迟编码实现

基于Intel Media SDK 2021r1来学习和验证利用MediaSDK和Intel显卡做串流功能里的低延迟编码。

2023-09-06 16:11:27 721 8

原创 D3D11和D3D12共享资源

学习笔记之D3D12和D3D11共享texture2D资源

2023-04-14 17:24:56 1429 1

原创 D3D11和Vulkan共享资源 (二) - 和Intel MediaSDK sample_decode 集成

在Intel MediSDK sample_decode例程上验证Vulkan/DirectX11 buffer共享的API流程

2022-12-21 14:27:23 1157

原创 D3D11和Vulkan共享资源 (一)

学习一下Vulkan, 顺便研究一下D3D11和Vulkan的资源共享

2022-11-22 14:24:51 1692

原创 Intel MediaSDK sample_decode 官方GPU解码流程学习(二) - 在双显卡机器上实现DirectX11 D3D11和OpenCL共享资源

Intel MediaSDK sample_decode 官方GPU解码流程学习(二) - 对以前分享的内容做了一些更新,分享如何在双显卡机器上实现DirectX11 D3D11和OpenCL共享资源

2022-07-18 17:21:52 1129

原创 用Intel MediaSDK 做超高码率编码

闲扯几句最近用Intel MediaSDK编段100Mbps码流的收获

2022-06-28 15:00:56 664

原创 Intel MediaSDK sample_decode 官方GPU解码流程学习 - DirectX11 D3D11和OpenCL共享资源

最近一直在研究GPU全栈处理的方法。比如OpenVINO做GPU推理的时候,如果按照传统的思路MediasSDK/FFMPEG GPU解码 - CPU读出D3D11 buffer里的解码数据再传给OpenCL GPU buffer - OpenVINO做GPU推理,效率会十分低下这种显存-内存-显存的拷贝方式势必会增加CPU的开销,而且也没必要,所以我一直在找一种方法能够把DirectX11的NV12数据直接在显存里共享给OpenCL框架访问方法。

2021-12-14 13:04:51 2081

原创 OpenVINO 2021r4.1 - 瞎搞YOLOV5 模型转换,INT8量化及C++推理实现

以前曾经按照这个教程来做yolov5量化GitHub - Chen-MingChang/pytorch_YOLO_OpenVINO_demoContribute to Chen-MingChang/pytorch_YOLO_OpenVINO_demo development by creating an account on GitHub.https://github.com/Chen-MingChang/pytorch_YOLO_OpenVINO_demo但是有几个问题挺郁闷这个github的作者在o

2021-09-22 12:32:26 4041 25

原创 OpenVINO 2021r2 - Remote Blob API of GPU Plugin 示例复现(二) Inference within User-Supplied Shared Contex

今天再试试官方文档Remote Blob API of GPU Plugin里面的另一个例子Running GPU Plugin Inference within User-Supplied Shared Context,大概的意思就是由用户提供自己的OpenCL context,OpenVINO的clDNN利用用户共享的context来跑inference (对应的场景应该是用户已经有了自己的OpenCL实现的应用,然后要把OpenVINO GPU推理功能集成进自己应用的场景)。官网的例子只给出.

2021-04-14 10:51:11 502

原创 OpenVINO 2021r2 - Remote Blob API of GPU Plugin 示例复现(一) OpenCL Kernel Execution on a Shared Buffer

前一阵尝试了一下OpenVINO纯GPU处理的代码实现, 主要复现了OpenVINO官方文档Remote Blob API of GPU Plugin 中的 OpenCL Kernel Execution on a Shared Buffer例子基本实现具体可以参考这篇文章 OpenVINO 2020r3 体验GPU Remote Blob API在代码里,把OpenVINO clDNN的cl::context提取出来,再基于这个context创建了cl::device和cl::queue..

2021-03-26 14:00:58 827

原创 OpenVINO 2021r1 超分辨率重建 INT8量化 - Waifu2x

接下来试试超分INT8量化, 还是拿我首先又毫无意外的掉进坑里了... ...本来系统里已经装好了OpenVINO 2021r2, 想直接从这个版本开始,先安装accuracy_checker和pot的最新版本到openvino_2021\deployment_tools\open_model_zoo\tools\accuracy_checker目录下运行python setup.py install安装成功,再到openvino_2021\deployment_tools\.

2021-03-10 16:27:14 1566 10

原创 OpenVINO 2021r2 C++ 超分辨率重建 Waifu2x

最后试一下waifu2x, 因为我一直都喜欢waifu2x, 觉得他们家的超分算法在动画图像上的效果真的很惊艳,很久以前体验过windows版本,那时候机器又破,还用的是电脑上的caffe框架,超分个图片慢如老牛拉车。现在正好试试OpenVINO能不能加个速。先从https://github.com/lltcggie/waifu2x-caffe/releases/tag/1.2.0.4 下载一个release包 waifu2x-caffe.zip所有的模型放在models目录下,这里用了u...

2021-02-01 15:43:45 1181 6

原创 OpenVINO 2021r2 C++ 超分辨率重建DBPN

想多看看OpenVINO 2021r2对各种SR模型计算层的支持怎么样,再试一下DBPN, 这个是NTIRE2018超分8倍的冠军, 只随便测试一下2X的模型从网上找了个基于caffe的模型 https://github.com/alterzero/DBPN-caffe caffe是个非常老的框架了 OpenVINO应该支持的非常好了.关于推理数据的预处理和后处理,从原项目可以看出就是简单的除以255.0和乘以255.0 %% work on illuminance o...

2021-02-01 15:43:16 326

原创 OpenVINO 2021r2 C++ 超分辨率重建EDSR

接下来试试EDSR,NTIRE2017 超分辨率挑战赛的第一名https://github.com/achie27/super-resolution

2021-02-01 11:57:55 691

原创 OpenVINO 2021r2 C++ 超分辨率重建FSRCNN

最近把OpenVINO升级到了最新版本(超级不喜欢openvino这点,每次升级都要换几个接口,虽说API会向前兼容几个版本,不过跟起来真累啊,OpenCV, FFMPEG也是这样,是不是开源项目都是这么玩的啊... ) 顺便来试试看最新版本的OpenVINO对图像超分的模型支持的怎么样。先从FSRCNN 开始,毕竟这是图像超分的经典模型,运算量小推理速度快,超分效果又好。...

2021-01-28 14:15:06 1516

原创 OpenVINO 2020r3 体验GPU Remote Blob API

这几天再回过头来学习一下openvino 2020r3,最近做的GPU方面的工作比较多,在OpenVINO的实际应用中,有相当一部分应用走的是纯GPU的处理流程,即视频解码,预处理,推理,后处理以及视频编码都交由GPU来完成。优化这类应用的要点就是所有的数据都放在显存里传递,不要把流水线里的中间结果在CPU的内存和GPU显存之间搬来搬去。其实道理很简单,现在的摄像头硬件成本越来越低,技术又越来越先进,导致前端采集的视频的分辨率越来越高。1080P仅仅是起步,现在碰到的4K, 8K的视频流也越来越多,还有

2021-01-12 12:40:09 1634 1

原创 FFMPEG下利用Intel VPP_QSV插件实现基于GPU的图像缩放和色彩空间转换 (二) - C++代码实现

前面一篇文章弄清楚了VPP_QSV插件的ffmpeg命令行命令,下面开始用C++代码实现VPP_QSV插件的C++代码实现。网上讨论FFMPEG滤镜编程的文章不算太多,大概是基于GPU硬件的滤镜太依赖硬件导致用的人不多,所以大多数是讨论基于软件滤镜插件的实现方法和过程。硬件滤镜的实现的方法基本类似,但是有2个地方是不一样的。硬件滤镜里分配frame buffer需要在显存里分配,所以涉及到怎么设置2个有关硬件上下文的结构体成员变量 hw_device_ctx和hw_frames_ctx。 初.

2021-01-06 17:37:08 1827

原创 FFMPEG下利用Intel VPP_QSV插件实现基于GPU的图像缩放和色彩空间转换 (一) - 命令行模式

最近做图像预处理的工作有点多。这里记录一下最近做OpenVINO推理的端到端优化时对FFMPEG做图像预处理的一点心得。这几天碰到的问题是在准备给mobilenet-ssd神经网络推理前需要对视频文件做解码,然后缩放到需要的分辨率再转成RGB格式的数据,这样才能丢进网络里做推理。这个解码,缩放,色彩转换的流程通常是通过FFMPEG来实现的,通常的代码实现流程是先创建硬件设备,因为我是intel集成显卡,所以我指定了QSV来做解码的硬件加速器 ret = av_hwdevice_ctx_crea.

2020-12-17 15:03:08 3602 2

原创 加速图像处理的神器: Intel ISPC编译器 (五) 迁移图像旋转算法 - ISPC单精度 从单核到多核 及最终性能提升结果

现在CPU的核心数越来越多,即使现在的移动平台也是动辄4核起。前面的代码都是用单线程来运行的,所以只用到了CPU的一个核心。接下来尝试一下利用ISPC多任务机制来利用CPU的多核加速。ISPC代码从单核到多核的优化在ISPC的开发手册里,最简单的多任务机制用到了2个关键字 launch和task在一个函数前面加关键字task,标识这个函数是任务函数,可以在其他代码里通过launch语句来启动。任务函数可以被同时启动多次,在函数里有个内建的变量taskIndex, 标识着当前任务是第几个任务.

2020-09-24 13:29:43 639 1

原创 加速图像处理的神器: Intel ISPC编译器 (四) 迁移图像旋转算法 - 从 ISPC双精度 到 ISPC单精度

前面把原始的C代码转成了ISPC可编译的C代码,其中image_rotate_double_ispc函数里面的数据都是基于double双精度来运算的。我的电脑是支持AVX/AVX2指令集的,所以一次可以并发做4个double浮点的运算,理论上可以提升4倍的算力。通过ISPC的编译,实际获得了3.7倍的性能加速。从上图YMM寄存器的宽度和浮点数据的宽度来看,YMM寄存器可以一次做8个单精float型数据的计算。这次就来试试把image_rotate_double_ispc函数里面的计算全部改.

2020-09-24 10:52:08 359

原创 加速图像处理的神器: Intel ISPC编译器 (三) 迁移图像旋转算法 - 从 C代码双精度 到 ISPC双精度

ISPC官方例程里有很多ISPC和MSVC编译器生成代码性能对比的例子, 这次我用一个自己写的简单的图像旋转的算法来试试图像旋转的算法首先按照下面图里的公式,用旋转后的坐标乘以旋转矩阵,就可以得到旋转前的采样坐标位置点采样点坐标因为矩阵乘法里包含三角函数的原因,得到的是一个包含小数的坐标,这时候要基于采样点四周的四个点的颜色做一个双线性插值滤波,得到采样点坐标的颜色MSVC版C代码的实现// *srcImg, 输入灰度图像的像素buffer, 颜色为8bit灰度图像..

2020-09-23 17:23:51 444

原创 加速图像处理的神器: Intel ISPC编译器 (二) 基于CMake快速创建Visual Studio项目

把ISPC集成进Visual Studio项目的方法很多,最简单的是把ISPC编译命令设置在Pre-Build Event或者Custom Build Tool里面,例如这篇文章 将英特尔 SPMD 程序编译器(ispc)集成至 Microsoft Visual Studio。这种比较适合把ISPC整合进现有的项目里。对我这种懒人来说,我的项目大多是新创建的,所以我更喜欢利用ISPC 自带例程的cmake来创建项目ISPC例程的文件结构ISPC release包解压缩以后有个exam..

2020-09-22 14:39:00 820

原创 加速图像处理的神器: Intel ISPC编译器 (一) ISPC简介

最近刷到这么一篇教程 使用SIMD利器ISPC加速游戏开发简单的上手摸了一下,发现这是个神器,可以帮助我把自己写的单线程的基于C/C++的图像算法编译成SIMD的版本,这样就省得自己手工写SIMD汇编了;同时编译器级的自动优化效率也非常的高,比自己绞尽脑汁的手工调整代码顺序的优化要方便多了 :) 这里强烈的安利一下 :)ISPC相对其他编译器的优势这里用一段简单的代码对比一下ISPC和MSVC的效率 先看MSVC 首先上一段C代码代码逻辑就是简单的从vin buff..

2020-09-21 17:04:26 5480

原创 用OpenVINO 2020r2的accuracy_check精度检测工具检测ssd模型精度的示例

前面在OpenVINO 2020的INT8转换工具POT的初体验里面分享了一下POT和accuracy_check工具的用法,但是用的是分类classification模型,相对比较简单,今天简单分享一下写检测ssd模型精度的config文件的思路首先要骂娘的是OpenVINO的文档写的极其差,几乎是找不到任何你想要的东西。也许这就是开源项目的精髓,一切全靠看代码... 所以先想一下,在我用DL workbench的时候,可以转换mobilenet-ssd模型和测试模型精度。所以这部分肯定是带...

2020-07-30 17:16:14 1604

原创 用NV_DX_interop扩展让D3D和OpenGL共享资源

DirectX和OpenGL是不同的2个框架,相互之间数据不是互联互通的。如果双方需要做一些数据的交换,通常需要用CPU先把显存里的数据读到系统内存里,再把数据写到另一个框架的显存区域。但是实际上OpenGL有个扩展是可以实现这2个框架之间数据的共享的。在多媒体图像处理里有个小众功能,即在Windows上用Windows DXVA做基于显卡的硬件解码以后获得的存放YUV数据的D3D Surface/Texture,可以不通过CPU的拷贝,直接在GPU的显存里把数据共享给OpenGL, 再..

2020-07-27 15:39:45 2335 8

原创 对CPU超线程与推理性能的一些理解

最近在pytorch下面做模型推理,官网pytorch默认就用了MKLDNN做优化,在pytorch里MKLDNN的多核多线程的调度用了OpenMP来做控制,所以可以用设置OpenMP环境的方法来控制OpenMP的调度逻辑,这里面发现一些有趣的现象。首先做一些代码修改以便在pytorch下面最大程度的利用MKLDNN加速通过设置环境变量MKLDNN_VERBOSE=1来观察默认pytorch里MKLDNN的运行信息mkldnn_verbose,info,Intel MKL-DNN v0..

2020-07-24 14:30:29 1863

原创 OpenVINO Model Optimizer转换时的预处理preprocess

深度模型在训练的时候,为了得到最好的推理精度,通常都不会把图像数据(0,255)直接送进去,而是会对数据做归一化处理,比如把数据从(0,255)的8bit整数转到(0,1)或者(-1,1)的32bit浮点之间;同时对于RGB数据,不同的推理框架在训练时对于彩色通道的排列RGB/BGR也不同。对应的在推理的时候, 也需要把摄像头抓到的数据也做对应的预处理, 把数据做一个归一化,以及色彩通道的调整。OpenVINO的用MO转换模型的时候,也考虑到了这个问题,可以在mo转换的时候加一些对应的参数来帮忙做.

2020-07-07 16:26:48 1677 3

原创 OpenVINO 2020的INT8转换工具POT的初体验

在OpenVINO 2019里是用Calibration tool把网络模型转成INT8模型。到了OpenVINO 2020版本开始这个工具被去掉了,取而代之的是POT (Post-Training Optimization Tool)工具. POT的使用方法和参数的含义和Calibration Tool又有所不同,因此要转INT8模型的话又要重新学习一遍官网的文档。这里简单记录一下我用这个工具转换mobilenet模型的一个过程。用OpenVINO 2020转换INT8主要用到2个工具1..

2020-06-02 16:17:41 3459 16

原创 OpenVINO 2020版本 - GPU推理性能有惊喜

直接上2019R3和2020R2的性能对比,测试平台Intel i5-7440HQ, Win10 1709 GPU驱动 26.20.100.7812 发布日期1/21/2020利用OV自带的benchmark测试,测2种情况最小延迟 (尽可能快的处理单幅图片) benchmark_app.exe -nireq 1 -nstreams 1 -b 1 -m mobile...

2020-05-07 13:38:35 3372 3

原创 基于openvino 2019R3的INT8推理(inference)性能的深入研究 (二) MobilenetV3

接下来是个失败的例子 MoiblenetV3老规矩,先下模型,转换模型,再测benchmark从这里下载模型https://github.com/tensorflow/models/tree/master/research/slim/nets/mobilenet下载Large dm=1 (float)这个模型,然后转换成OpenVINO FP32模型python "c:...

2020-04-17 12:21:56 1705

原创 基于openvino 2019R3的INT8推理(inference)性能的深入研究 (一) MobilenetV2

最近一直在研究OpenVINO的INT8的推理性能,原本以为INT8是个万能膏药,任何模型经过INT8转换都可以提高性能。但是实战发现并不是如此,最近分析了2个模型MobilenetV2和MobilenetV3,发现MobilenetV2的模型在转成INT8以后性能会大幅提升,但是MobilenetV3转换成INT8模型后性能反而会大幅下降。原来一直以为是自己转换的方法不对,后来深入分析了一下模型...

2020-04-16 15:22:20 5364 10

原创 Intel SSD 540S掉盘,无法识别的修复办法

我的Intel SSD 540S意外掉盘了现象是BIOS中可以识别到盘的型号,但是用Windows安装U盘安装系统时无法识别盘进行安装, 作为从盘接入电脑后,冷启动无法开机。 通过USB作为U盘接入windows时不显示盘符,win10自带的 disk manager无法删除分区。 Win10启动diskpart工具时程序无响应,看上去是卡在了磁盘识别的部分. 试图用Intel...

2020-02-26 11:09:44 29577 27

原创 基于openvino 2019R3的推理性能优化的学习与分析 (六) 基于CPU的INT8推理(inference)性能分析

OpenVINO号称支持CPU INT8的推理已经好久了Introducing int8 quantization for fast CPU inference using OpenVINO号称在mobilenet-ssd上 i7-8700能有1.36X的性能提升。但是前几个版本的calibration tool的变化实在太大了,从native C++变成python tool, 再到现在的D...

2019-12-17 16:58:11 2609 6

原创 基于openvino 2019R3的推理性能优化的学习与分析 (五) 基于CPU/GPU混合运算的推理(inference)性能分析

最近读到这么一篇文章Automatic Multi-Device Inference with Intel® Distribution of OpenVINO™ toolkit,号称使用CPU/GPU协同运算做推理,可以大幅度提高推理能力。以mobilenet-ssd为例,文中附上了一个性能数据对比CPU/GPU一起推理后的性能相对只用CPU推理,性能提高了到了0.79/0.64=...

2019-12-17 12:04:16 2643 21

原创 基于openvino 2019R3的推理性能优化的学习与分析 (四) 基于GPU的推理(inference)性能分析

再看看纯集成显卡GPU的mobilenet-ssd 的推理性能, 测试平台是i5 7440HQ, 4核4线程, GPU是Gen9 的GT2, 24EU, 属于纯大白菜集成显卡首先是FP32模型当Batch size =1时inference request(nireq) = 1时,即同时只有一个推理请求Latency = 13.6ms, Throughtput = 73F...

2019-12-16 15:08:42 1755

原创 基于openvino 2019R3的推理性能优化的学习与分析 (三) 基于CPU的推理(inference)性能分析

根据前面2部分对benchmark_app的分析,重新改写了一下benchmark的代码,主要去掉了命令传递参数的方法,所有参数改为代码里hard code;去掉了智能指针之类的高级用法,只使用简单的操作系统提供的多线程同步接口。这么做的目的是为了以后把inference这部分作为一个模块,可以更简单的集成进自己的程序里 :)首先看一下纯CPU的mobilenet-ssd FP32模型的...

2019-12-16 12:33:20 1783

原创 基于openvino的推理性能优化的学习与分析 (二) 官方参考源码benchmark_app的设计逻辑

通过学习sample代码里main函数的流程和注释,Benchmark_app的实现流程整理如下benchmark支持CPU/GPU/NCS计算棒等多种硬件的单独使用推理和混合使用推理。具体的命令参数是CPU推理./benchmark_app -m <model> -i <input> -d CPUGPU推理./benchmark_app -m <...

2019-12-13 17:51:53 2440 4

原创 基于openvino的推理性能优化的学习与分析 (一) 官方参考源码benchmark_app的编译运行

很久以前就看了这么一篇文章 "使用英特尔®GPU的性能调优达到153帧MobileNet-SSD目标检测", 作者是在Intel CPU的集成显卡上实现的。一直想亲手实践一下,无奈这些年患了很严重的拖延症和懒癌。最近病情有所好转,索性努力研究一下。首先安装VS2017, 接着从官网下载安装最新的openvino版本2019 R3. 按照官网的Install Intel® Distribu...

2019-12-11 17:00:32 2359 3

原创 MKL-DNN学习笔记 (八)DRRN超分辩率推理代码的实现

前面实现了DRRN所需的各个层的MKL-DNN代码模块,接下来就是用各种模块来搭积木了。对《纯C++超分辨率重建DRRN --改编》的程序改写的时候要注意几点1. 原来程序里的vl_BatchNorm+vl_Scale+vl_ReLU, 现在可以用一个BatchNorm来代替2. 原来的vl_nnconv, 现在要改成Reorder+Convolution+Reorder来获得最...

2019-10-14 15:51:41 738 2

SF15_ISGC003_81_SGX_DL_100_small.pdf

intel sgx单页简介,什么是SGX?SGX工作原理以及如何开发SGX应用

2019-06-03

multimedia basis

记录了我学到的一些多媒体编解码方面的知识和心得,欢迎大家和我交流

2007-12-08

空空如也

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

TA关注的人

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