当前位置: 首页 > news >正文

如何通过优化 Python 中的 GPU 使用率将视频处理速度提高 5 倍(教程含源码)

我们这些 ML 领域的人都熟悉采用很酷的算法并使其做好生产准备的困难。在 Lightricks 研究基础架构团队,我们的工作是推动 Lightricks 研究部门完成的开创性工作并使其运行得更快,以便我们的用户能够享受到最佳的用户体验。

我们的一些用例涉及处理视频,因此能够有效地解码和预处理它们成为一项重要任务。在这篇博文中,我将展示我们如何将视频的解码和预处理速度提高 5 倍,同时利用 GPU 惊人的并行处理能力,同时保持代码简单且易于维护。

我开始与一支优秀的研究人员团队合作,研究在云中处理的视频功能,并发现现有的加载和预处理视频的方式运行良好。代码接收到文件的路径,在循环中逐帧读取它,根据一些预定义的配置调整帧的大小,并返回下采样帧的列表。

它看起来像这样:

import imageio as io
 
VIDEO_PATH = "vid_10sec_3584x2240.mp4"
IMAGE_SIZE_LOW =(96, 192)
 
def preprocess_video(video_path, image_size_low):
   frames_low = []
   for image in io.imiter(video_path):
       # Resize in a few iterations using cv2
       image_low = resize_frame(image, image_size_low)
       frames_low.append(image_low)
 
   return frames_low
 
print("Preprocessing on CPU...")
s = time.time()
frames = preprocess_video(video_path=VIDEO_PATH, image_size_low=IMAGE_SIZE_LOW)

相关文章:

  • python获取文件夹下所有图片目录
  • 【MySQL】慢SQL搜集工具、SQL脱敏聚合处理
  • 手机号发验证码实现用户注册登录
  • 程序员缺乏经验的 7 种表现,你中了几个?
  • Spring框架中的核心技术之AOP
  • 用户体验与响应式字体二三事|rem单位与flexible.js、rpx单位与css媒体查询
  • 408 | 【2009年】计算机统考真题 自用回顾知识点整理
  • MyMusic 重点实现
  • 云计算敏捷团队的 10 个最佳实践工具
  • 阿里面试官终于把多年总结的Java八股文PDF版分享出来了,帮我金九银十拿下4个offer
  • java毕业设计超市管理系统Mybatis+系统+数据库+调试部署
  • 计算机网络 第 1 章 计算机网络概述
  • 如何转换图片格式?教你三招一键轻松转换图片格式
  • 【从小白到大白04】Linux基本权限
  • Unity_飞机大战_防止单例随场景销毁和跨场景两个物体脚本问题_自动加载物体挂载脚本的两种方式
  • conda常用的命令
  • ES学习笔记(12)--Symbol
  • gitlab-ci配置详解(一)
  • js 实现textarea输入字数提示
  • mac修复ab及siege安装
  • Netty源码解析1-Buffer
  • nginx 配置多 域名 + 多 https
  • Vue.js源码(2):初探List Rendering
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 入口文件开始,分析Vue源码实现
  • 数组大概知多少
  • 提醒我喝水chrome插件开发指南
  • 微信小程序填坑清单
  • 延迟脚本的方式
  • 怎么将电脑中的声音录制成WAV格式
  • 正则表达式小结
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 数据库巡检项
  • ​queue --- 一个同步的队列类​
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #include
  • #include<初见C语言之指针(5)>
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (10)STL算法之搜索(二) 二分查找
  • (C语言)字符分类函数
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (四)Linux Shell编程——输入输出重定向
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (译) 函数式 JS #1:简介
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .NET与 java通用的3DES加密解密方法
  • /etc/sudoer文件配置简析
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • [BeginCTF]真龙之力
  • [DL]深度学习_Feature Pyramid Network
  • [docker] Docker容器服务更新与发现之consul