1. 程式人生 > >千呼萬喚始出來!OpenCV 4.0正式釋出!

千呼萬喚始出來!OpenCV 4.0正式釋出!

作者 | 周強(本文為作者獨立觀點,轉載請聯絡作者)

來源 | 我愛計算機視覺


OpenCV 4.0 正式版來啦!


重回英特爾的 OpenCV 終於迎來一次大版本更新,增加了諸多新特性,快來一起看看吧~


640?wx_fmt=png


因為 OpenCV 最開始開發時的語言是 C,導致許多模組無法利用 C++ 11 的良好特性,OpenCV 4.0 版本的一個重要使命就是去除 C 語言風格的介面,使其完全支援 C++ 11!


1.大量從 OpenCV 1.x 遺留的 C 語言風格的 API 介面被刪掉,主要影響的模組是 objdetect, photo, video, videoio, imgcodecs, calib3d。


2.在 core 模組中的持久化(在 XML,YAML 或 JSON 中儲存和載入結構化資料)已完全用 C ++ 重新實現,並去除了相應的 C 風格的介面。 目前,base64 支援尚未完成(僅支援載入 base64 編碼的 XML 和 YAML,還未支援編碼)。 現在,儲存在 FileNode 中的序列的隨機訪問是 O(N) 操作; 使用 cv :: FileNodeIterator 能夠更快地進行順序訪問。 速度上,FileStorage 的載入比以前的實現少了 3-6 倍的記憶體!


3.編譯新版 OpenCV 現在需要支援 C++ 11 的編譯器。



640?wx_fmt=jpeg

640?wx_fmt=png


DNN(深度神經網路)模組是目前 OpenCV 更新最重要的模組!


1.增加 Mask-RCNN 模型支援。


使用指南:

https://github.com/opencv/opencv/wiki/TensorFlow-Object-Detection-API

Python例子:

https://github.com/opencv/opencv/blob/master/samples/dnn/mask_rcnn.py


作者曾經報道過的例子:

OpenCV4.0 Mask RCNN 例項分割示例 C++/Python實現


2.整合 ONNX 解析器。 支援多個流行的分類網路。 部分支援 YOLO 物件檢測網路(YOLO 的 ONNX 版本缺少一些提供矩形列表的最終圖層)。


3.通過引入 Intel DLDT 改進 DNN 模組速度。

Intel DLDT 近期已經開源,詳見:

https://software.intel.com/openvino-toolkit


4.API 更改:預設情況下,blobFromImage 方法不會交換 R 和 B 通道,也不會對輸入影象進行裁剪。 而且,此 API 更改也已新增到 OpenCV 3.4 分支。


5.為不支援 OpenCL 而支援 Vulkan 的硬體平臺添加了實驗性質的 Vulkan 後端(還在開發中!不建議大家使用)。


6.為 OpenCV 支援的最流行的深度學習網路添加了快捷方式。 可以通過指定模型的別名,跳過預處理引數甚至模型的路徑!


比如:


python object_detection.py --model opencv_face_detector.caffemodel --config opencv_face_detector.prototxt --mean 104 177 123 --width 300 --height 300


可以直接被替代為:


python object_detection.py opencv_fd


7.修復了 AMD 和 NVIDIA GPU 上的 OpenCL 加速。 現在,可以為模型啟用 DNN_TARGET_OPENCL,開啟 OpenCL 支援。 請注意,DNN_TARGET_OPENCL_FP16 僅在英特爾 GPU 上進行測試,因此仍需要額外的 flags。(這個善意的提醒也就意味著你最好不要用那兩家的顯示卡玩OpenCV(^ ^))


640?wx_fmt=png


G-API 為演算法的硬體優化加速提供計算圖支援!


opencv_gapi 是全新新增的模組, 它是非常有效的影象處理引擎。開發者可以在程式中定義多個影象處理步驟組成的圖,執行的時候進行優化,使得 fast and portable。


非常看好這一模組的應用!


640?wx_fmt=jpeg


“加速”是 OpenCV 開發永恆不變的主題!


每次釋出這塊的說明都差不多,總結起來就是一句話:


我們很努力地給你們在 CPU 的指令級上進行了加速,只要是支援該指令的 CPU 儘量讓你們用上,而且我們還支援 NEON 了哦~


640?wx_fmt=png


objdetect 模組新增 QR 碼的檢測和解碼!


因為這個功能在移動端幾乎成為 APP 的標配了。


參考例子:

https://github.com/opencv/opencv/blob/master/samples/cpp/qrcode.cpp


作者曾經對檢測功能進行了測試:

OpenCV4.0 快速QR二維碼檢測測試示例


640?wx_fmt=jpeg


實現了流行的 Kinect Fusion 演算法!


並針對 CPU 和 GPU(OpenCL)進行了優化,整合到 opencv_contrib / rgbd 模組中。 為了使實時採集處理更高效,在 opencv / videoio 模組中更新了 Kinect 2 支援。 在 4.0 beta 版本中,iGPU 的程式碼已經加速,在高解析度的情況下(512x512x512 integration volume),效能提升了 3 倍。 


640?wx_fmt=jpeg


非常高效且高質量的 DIS 密集光流演算法已經從 opencv_contrib 轉移到 opencv/video 模組。 


示例:

https://github.com/opencv/opencv/blob/master/samples/cpp/dis_opticalflow.cpp


這還是比較讚的,之前 OpenCV 的光流模組相比學術界的最新成果實在是太弱了。


總結


新版 OpenCV 更加聚焦影象處理基礎功能和深度學習模組!英特爾自家的加速庫和 G-API 是值得表揚的亮點!


-【完】-

精彩推薦

BDTC 2018


2018 中國大資料技術大會將於 12 月 6 - 8 日在新雲南皇冠假日酒店舉行。匯聚超百位國內外實力講師從學界翹楚到行業一線大拿:

管曉巨集:中國科學院院士;

張巨集江:原始碼資本投資合夥人;

張曉東:美國俄亥俄州立大學 Robert M. Critchfield 講席教授;

陳性元:北京資訊科學技術研究院副院長;

周靖人:阿里巴巴集團副總裁;

李浩源:Alluxio 公司創始人&CEO

......

全方位立體解讀大資料時代的技術程序,為眾技術愛好者奉上一場優質乾貨盛宴。


640?wx_fmt=jpeg


推薦閱讀

勝過iPhone XS?Google Pixel的“夜視功能”是怎樣煉成的

近期最受大家關注的機器學習專案Top10!

乾貨(附原始碼) | 爬取一萬條b站評論,分析9.7分的新番憑啥這麼火?

程式設計師如何 Get 分散式鎖的正確姿勢?

讓你崩潰無語的程式命名有哪些?

2年2億美金,澳本聰耗得起BCH內戰又怎樣?

剛寫完排序演算法,就被開除了…