测试 opencv-python 中的 mat 和 Umat 处理图像的差异(GPU加速)

简介: 测试 opencv-python 中的 mat 和 Umat 处理图像的差异(GPU加速)

前言


  近期探讨到了使用GPU加速Opencv处理图像的过程,相必大家在日常处理非深度学习任务图像数据的过程中使用的绝大多数是CPU进行处理的数据,例如对图像进行灰度化、添加噪声、滤波等操作。这里我们采用实验数据比较mat和Umat的特点说明Umat的优势




实验


实验准备


PC端配置:CPU:11400F - i5 GPU: GTX1660ti


常见图像像素尺寸例举:


img0.shape = 237 x 250 x 3


img1.shape = 512 x 384 x 3   (标清)


img2.shape = 640 x 352 x 3   (DVD)


img3.shape = 640 x 480 x 3  (数字电视RTSP)


img4.shape = 800 x 480 x 3  (数字电视RTSP)


img5.shape = 1024x 534 x 3  (数字电视RTSP)


img6.shape = 1280x 720 x 3  (直播)


img7.shape = 1280x 960 x 3  (工业相机)


img8.shape = 1920x 1080 x 3 (监控相机)



实验步骤


图像处理步骤:


  1. 读取图像


  1. 图像灰度话


  1. 添加高斯噪声


  1. Canny边缘检测




统计方式:


  计算循环100次的处理FPS均值,通过比较处理不同像素大小的图像进而比较在何时使用 mat 何时使用 Umat



处理结果:


512x384:


GPU: 302.8824480662899


CPU: 304.31073670160845



640X480


GPU: 204.14862846096017


CPU: 207.01862159693542


1024X543


GPU: 117.21923353899794


CPU: 131.77444173577712


1280X960


GPU: 61.402272955890474


CPU: 64.44232134963245


1920X1080


GPU: 31.742890957261825


CPU: 30.31974624205707




总结:


  mat2Umat的过程中也会耗费一定的时间,如果在工程应用中处理的是小尺寸图像&Opencv的计算量不大的情况下建议使用mat格式数据进行操作即可(这样避免了 mat2Umat过程的时间损耗);如果处理的是大尺寸图像并且需要大量使用opencv内置函数进行处理数据的话,大家可以使用mat2Umat进行转换数据到GPU上去进行 提速运算




demo


import cv2
import time
FpsList = []
for i in range(100):
    t1 = time.time()
    img = cv2.UMat(cv2.imread("512384.jpg", cv2.IMREAD_COLOR))
    # img = cv2.imread("512384.jpg", cv2.IMREAD_COLOR)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    gray = cv2.GaussianBlur(gray, (7, 7), 1.5)
    gray = cv2.Canny(gray, 0, 50)
    t2 = time.time()
    FPS = 1 / (t2 - t1)
    FpsList.append(FPS)
    cv2.putText(img, "FPS= %.2f" % FPS, (0, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
    cv2.imshow("edges", img)
    cv2.waitKey(1)
print(sum(FpsList) / len(FpsList))




相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
5天前
|
机器学习/深度学习 数据采集 监控
基于Python的图像识别技术在智能安防系统中的应用
【5月更文挑战第30天】 在当今社会,随着人工智能技术的飞速发展,图像识别已经成为了一个重要的研究领域。本文将介绍基于Python的图像识别技术在智能安防系统中的应用,通过对深度学习模型的讲解和实例分析,展示了如何利用Python实现高效、准确的图像识别功能,为智能安防系统的设计和实现提供了有力的技术支持。
|
13天前
|
数据安全/隐私保护 计算机视觉 Python
我赌你没有了解过——Python 图像加密
我赌你没有了解过——Python 图像加密
|
15天前
|
区块链 Python
最新用Python从零开始创建区块链_基于python做区块链,哔哩哔哩测试面试题
最新用Python从零开始创建区块链_基于python做区块链,哔哩哔哩测试面试题
|
15天前
|
Python
2024年最全用Python和PIL美化图像:文本覆盖技术实战,Python高级面试题pdf
2024年最全用Python和PIL美化图像:文本覆盖技术实战,Python高级面试题pdf
|
15天前
|
数据采集 JSON 数据格式
2024年最新【python基础教程】常用内置模块(1),2024年最新头条测试面试
2024年最新【python基础教程】常用内置模块(1),2024年最新头条测试面试
|
19天前
|
算法 计算机视觉
OpenCV高斯差分技术实现图像边缘检测
OpenCV高斯差分技术实现图像边缘检测
|
20天前
|
Serverless Python
Python----图像的手绘效果
Python----图像的手绘效果
13 1
|
21天前
|
计算机视觉
OpenCV图像运动模糊
OpenCV图像运动模糊
17 0
|
21天前
|
计算机视觉
OpenCV图像阈值
OpenCV图像阈值
6 0
|
21天前
|
计算机视觉
OpenCV图像混合
OpenCV图像混合
14 0