内容简介:OpenCV是英特尔开源的跨平台计算机视觉库。也就是说,它是一套包含从图像预处理到预训练模型调用等大量视觉 API 的库,并可以处理图像识别、目标检测、图像分割和行人再识别等主流视觉任务。OpenCV最显著的特点是它提供了整套流程的工具,因此我们根本不需要了解各个模型的原理就能一个个 API 构建视觉任务。OpenCV使用 BSD 许可证,因此对研究和商业用途均免费。它具备 C++、Python 和 Java 接口,支持 Windows、Linux、Mac OS、iOS 和 Android 系统。Open
OpenCV是英特尔开源的跨平台计算机视觉库。也就是说,它是一套包含从图像预处理到预训练模型调用等大量视觉 API 的库,并可以处理图像识别、目标检测、图像分割和行人再识别等主流视觉任务。OpenCV最显著的特点是它提供了整套流程的工具,因此我们根本不需要了解各个模型的原理就能一个个 API 构建视觉任务。
OpenCV使用 BSD 许可证,因此对研究和商业用途均免费。它具备 C++、 Python 和 Java 接口,支持 Windows、 Linux 、Mac OS、iOS 和 Android 系统。OpenCV旨在提高计算效率,专注于实时应用。它使用优化的 C/C++写成,能够利用多核处理。
此外,在 OpenCL 的加持下,OpenCV可以利用底层异构计算平台的硬件加速。它的 GitHub 页面中有一个「open_model_zoo」资源库,包含了大量的计算机视觉预训练模型,并提供下载方法,有助于加速开发和产品部署过程。OpenCV应用广泛,目前在全世界约有 4.7 万用户,下载量约为 1400 万。
可以说OpenCV是 CV 领域开发者与研究者的必备 工具 包,Mask-RCNN 等很多开源项目都依赖于这个工具包。现在距离 3.0 版本的发布已经过去三年多,近日OpenCV4.0 final 版发布,它进一步完善了核心接口,并添加了二维码检测器、ONNX 转换格式等新特点。
重要更新:
-
OpenCV4.0 现在是一个 C++11 库,要求 C++11 兼容的编译器。所需的 CMake 至少是 3.5.1 版本。
-
移除OpenCV1.x 中的大量 C API。
-
core 模块中的 Persistence(用于存储和加载XML、YAML 或 JSON 格式的结构化数据)可以完全使用 C++ 来重新实现,因此这里的 C API 也被移除。
-
添加了新模块 G-API,它可作为基于图的高效图像处理流程。
-
dnn 模块包括实验用 Vulkan 后端,且支持 ONNX 格式的网络。
-
实现了流行的 Kinect Fusion 算法,且为 CPU 和 GPU (OpenCL) 进行优化。
-
objdetect 模块中添加了二维码检测器和解码器。
-
将高效、高质量的 DIS dense optical flow 算法从 opencv_contrib 移到 video 模块。
此外,OpenCV4.0 支持 Mask-RCNN 模型,性能也有所提升,图像处理操作可实现 15%-30% 的速度提升。
OpenCV与深度学习
在OpenCV4.0 的更新中,它强化了 DNN 模块并添加支持 ONNX 交换格式的神经网络,这一切都表明OpenCV非常注重其与深度学习之间的关系。其实自从OpenCV3.1 以来,它就包含了能实现深度网络前向传播的 DNN 模块,这些深度网络一般都由 Caffe 等深度学习框架预训练而成。在OpenCV3.3 中,DNN 模块从 opencv_contrib 移到了核心代码库,并取得了显著的加速。
更重要的是除了 libprotobuf 以外,OpenCV中的 DNN 模块不包含额外的依赖项,而且现在 libprotobuf 已经包含到了OpenCV中。以下是目前OpenCV支持的一些框架:
-
Caffe
-
TensorFlow
-
Torch
-
Darknet
-
ONNX 交换格式的模型
目前OpenCV所支持的深度学习层级函数:
-
AbsVal
-
AveragePooling
-
BatchNormalization
-
Concatenation
-
Convolution (including dilated convolution)
-
Crop
-
Deconvolution, a.k.a. transposed convolution or full convolution
-
DetectionOutput (SSD-specific layer)
-
Dropout
-
Eltwise (+, *, max)
-
Flatten
-
FullyConnected
-
LRN
-
LSTM
-
MaxPooling
-
MaxUnpooling
-
MVN
-
NormalizeBBox (SSD-specific layer)
-
Padding
-
Permute
-
Power
-
PReLU (including ChannelPReLU with channel-specific slopes)
-
PriorBox (SSD-specific layer)
-
ReLU
-
RNN
-
Scale
-
Shift
-
Sigmoid
-
Slice
-
Softmax
-
Split
-
TanH
对于对性能要求很高的神经网络层,这个 DNN 模块包括 SSE、AVX、AVX2 和 NEON 等底层加速库,且还有持续优化中的 Halide 后端。
你可以在这里找到最新的基准结果:https://github.com/opencv/opencv/wiki/DNN-Efficiency
单张图像前向传播的中位最佳时间(以毫秒为单位,基于 CPU 在 float32 上计算)。
以下网络已经经过测试并证实可行:
-
AlexNet
-
GoogLeNetv1 (也称为 Inception-5h)
-
ResNet-34/50/...
-
SqueezeNet v1.1
-
VGG-based FCN(语义分割网络)
-
ENet(轻量级语义分割网络)
-
VGG-basedSSD(目标检测网络)
-
MobileNet-basedSSD(轻量级目标检测网络)
OpenCV4.0 发布地址:https://opencv.org/opencv-4-0-0.html
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 一年半经验,百度、有赞、阿里面试总结
- 寒冬中的一年半前端跳槽
- 三年半Java后端面试经历
- 刷《一年半经验,百度、有赞、阿里面试总结》·手记
- 工作2年半跳槽面试阿里,成功拿到offer,凭什么?
- 两年半完成逆袭,他终于拿到字节跳动的 Offer
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。