OpenCV 3.0之后三年半,OpenCV 4.0出炉

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

OpenCV是英特尔开源的跨平台计算机视觉库。也就是说,它是一套包含从图像预处理到预训练模型调用等大量视觉API的库,并可以处理图像识别,目标检测,图像分割和行人再识别等主流视觉任务.OpenCV最显着的特点是它提供了整套流程的工具,因此我们根本不需要了解各个模型的原理就能一个个API构建视觉任务。

OpenCV 3.0之后三年半,OpenCV 4.0出炉

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 3.0之后三年半,OpenCV 4.0出炉

可以说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密集光流算法从opencv_contrib移到视频模块。

此外,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支持的一些框架:

  • 咖啡
  • TensorFlow
  • 火炬
  • 暗网
  • ONNX交换格式的模型

目前OpenCV所支持的深度学习层级函数:

  • ABSVAL
  • AveragePooling
  • BatchNormalization
  • 级联
  • 卷积(包括扩张卷积)
  • 作物
  • 反卷积,又称转置卷积或完全卷积
  • DetectionOutput(SSD特定层)
  • 退出
  • Eltwise(+,*,max)
  • 弄平
  • FullyConnected
  • LRN
  • LSTM
  • MaxPooling
  • MaxUnpooling
  • MVN
  • NormalizeBBox(特定于SSD的层)
  • 填充
  • 置换
  • 功率
  • PReLU(包括具有特定通道斜率的ChannelPReLU)
  • PriorBox(SSD特定层)
  • RELU
  • RNN
  • 规模
  • 转移
  • 乙状结肠
  • 切片
  • SOFTMAX
  • 分裂
  • TANH

对于对性能要求很高的神经网络层,这个DNN模块包括SSE,AVX,AVX2和NEON等底层加速库,且还有持续优化中的Halide后端。

你可以在这里找到最新的基准结果:HTTPS://github.com/opencv/opencv/wiki/DNN-Efficiency

OpenCV 3.0之后三年半,OpenCV 4.0出炉

单张图像前向传播的中位最佳时间(以毫秒为单位,基于CPU在float32上计算)。

以下网络已经经过测试并证实可行:

  • AlexNet
  • GoogLeNet v1(也称为Inception-5h)
  • RESNET-34/50 / ...
  • SqueezeNet v1.1
  • 基于VGG的FCN(语义分割网络)
  • ENET(轻量级语义分割网络)
  • 基于VGG的SSD(目标检测网络)
  • 基于MobileNet的SSD(轻量级目标检测网络)

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

相关推荐