OpenCV 3.0 三年半后,OpenCV 4.0 终于出炉

2018 年 12 月 1 日 Python开发者

(给Python开发者加星标,提升Python技能


转自:机器之心 


2015 年 6 月,OpenCV 3.0 发布。时隔三年半,OpenCV 4.0 终于发布。至此,OpenCV 已经走过了近 18 个年头。


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 版本的发布已经过去三年多,近日 OpenCV 4.0 final 版发布,它进一步完善了核心接口,并添加了二维码检测器、ONNX 转换格式等新特点。


重要更新:


  • OpenCV 4.0 现在是一个 C++11 库,要求 C++11 兼容的编译器。所需的 CMake 至少是 3.5.1 版本。

  • 移除 OpenCV 1.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 模块。


此外,OpenCV 4.0 支持 Mask-RCNN 模型,性能也有所提升,图像处理操作可实现 15%-30% 的速度提升。


OpenCV 与深度学习


在 OpenCV 4.0 的更新中,它强化了 DNN 模块并添加支持 ONNX 交换格式的神经网络,这一切都表明 OpenCV 非常注重其与深度学习之间的关系。其实自从 OpenCV 3.1 以来,它就包含了能实现深度网络前向传播的 DNN 模块,这些深度网络一般都由 Caffe 等深度学习框架预训练而成。在 OpenCV 3.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

  • GoogLeNet v1 (也称为 Inception-5h)

  • ResNet-34/50/...

  • SqueezeNet v1.1

  • VGG-based FCN(语义分割网络)

  • ENet(轻量级语义分割网络)

  • VGG-based SSD(目标检测网络)

  • MobileNet-based SSD(轻量级目标检测网络)


OpenCV 4.0 发布地址:https://opencv.org/opencv-4-0-0.html



推荐阅读

(点击标题可跳转阅读)

为什么 Python 这么慢?

开源社区行为准则风波不断,SQLite 遭批评

wxPython:python 首选的 GUI 库


觉得本文对你有帮助?请分享给更多人

关注「Python开发者」加星标,提升Python技能

登录查看更多
5

相关内容

一个跨平台的计算机视觉处理库,全称是Open Source Computer Vision。
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
56+阅读 · 2020年6月26日
【实用书】Python机器学习Scikit-Learn应用指南,247页pdf
专知会员服务
255+阅读 · 2020年6月10日
专知会员服务
165+阅读 · 2020年6月4日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
229+阅读 · 2020年5月21日
Python分布式计算,171页pdf,Distributed Computing with Python
专知会员服务
105+阅读 · 2020年5月3日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
抢鲜看!13篇CVPR2020论文链接/开源代码/解读
专知会员服务
49+阅读 · 2020年2月26日
官方解读:TensorFlow 2.0 新的功能特性
云头条
3+阅读 · 2019年1月23日
从人脸检测到语义分割,OpenCV预训练模型库
极市平台
5+阅读 · 2018年10月26日
用Python调用百度OCR接口实例
数据挖掘入门与实战
16+阅读 · 2018年1月29日
【每月好书】OpenCV算法精解
Python程序员
10+阅读 · 2017年11月21日
Arxiv
4+阅读 · 2018年11月7日
A General and Adaptive Robust Loss Function
Arxiv
7+阅读 · 2018年11月5日
q-Space Novelty Detection with Variational Autoencoders
Arxiv
8+阅读 · 2018年5月17日
VIP会员
相关VIP内容
相关资讯
官方解读:TensorFlow 2.0 新的功能特性
云头条
3+阅读 · 2019年1月23日
从人脸检测到语义分割,OpenCV预训练模型库
极市平台
5+阅读 · 2018年10月26日
用Python调用百度OCR接口实例
数据挖掘入门与实战
16+阅读 · 2018年1月29日
【每月好书】OpenCV算法精解
Python程序员
10+阅读 · 2017年11月21日
Top
微信扫码咨询专知VIP会员