SlideShare a Scribd company logo
1 of 15
Download to read offline
Copyright © 2017 Intel Corporation 1
Vadim Pisarevsky, Software Engineering Manager, Intel Corp.
May 2017
Making OpenCV Code Run Fast
Copyright © 2017 Intel Corporation 2
OpenCV at glance
What The most popular computer vision library:
http://opencv.org
License BSD
Supported Languages C/C++, Java, Python
Size >950 K lines of code
SourceForge statistics 13.6 M downloads (does not include github traffic)
Github statistics >7500 forks, >4000 patches merged during 6 years
(~2.5 patches per working day before Intel,
~5 patches per working day at Intel)
Accelerated with SSE, AVX, NEON, IPP, MKL, OpenCL, CUDA,
parallel_for_, OpenVX, Halide (planned)
The actual versions 2.4.13.2 (2016 Dec), 3.2 (2016 Dec)
Upcoming releases 2.4.14 (2017), 3.3 (2017 Jun)
Copyright © 2017 Intel Corporation 3
OpenCV, CV & Hardware Evolution 2000 => 2017
2000 2017
OpenCV OpenCV 1.0 alpha; C API, 1
module, Windows
OpenCV 3.2; C++ API; 30+30 modules,
Windows/Linux/Android/iOS/QNX, etc.
CPU 32-bit single-core, ~1 GFlop 32/64-bit many-core, 300+ GFlops, ~100 GFlops in a
cellphone!
GPU as accelerator - OpenCL, CUDA; 0.5-1+ TFlops
Other accelerators FPGA (manually coded) OpenCL-capable FPGA, various DSPs, etc.
Vision algorithms Traditional vision, simple image
processing, detection & tracking,
contours; “empirical, low-profile
computer vision”
Sophisticated traditional vision, 3D vision,
computational photography, deep learning, hybrid
algorithms; “learning-based, extensive computer
vision”
Cameras, sensors Analog surveillance cameras
(recording only), Webcams
Computer vision in every cellphone, every street
crossing, every mall, coming to every car; 3d
sensors, lidars, etc.
Computing model Desktop Edge, Cloud, Fog; Desktop for R&D only
Copyright © 2017 Intel Corporation 4
OpenCV Acceleration Options
CUDA modules
OpenVX
(immediate mode)
OpenCV optimized
for custom hardware
Universal
intrinsics
NEON/SSE/AVX2…
Carotene HAL
OpenCV optimized for
ARM CPU
IPP, MKL
OpenCV optimized
for x86/x64 CPU
OpenVX
(graphs)
OpenCV optimized
for custom hardware
OpenCV
T-API OpenCL GPU-optimized
OpenCV
OpenCV HAL
Halide scripts Any Halide-supported
hardware
User-programmable
tools
Collections of fixed
functions
Active development area
Copyright © 2017 Intel Corporation 5
• OpenCV 3.x includes T-API by default:
• Asynchronous: can run GPU & CPU code in parallel
• 100s of open-source OpenCL kernels
T-API: heterogeneous compute
with OpenCV is easy!
#include "opencv2/opencv.hpp"
using namespace cv;
int main(int argc, char** argv)
{
Mat img, gray;
img = imread(argv[1], 1);
imshow("original", img);
cvtColor(img, gray, COLOR_BGR2GRAY);
GaussianBlur(gray, gray,
Size(7, 7), 1.5);
Canny(gray, gray, 0, 50);
imshow("edges", gray);
waitKey();
return 0;
}
#include "opencv2/opencv.hpp"
using namespace cv;
int main(int argc, char** argv)
{
Mat img; UMat gray;
img = imread(argv[1]);
imshow("original", img);
cvtColor(img, gray, COLOR_BGR2GRAY);
GaussianBlur(gray, gray,
Size(7, 7), 1.5);
Canny(gray, gray, 0, 50);
imshow("edges", gray); // automatic sync point
waitKey();
return 0;
}
Copyright © 2017 Intel Corporation 6
T-API: under the hood
Very little of “boilerplate code”! (just ~30 lines of code)
void mykernel(cv::InputArray input, cv::OutputArray output, params …) {
}
Use OpenCL?
Get clmem (use zero-
copy if possible)
Retrieve/compile OpenCL
kernel & “enqueue” it
successfully?
yes
yes
Finish
Retrieve
cv::Mat
Run C++ code
Copyright © 2017 Intel Corporation 7
T-API execution model
• Supports multiple devices
• Asynchronous execution with no explicit synchronization required
Copyright © 2017 Intel Corporation 8
T-API showcase: Pedestrian Detector
Build pyramid RGB2Luv
HOG feature
maps
Integrals of
HOG maps
Feature Pyramid Builder
Capture Video
Frame
Optical flow-
based Tracker
Per-frame detector
Sliding window +
Cascade classifier
Non-maxima
suppression (filtering
out duplicates)
Do temporal filtering,
follow pedestrians,
detect new ones
Performance profile of
per-frame detector (CPU)
Feature Pyramid Builder (65%)
Classifier + Non-max (35%)
• Feature Pyramid Builder is the ideal “kernel” to optimize:
• Expensive
• Regular, easy to parallelize & vectorize
• Reusable (e.g., for cars)
Copyright © 2017 Intel Corporation 9
• Duplicate CPU branch
• Make OpenCL-compatible copy (cv::UMat) for each internal buffer (cv::Mat)
• Use available OpenCL-optimized funcs (e.g. cv::resize, cv::integral)
• Create OpenCL kernels for other parts (RGB2Luv, HOG): ~700 LoC
• Debug-Profile-Optimize: repeat until happy
Feature Pyramid Builder optimization with T-API
Part CPU time,
ms (1080p)
OCL time,
ms (1080p)
CPU time,
ms (720p)
OCL time,
ms (720p)
Acceleration
(1080p)
Acceleration
(720p)
All 200 140 107 87 42% 23%
Feature Pyramid
Builder
130 70 60 40 85% 50%
Test machine: Core i5 (Skylake), 2-core 2.5 GHz, Intel HD530 GPU
Copyright © 2017 Intel Corporation 10
• Many acceleration options are available (CPU,
GPU, DSPs, FPGA, etc.)
• Coding kernels using native tools is huge
investment and maintenance cost
• Big time to market
• Big commitment because of low portability
• OpenCV cannot be optimized for each single
accelerator
• OpenCL is not perf-portable neither easy to use
• Let’s generate OpenCL or LLVM code automatically
from high-level algorithm description!
• Let’s separate the platform-agnostic algorithm
description and platform-specific “pragma’s”
(vectorization, tiling …)!
Halide: write once, schedule everywhere!
Halide! (http://halide-lang.org)
Function 1 Function 2 …
CPU Scheduler:
Tiling,
Vectorization,
Pipelining
GPU Scheduler:
Tiling,
Vectorization,
Pipelining
CPU code
(SSE, AVX…,
NEON)
GPU code
(OpenCL,
CUDA)
Algorithm Description
Copyright © 2017 Intel Corporation 11
• Same code for CPU & GPU
• Halide includes very efficient loop handling engine
• Almost any known DNN can be implemented
entirely in Halide
• The language is quite limited (insufficient to cover
OpenVX 1.0)
• In some cases the produced code is inefficient
• The whole infrastructure is immature
Plans
• Halide backend in OpenCV DNN module (in
progress)
• Extend the language (if operator, etc.)
• Improve performance of the generated code
• Fix/improve the infrastructure (nicer frontend, better
support for offline compilation)
kernel OpenCV, ms
(CPU)
Halide, ms
(CPU)
Halide, ms
(GPU)
RGB=>Gray 0.44 0.54 (-20%) 0.58 (-25%)
Canny 3.3 1.4+2 (-3%) 2.4+2 (-25%)
DNN: AlexNet 29 (w. MKL) 24 (+20%) 47 (-40%)
DNN: ENet
(512x256)
~250 (w. MKL) 60 (+320%) 44 (+470%)
HOG-based
pedestrian
detector (1080p)
200 75+70 (+38%) 140 – 700 ms
Halide: first impressions & results
Copyright © 2017 Intel Corporation 12
• OpenVX-based HAL in OpenCV
✓ [Done] Immediate-mode OpenVX calls to accelerate simple functions:
• cv::boxFilter(const cv::Mat&, …) => vxuBox3x3(vx_image, …) etc.
• tested with Khronos’ sample implementation and Intel IAP
• [TBD] Graphs for DNN acceleration
✓ [Done] Mixing OpenVX + OpenCV at user app level
• vx_image  cv::Mat, OpenVX C++ wrappers, sample code:
• https://github.com/opencv/opencv/tree/master/samples/openvx
OpenCV + OpenVX
Copyright © 2017 Intel Corporation 13
OpenCV Acceleration Options Comparison
+ ⎼
HAL functions Get used automatically (zero effort); vendors-specific
implementation is possible
Little coverage (mostly image processing); usually CPU-only
HAL intrinsics Super-flexible, widely applicable and widely available Low-level, CPU only
T-API Can potentially deliver top speed OpenCL is not performance-portable; lot’s of expertise needed
OpenVX Can be tailored for any hardware (CPU, GPU, DSP, FPGA) Inflexible, not easy to use, difficult to extend
Halide Decent performance; relatively easy to use Not as flexible as OpenCL or C++
Performance
Ease-of-use
HAL functions
HAL intrinsics
Halide
T-API (custom)
T-API (built-in)
OpenVX (graphs)
OpenVX (graphs for DNN)
Flexibility
Coverage
HAL functions
HAL intrinsics
Halide
T-API (custom)
T-API (built-in)
OpenVX (graphs)
Copyright © 2017 Intel Corporation 14
• Modern OpenCV provides several acceleration paths
• Custom kernels are essential for user apps; existing OpenCV (and
OpenVX) functionality is not enough
• Universal intrinsics
(http://docs.opencv.org/master/df/d91/group__core__hal__intrin.html) is
best solution for CPU
• T-API (OpenCL; http://opencv.org/platforms/opencl.html) is the way to go
for GPU acceleration
• Halide looks very promising and can become a viable alternative to plain
C++ and OpenCL for “regular” algorithms; OpenCV 3.3 will include
Halide-accelerated deep learning module
Summary
Copyright © 2017 Intel Corporation 15
• OpenCV: http://opencv.org
• Intel CV SDK: https://software.intel.com/en-us/computer-vision-sdk - the
home of Intel-optimized OpenCV & OpenVX
• Halide: http://halide-lang.org
• Insights on the OpenCV 3.x feature roadmap, EVS2016 talk by Gary
Bradski: https://www.embedded-vision.com/platinum-
members/embedded-vision-alliance/embedded-vision-
training/videos/pages/may-2016-embedded-vision-summit-opencv
Resources

More Related Content

What's hot

Visual C++で使えるC++11
Visual C++で使えるC++11Visual C++で使えるC++11
Visual C++で使えるC++11nekko1119
 
C++でできる!OS自作入門
C++でできる!OS自作入門C++でできる!OS自作入門
C++でできる!OS自作入門uchan_nos
 
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーションakio19937
 
EğItim Bilimleri 9
EğItim Bilimleri 9EğItim Bilimleri 9
EğItim Bilimleri 9derslopedi
 
ふつうのcore.async
ふつうのcore.asyncふつうのcore.async
ふつうのcore.asyncTsutomu Yano
 
PCD2019 TOKYO ワークショップ「2時間で!Processingでプログラミング入門」
PCD2019 TOKYO ワークショップ「2時間で!Processingでプログラミング入門」PCD2019 TOKYO ワークショップ「2時間で!Processingでプログラミング入門」
PCD2019 TOKYO ワークショップ「2時間で!Processingでプログラミング入門」reona396
 
非同期処理の基礎
非同期処理の基礎非同期処理の基礎
非同期処理の基礎信之 岩永
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案yohhoy
 
Jurijs Velikanovs Direct NFS - Why and How?
Jurijs Velikanovs Direct NFS - Why and How?Jurijs Velikanovs Direct NFS - Why and How?
Jurijs Velikanovs Direct NFS - Why and How?Andrejs Vorobjovs
 
Unityではじめるオープンワールド入門 アーティスト編
Unityではじめるオープンワールド入門 アーティスト編Unityではじめるオープンワールド入門 アーティスト編
Unityではじめるオープンワールド入門 アーティスト編Unity Technologies Japan K.K.
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacsShougo
 
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013Ryo Sakamoto
 
ワタシはSingletonがキライだ
ワタシはSingletonがキライだワタシはSingletonがキライだ
ワタシはSingletonがキライだTetsuya Kaneuchi
 
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術についてAIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術についてFixstars Corporation
 
貪欲法による
単調劣モジュラ関数の最大化
貪欲法による
単調劣モジュラ関数の最大化貪欲法による
単調劣モジュラ関数の最大化
貪欲法による
単調劣モジュラ関数の最大化Ikumi Shimizu
 
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!shinjiigarashi
 
バグ0の資産を積み上げるための証明駆動開発入門
バグ0の資産を積み上げるための証明駆動開発入門バグ0の資産を積み上げるための証明駆動開発入門
バグ0の資産を積み上げるための証明駆動開発入門Riku Sakamoto
 

What's hot (20)

Visual C++で使えるC++11
Visual C++で使えるC++11Visual C++で使えるC++11
Visual C++で使えるC++11
 
C++でできる!OS自作入門
C++でできる!OS自作入門C++でできる!OS自作入門
C++でできる!OS自作入門
 
フラグを愛でる
フラグを愛でるフラグを愛でる
フラグを愛でる
 
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
 
EğItim Bilimleri 9
EğItim Bilimleri 9EğItim Bilimleri 9
EğItim Bilimleri 9
 
ふつうのcore.async
ふつうのcore.asyncふつうのcore.async
ふつうのcore.async
 
PCD2019 TOKYO ワークショップ「2時間で!Processingでプログラミング入門」
PCD2019 TOKYO ワークショップ「2時間で!Processingでプログラミング入門」PCD2019 TOKYO ワークショップ「2時間で!Processingでプログラミング入門」
PCD2019 TOKYO ワークショップ「2時間で!Processingでプログラミング入門」
 
非同期処理の基礎
非同期処理の基礎非同期処理の基礎
非同期処理の基礎
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案
 
Jurijs Velikanovs Direct NFS - Why and How?
Jurijs Velikanovs Direct NFS - Why and How?Jurijs Velikanovs Direct NFS - Why and How?
Jurijs Velikanovs Direct NFS - Why and How?
 
Unityではじめるオープンワールド入門 アーティスト編
Unityではじめるオープンワールド入門 アーティスト編Unityではじめるオープンワールド入門 アーティスト編
Unityではじめるオープンワールド入門 アーティスト編
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacs
 
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
GPUが100倍速いという神話をぶち殺せたらいいな ver.2013
 
画像処理の高性能計算
画像処理の高性能計算画像処理の高性能計算
画像処理の高性能計算
 
ワタシはSingletonがキライだ
ワタシはSingletonがキライだワタシはSingletonがキライだ
ワタシはSingletonがキライだ
 
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術についてAIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
AIチップ戦国時代における深層学習モデルの推論の最適化と実用的な運用を可能にするソフトウェア技術について
 
貪欲法による
単調劣モジュラ関数の最大化
貪欲法による
単調劣モジュラ関数の最大化貪欲法による
単調劣モジュラ関数の最大化
貪欲法による
単調劣モジュラ関数の最大化
 
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
PHP 8 と V8 (JavaScript) で速さを見比べてみよう!
 
バグ0の資産を積み上げるための証明駆動開発入門
バグ0の資産を積み上げるための証明駆動開発入門バグ0の資産を積み上げるための証明駆動開発入門
バグ0の資産を積み上げるための証明駆動開発入門
 
SICPの紹介
SICPの紹介SICPの紹介
SICPの紹介
 

Similar to "Making OpenCV Code Run Fast," a Presentation from Intel

"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres..."The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...Edge AI and Vision Alliance
 
"OpenCV on Zynq: Accelerating 4k60 Dense Optical Flow and Stereo Vision," a P...
"OpenCV on Zynq: Accelerating 4k60 Dense Optical Flow and Stereo Vision," a P..."OpenCV on Zynq: Accelerating 4k60 Dense Optical Flow and Stereo Vision," a P...
"OpenCV on Zynq: Accelerating 4k60 Dense Optical Flow and Stereo Vision," a P...Edge AI and Vision Alliance
 
OpenCV for Embedded: Lessons Learned
OpenCV for Embedded: Lessons LearnedOpenCV for Embedded: Lessons Learned
OpenCV for Embedded: Lessons LearnedYury Gorbachev
 
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVMJung Kim
 
"OpenCV for Embedded: Lessons Learned," a Presentation from itseez
"OpenCV for Embedded: Lessons Learned," a Presentation from itseez"OpenCV for Embedded: Lessons Learned," a Presentation from itseez
"OpenCV for Embedded: Lessons Learned," a Presentation from itseezEdge AI and Vision Alliance
 
Direct Code Execution - LinuxCon Japan 2014
Direct Code Execution - LinuxCon Japan 2014Direct Code Execution - LinuxCon Japan 2014
Direct Code Execution - LinuxCon Japan 2014Hajime Tazaki
 
LibOS as a regression test framework for Linux networking #netdev1.1
LibOS as a regression test framework for Linux networking #netdev1.1LibOS as a regression test framework for Linux networking #netdev1.1
LibOS as a regression test framework for Linux networking #netdev1.1Hajime Tazaki
 
Using GPUs to handle Big Data with Java by Adam Roberts.
Using GPUs to handle Big Data with Java by Adam Roberts.Using GPUs to handle Big Data with Java by Adam Roberts.
Using GPUs to handle Big Data with Java by Adam Roberts.J On The Beach
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.jsorkaplan
 
Debugging Python with gdb
Debugging Python with gdbDebugging Python with gdb
Debugging Python with gdbRoman Podoliaka
 
Natural Language Processing with CNTK and Apache Spark with Ali Zaidi
Natural Language Processing with CNTK and Apache Spark with Ali ZaidiNatural Language Processing with CNTK and Apache Spark with Ali Zaidi
Natural Language Processing with CNTK and Apache Spark with Ali ZaidiDatabricks
 
PVS-Studio for Linux (CoreHard presentation)
PVS-Studio for Linux (CoreHard presentation)PVS-Studio for Linux (CoreHard presentation)
PVS-Studio for Linux (CoreHard presentation)Andrey Karpov
 
Practical virtual network functions with Snabb (SDN Barcelona VI)
Practical virtual network functions with Snabb (SDN Barcelona VI)Practical virtual network functions with Snabb (SDN Barcelona VI)
Practical virtual network functions with Snabb (SDN Barcelona VI)Igalia
 
Advance Android Application Development
Advance Android Application DevelopmentAdvance Android Application Development
Advance Android Application DevelopmentRamesh Prasad
 
C# Production Debugging Made Easy
 C# Production Debugging Made Easy C# Production Debugging Made Easy
C# Production Debugging Made EasyAlon Fliess
 
Microkernel-based operating system development
Microkernel-based operating system developmentMicrokernel-based operating system development
Microkernel-based operating system developmentSenko Rašić
 
OneAPI dpc++ Virtual Workshop 9th Dec-20
OneAPI dpc++ Virtual Workshop 9th Dec-20OneAPI dpc++ Virtual Workshop 9th Dec-20
OneAPI dpc++ Virtual Workshop 9th Dec-20Tyrone Systems
 

Similar to "Making OpenCV Code Run Fast," a Presentation from Intel (20)

"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres..."The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
"The OpenCV Open Source Computer Vision Library: Latest Developments," a Pres...
 
"OpenCV on Zynq: Accelerating 4k60 Dense Optical Flow and Stereo Vision," a P...
"OpenCV on Zynq: Accelerating 4k60 Dense Optical Flow and Stereo Vision," a P..."OpenCV on Zynq: Accelerating 4k60 Dense Optical Flow and Stereo Vision," a P...
"OpenCV on Zynq: Accelerating 4k60 Dense Optical Flow and Stereo Vision," a P...
 
OpenCL Heterogeneous Parallel Computing
OpenCL Heterogeneous Parallel ComputingOpenCL Heterogeneous Parallel Computing
OpenCL Heterogeneous Parallel Computing
 
OpenCV for Embedded: Lessons Learned
OpenCV for Embedded: Lessons LearnedOpenCV for Embedded: Lessons Learned
OpenCV for Embedded: Lessons Learned
 
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
차세대컴파일러, VM의미래: 애플 오픈소스 LLVM
 
"OpenCV for Embedded: Lessons Learned," a Presentation from itseez
"OpenCV for Embedded: Lessons Learned," a Presentation from itseez"OpenCV for Embedded: Lessons Learned," a Presentation from itseez
"OpenCV for Embedded: Lessons Learned," a Presentation from itseez
 
Ropython-windbg-python-extensions
Ropython-windbg-python-extensionsRopython-windbg-python-extensions
Ropython-windbg-python-extensions
 
Direct Code Execution - LinuxCon Japan 2014
Direct Code Execution - LinuxCon Japan 2014Direct Code Execution - LinuxCon Japan 2014
Direct Code Execution - LinuxCon Japan 2014
 
LibOS as a regression test framework for Linux networking #netdev1.1
LibOS as a regression test framework for Linux networking #netdev1.1LibOS as a regression test framework for Linux networking #netdev1.1
LibOS as a regression test framework for Linux networking #netdev1.1
 
Using GPUs to handle Big Data with Java by Adam Roberts.
Using GPUs to handle Big Data with Java by Adam Roberts.Using GPUs to handle Big Data with Java by Adam Roberts.
Using GPUs to handle Big Data with Java by Adam Roberts.
 
OpenCV Workshop
OpenCV WorkshopOpenCV Workshop
OpenCV Workshop
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.js
 
Debugging Python with gdb
Debugging Python with gdbDebugging Python with gdb
Debugging Python with gdb
 
Natural Language Processing with CNTK and Apache Spark with Ali Zaidi
Natural Language Processing with CNTK and Apache Spark with Ali ZaidiNatural Language Processing with CNTK and Apache Spark with Ali Zaidi
Natural Language Processing with CNTK and Apache Spark with Ali Zaidi
 
PVS-Studio for Linux (CoreHard presentation)
PVS-Studio for Linux (CoreHard presentation)PVS-Studio for Linux (CoreHard presentation)
PVS-Studio for Linux (CoreHard presentation)
 
Practical virtual network functions with Snabb (SDN Barcelona VI)
Practical virtual network functions with Snabb (SDN Barcelona VI)Practical virtual network functions with Snabb (SDN Barcelona VI)
Practical virtual network functions with Snabb (SDN Barcelona VI)
 
Advance Android Application Development
Advance Android Application DevelopmentAdvance Android Application Development
Advance Android Application Development
 
C# Production Debugging Made Easy
 C# Production Debugging Made Easy C# Production Debugging Made Easy
C# Production Debugging Made Easy
 
Microkernel-based operating system development
Microkernel-based operating system developmentMicrokernel-based operating system development
Microkernel-based operating system development
 
OneAPI dpc++ Virtual Workshop 9th Dec-20
OneAPI dpc++ Virtual Workshop 9th Dec-20OneAPI dpc++ Virtual Workshop 9th Dec-20
OneAPI dpc++ Virtual Workshop 9th Dec-20
 

More from Edge AI and Vision Alliance

“Learning Compact DNN Models for Embedded Vision,” a Presentation from the Un...
“Learning Compact DNN Models for Embedded Vision,” a Presentation from the Un...“Learning Compact DNN Models for Embedded Vision,” a Presentation from the Un...
“Learning Compact DNN Models for Embedded Vision,” a Presentation from the Un...Edge AI and Vision Alliance
 
“Introduction to Computer Vision with CNNs,” a Presentation from Mohammad Hag...
“Introduction to Computer Vision with CNNs,” a Presentation from Mohammad Hag...“Introduction to Computer Vision with CNNs,” a Presentation from Mohammad Hag...
“Introduction to Computer Vision with CNNs,” a Presentation from Mohammad Hag...Edge AI and Vision Alliance
 
“Selecting Tools for Developing, Monitoring and Maintaining ML Models,” a Pre...
“Selecting Tools for Developing, Monitoring and Maintaining ML Models,” a Pre...“Selecting Tools for Developing, Monitoring and Maintaining ML Models,” a Pre...
“Selecting Tools for Developing, Monitoring and Maintaining ML Models,” a Pre...Edge AI and Vision Alliance
 
“Building Accelerated GStreamer Applications for Video and Audio AI,” a Prese...
“Building Accelerated GStreamer Applications for Video and Audio AI,” a Prese...“Building Accelerated GStreamer Applications for Video and Audio AI,” a Prese...
“Building Accelerated GStreamer Applications for Video and Audio AI,” a Prese...Edge AI and Vision Alliance
 
“Understanding, Selecting and Optimizing Object Detectors for Edge Applicatio...
“Understanding, Selecting and Optimizing Object Detectors for Edge Applicatio...“Understanding, Selecting and Optimizing Object Detectors for Edge Applicatio...
“Understanding, Selecting and Optimizing Object Detectors for Edge Applicatio...Edge AI and Vision Alliance
 
“Introduction to Modern LiDAR for Machine Perception,” a Presentation from th...
“Introduction to Modern LiDAR for Machine Perception,” a Presentation from th...“Introduction to Modern LiDAR for Machine Perception,” a Presentation from th...
“Introduction to Modern LiDAR for Machine Perception,” a Presentation from th...Edge AI and Vision Alliance
 
“Vision-language Representations for Robotics,” a Presentation from the Unive...
“Vision-language Representations for Robotics,” a Presentation from the Unive...“Vision-language Representations for Robotics,” a Presentation from the Unive...
“Vision-language Representations for Robotics,” a Presentation from the Unive...Edge AI and Vision Alliance
 
“ADAS and AV Sensors: What’s Winning and Why?,” a Presentation from TechInsights
“ADAS and AV Sensors: What’s Winning and Why?,” a Presentation from TechInsights“ADAS and AV Sensors: What’s Winning and Why?,” a Presentation from TechInsights
“ADAS and AV Sensors: What’s Winning and Why?,” a Presentation from TechInsightsEdge AI and Vision Alliance
 
“Computer Vision in Sports: Scalable Solutions for Downmarkets,” a Presentati...
“Computer Vision in Sports: Scalable Solutions for Downmarkets,” a Presentati...“Computer Vision in Sports: Scalable Solutions for Downmarkets,” a Presentati...
“Computer Vision in Sports: Scalable Solutions for Downmarkets,” a Presentati...Edge AI and Vision Alliance
 
“Detecting Data Drift in Image Classification Neural Networks,” a Presentatio...
“Detecting Data Drift in Image Classification Neural Networks,” a Presentatio...“Detecting Data Drift in Image Classification Neural Networks,” a Presentatio...
“Detecting Data Drift in Image Classification Neural Networks,” a Presentatio...Edge AI and Vision Alliance
 
“Deep Neural Network Training: Diagnosing Problems and Implementing Solutions...
“Deep Neural Network Training: Diagnosing Problems and Implementing Solutions...“Deep Neural Network Training: Diagnosing Problems and Implementing Solutions...
“Deep Neural Network Training: Diagnosing Problems and Implementing Solutions...Edge AI and Vision Alliance
 
“AI Start-ups: The Perils of Fishing for Whales (War Stories from the Entrepr...
“AI Start-ups: The Perils of Fishing for Whales (War Stories from the Entrepr...“AI Start-ups: The Perils of Fishing for Whales (War Stories from the Entrepr...
“AI Start-ups: The Perils of Fishing for Whales (War Stories from the Entrepr...Edge AI and Vision Alliance
 
“A Computer Vision System for Autonomous Satellite Maneuvering,” a Presentati...
“A Computer Vision System for Autonomous Satellite Maneuvering,” a Presentati...“A Computer Vision System for Autonomous Satellite Maneuvering,” a Presentati...
“A Computer Vision System for Autonomous Satellite Maneuvering,” a Presentati...Edge AI and Vision Alliance
 
“Bias in Computer Vision—It’s Bigger Than Facial Recognition!,” a Presentatio...
“Bias in Computer Vision—It’s Bigger Than Facial Recognition!,” a Presentatio...“Bias in Computer Vision—It’s Bigger Than Facial Recognition!,” a Presentatio...
“Bias in Computer Vision—It’s Bigger Than Facial Recognition!,” a Presentatio...Edge AI and Vision Alliance
 
“Sensor Fusion Techniques for Accurate Perception of Objects in the Environme...
“Sensor Fusion Techniques for Accurate Perception of Objects in the Environme...“Sensor Fusion Techniques for Accurate Perception of Objects in the Environme...
“Sensor Fusion Techniques for Accurate Perception of Objects in the Environme...Edge AI and Vision Alliance
 
“Updating the Edge ML Development Process,” a Presentation from Samsara
“Updating the Edge ML Development Process,” a Presentation from Samsara“Updating the Edge ML Development Process,” a Presentation from Samsara
“Updating the Edge ML Development Process,” a Presentation from SamsaraEdge AI and Vision Alliance
 
“Combating Bias in Production Computer Vision Systems,” a Presentation from R...
“Combating Bias in Production Computer Vision Systems,” a Presentation from R...“Combating Bias in Production Computer Vision Systems,” a Presentation from R...
“Combating Bias in Production Computer Vision Systems,” a Presentation from R...Edge AI and Vision Alliance
 
“Developing an Embedded Vision AI-powered Fitness System,” a Presentation fro...
“Developing an Embedded Vision AI-powered Fitness System,” a Presentation fro...“Developing an Embedded Vision AI-powered Fitness System,” a Presentation fro...
“Developing an Embedded Vision AI-powered Fitness System,” a Presentation fro...Edge AI and Vision Alliance
 
“Navigating the Evolving Venture Capital Landscape for Edge AI Start-ups,” a ...
“Navigating the Evolving Venture Capital Landscape for Edge AI Start-ups,” a ...“Navigating the Evolving Venture Capital Landscape for Edge AI Start-ups,” a ...
“Navigating the Evolving Venture Capital Landscape for Edge AI Start-ups,” a ...Edge AI and Vision Alliance
 
“Advanced Presence Sensing: What It Means for the Smart Home,” a Presentation...
“Advanced Presence Sensing: What It Means for the Smart Home,” a Presentation...“Advanced Presence Sensing: What It Means for the Smart Home,” a Presentation...
“Advanced Presence Sensing: What It Means for the Smart Home,” a Presentation...Edge AI and Vision Alliance
 

More from Edge AI and Vision Alliance (20)

“Learning Compact DNN Models for Embedded Vision,” a Presentation from the Un...
“Learning Compact DNN Models for Embedded Vision,” a Presentation from the Un...“Learning Compact DNN Models for Embedded Vision,” a Presentation from the Un...
“Learning Compact DNN Models for Embedded Vision,” a Presentation from the Un...
 
“Introduction to Computer Vision with CNNs,” a Presentation from Mohammad Hag...
“Introduction to Computer Vision with CNNs,” a Presentation from Mohammad Hag...“Introduction to Computer Vision with CNNs,” a Presentation from Mohammad Hag...
“Introduction to Computer Vision with CNNs,” a Presentation from Mohammad Hag...
 
“Selecting Tools for Developing, Monitoring and Maintaining ML Models,” a Pre...
“Selecting Tools for Developing, Monitoring and Maintaining ML Models,” a Pre...“Selecting Tools for Developing, Monitoring and Maintaining ML Models,” a Pre...
“Selecting Tools for Developing, Monitoring and Maintaining ML Models,” a Pre...
 
“Building Accelerated GStreamer Applications for Video and Audio AI,” a Prese...
“Building Accelerated GStreamer Applications for Video and Audio AI,” a Prese...“Building Accelerated GStreamer Applications for Video and Audio AI,” a Prese...
“Building Accelerated GStreamer Applications for Video and Audio AI,” a Prese...
 
“Understanding, Selecting and Optimizing Object Detectors for Edge Applicatio...
“Understanding, Selecting and Optimizing Object Detectors for Edge Applicatio...“Understanding, Selecting and Optimizing Object Detectors for Edge Applicatio...
“Understanding, Selecting and Optimizing Object Detectors for Edge Applicatio...
 
“Introduction to Modern LiDAR for Machine Perception,” a Presentation from th...
“Introduction to Modern LiDAR for Machine Perception,” a Presentation from th...“Introduction to Modern LiDAR for Machine Perception,” a Presentation from th...
“Introduction to Modern LiDAR for Machine Perception,” a Presentation from th...
 
“Vision-language Representations for Robotics,” a Presentation from the Unive...
“Vision-language Representations for Robotics,” a Presentation from the Unive...“Vision-language Representations for Robotics,” a Presentation from the Unive...
“Vision-language Representations for Robotics,” a Presentation from the Unive...
 
“ADAS and AV Sensors: What’s Winning and Why?,” a Presentation from TechInsights
“ADAS and AV Sensors: What’s Winning and Why?,” a Presentation from TechInsights“ADAS and AV Sensors: What’s Winning and Why?,” a Presentation from TechInsights
“ADAS and AV Sensors: What’s Winning and Why?,” a Presentation from TechInsights
 
“Computer Vision in Sports: Scalable Solutions for Downmarkets,” a Presentati...
“Computer Vision in Sports: Scalable Solutions for Downmarkets,” a Presentati...“Computer Vision in Sports: Scalable Solutions for Downmarkets,” a Presentati...
“Computer Vision in Sports: Scalable Solutions for Downmarkets,” a Presentati...
 
“Detecting Data Drift in Image Classification Neural Networks,” a Presentatio...
“Detecting Data Drift in Image Classification Neural Networks,” a Presentatio...“Detecting Data Drift in Image Classification Neural Networks,” a Presentatio...
“Detecting Data Drift in Image Classification Neural Networks,” a Presentatio...
 
“Deep Neural Network Training: Diagnosing Problems and Implementing Solutions...
“Deep Neural Network Training: Diagnosing Problems and Implementing Solutions...“Deep Neural Network Training: Diagnosing Problems and Implementing Solutions...
“Deep Neural Network Training: Diagnosing Problems and Implementing Solutions...
 
“AI Start-ups: The Perils of Fishing for Whales (War Stories from the Entrepr...
“AI Start-ups: The Perils of Fishing for Whales (War Stories from the Entrepr...“AI Start-ups: The Perils of Fishing for Whales (War Stories from the Entrepr...
“AI Start-ups: The Perils of Fishing for Whales (War Stories from the Entrepr...
 
“A Computer Vision System for Autonomous Satellite Maneuvering,” a Presentati...
“A Computer Vision System for Autonomous Satellite Maneuvering,” a Presentati...“A Computer Vision System for Autonomous Satellite Maneuvering,” a Presentati...
“A Computer Vision System for Autonomous Satellite Maneuvering,” a Presentati...
 
“Bias in Computer Vision—It’s Bigger Than Facial Recognition!,” a Presentatio...
“Bias in Computer Vision—It’s Bigger Than Facial Recognition!,” a Presentatio...“Bias in Computer Vision—It’s Bigger Than Facial Recognition!,” a Presentatio...
“Bias in Computer Vision—It’s Bigger Than Facial Recognition!,” a Presentatio...
 
“Sensor Fusion Techniques for Accurate Perception of Objects in the Environme...
“Sensor Fusion Techniques for Accurate Perception of Objects in the Environme...“Sensor Fusion Techniques for Accurate Perception of Objects in the Environme...
“Sensor Fusion Techniques for Accurate Perception of Objects in the Environme...
 
“Updating the Edge ML Development Process,” a Presentation from Samsara
“Updating the Edge ML Development Process,” a Presentation from Samsara“Updating the Edge ML Development Process,” a Presentation from Samsara
“Updating the Edge ML Development Process,” a Presentation from Samsara
 
“Combating Bias in Production Computer Vision Systems,” a Presentation from R...
“Combating Bias in Production Computer Vision Systems,” a Presentation from R...“Combating Bias in Production Computer Vision Systems,” a Presentation from R...
“Combating Bias in Production Computer Vision Systems,” a Presentation from R...
 
“Developing an Embedded Vision AI-powered Fitness System,” a Presentation fro...
“Developing an Embedded Vision AI-powered Fitness System,” a Presentation fro...“Developing an Embedded Vision AI-powered Fitness System,” a Presentation fro...
“Developing an Embedded Vision AI-powered Fitness System,” a Presentation fro...
 
“Navigating the Evolving Venture Capital Landscape for Edge AI Start-ups,” a ...
“Navigating the Evolving Venture Capital Landscape for Edge AI Start-ups,” a ...“Navigating the Evolving Venture Capital Landscape for Edge AI Start-ups,” a ...
“Navigating the Evolving Venture Capital Landscape for Edge AI Start-ups,” a ...
 
“Advanced Presence Sensing: What It Means for the Smart Home,” a Presentation...
“Advanced Presence Sensing: What It Means for the Smart Home,” a Presentation...“Advanced Presence Sensing: What It Means for the Smart Home,” a Presentation...
“Advanced Presence Sensing: What It Means for the Smart Home,” a Presentation...
 

Recently uploaded

Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)Samir Dash
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 

Recently uploaded (20)

Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

"Making OpenCV Code Run Fast," a Presentation from Intel

  • 1. Copyright © 2017 Intel Corporation 1 Vadim Pisarevsky, Software Engineering Manager, Intel Corp. May 2017 Making OpenCV Code Run Fast
  • 2. Copyright © 2017 Intel Corporation 2 OpenCV at glance What The most popular computer vision library: http://opencv.org License BSD Supported Languages C/C++, Java, Python Size >950 K lines of code SourceForge statistics 13.6 M downloads (does not include github traffic) Github statistics >7500 forks, >4000 patches merged during 6 years (~2.5 patches per working day before Intel, ~5 patches per working day at Intel) Accelerated with SSE, AVX, NEON, IPP, MKL, OpenCL, CUDA, parallel_for_, OpenVX, Halide (planned) The actual versions 2.4.13.2 (2016 Dec), 3.2 (2016 Dec) Upcoming releases 2.4.14 (2017), 3.3 (2017 Jun)
  • 3. Copyright © 2017 Intel Corporation 3 OpenCV, CV & Hardware Evolution 2000 => 2017 2000 2017 OpenCV OpenCV 1.0 alpha; C API, 1 module, Windows OpenCV 3.2; C++ API; 30+30 modules, Windows/Linux/Android/iOS/QNX, etc. CPU 32-bit single-core, ~1 GFlop 32/64-bit many-core, 300+ GFlops, ~100 GFlops in a cellphone! GPU as accelerator - OpenCL, CUDA; 0.5-1+ TFlops Other accelerators FPGA (manually coded) OpenCL-capable FPGA, various DSPs, etc. Vision algorithms Traditional vision, simple image processing, detection & tracking, contours; “empirical, low-profile computer vision” Sophisticated traditional vision, 3D vision, computational photography, deep learning, hybrid algorithms; “learning-based, extensive computer vision” Cameras, sensors Analog surveillance cameras (recording only), Webcams Computer vision in every cellphone, every street crossing, every mall, coming to every car; 3d sensors, lidars, etc. Computing model Desktop Edge, Cloud, Fog; Desktop for R&D only
  • 4. Copyright © 2017 Intel Corporation 4 OpenCV Acceleration Options CUDA modules OpenVX (immediate mode) OpenCV optimized for custom hardware Universal intrinsics NEON/SSE/AVX2… Carotene HAL OpenCV optimized for ARM CPU IPP, MKL OpenCV optimized for x86/x64 CPU OpenVX (graphs) OpenCV optimized for custom hardware OpenCV T-API OpenCL GPU-optimized OpenCV OpenCV HAL Halide scripts Any Halide-supported hardware User-programmable tools Collections of fixed functions Active development area
  • 5. Copyright © 2017 Intel Corporation 5 • OpenCV 3.x includes T-API by default: • Asynchronous: can run GPU & CPU code in parallel • 100s of open-source OpenCL kernels T-API: heterogeneous compute with OpenCV is easy! #include "opencv2/opencv.hpp" using namespace cv; int main(int argc, char** argv) { Mat img, gray; img = imread(argv[1], 1); imshow("original", img); cvtColor(img, gray, COLOR_BGR2GRAY); GaussianBlur(gray, gray, Size(7, 7), 1.5); Canny(gray, gray, 0, 50); imshow("edges", gray); waitKey(); return 0; } #include "opencv2/opencv.hpp" using namespace cv; int main(int argc, char** argv) { Mat img; UMat gray; img = imread(argv[1]); imshow("original", img); cvtColor(img, gray, COLOR_BGR2GRAY); GaussianBlur(gray, gray, Size(7, 7), 1.5); Canny(gray, gray, 0, 50); imshow("edges", gray); // automatic sync point waitKey(); return 0; }
  • 6. Copyright © 2017 Intel Corporation 6 T-API: under the hood Very little of “boilerplate code”! (just ~30 lines of code) void mykernel(cv::InputArray input, cv::OutputArray output, params …) { } Use OpenCL? Get clmem (use zero- copy if possible) Retrieve/compile OpenCL kernel & “enqueue” it successfully? yes yes Finish Retrieve cv::Mat Run C++ code
  • 7. Copyright © 2017 Intel Corporation 7 T-API execution model • Supports multiple devices • Asynchronous execution with no explicit synchronization required
  • 8. Copyright © 2017 Intel Corporation 8 T-API showcase: Pedestrian Detector Build pyramid RGB2Luv HOG feature maps Integrals of HOG maps Feature Pyramid Builder Capture Video Frame Optical flow- based Tracker Per-frame detector Sliding window + Cascade classifier Non-maxima suppression (filtering out duplicates) Do temporal filtering, follow pedestrians, detect new ones Performance profile of per-frame detector (CPU) Feature Pyramid Builder (65%) Classifier + Non-max (35%) • Feature Pyramid Builder is the ideal “kernel” to optimize: • Expensive • Regular, easy to parallelize & vectorize • Reusable (e.g., for cars)
  • 9. Copyright © 2017 Intel Corporation 9 • Duplicate CPU branch • Make OpenCL-compatible copy (cv::UMat) for each internal buffer (cv::Mat) • Use available OpenCL-optimized funcs (e.g. cv::resize, cv::integral) • Create OpenCL kernels for other parts (RGB2Luv, HOG): ~700 LoC • Debug-Profile-Optimize: repeat until happy Feature Pyramid Builder optimization with T-API Part CPU time, ms (1080p) OCL time, ms (1080p) CPU time, ms (720p) OCL time, ms (720p) Acceleration (1080p) Acceleration (720p) All 200 140 107 87 42% 23% Feature Pyramid Builder 130 70 60 40 85% 50% Test machine: Core i5 (Skylake), 2-core 2.5 GHz, Intel HD530 GPU
  • 10. Copyright © 2017 Intel Corporation 10 • Many acceleration options are available (CPU, GPU, DSPs, FPGA, etc.) • Coding kernels using native tools is huge investment and maintenance cost • Big time to market • Big commitment because of low portability • OpenCV cannot be optimized for each single accelerator • OpenCL is not perf-portable neither easy to use • Let’s generate OpenCL or LLVM code automatically from high-level algorithm description! • Let’s separate the platform-agnostic algorithm description and platform-specific “pragma’s” (vectorization, tiling …)! Halide: write once, schedule everywhere! Halide! (http://halide-lang.org) Function 1 Function 2 … CPU Scheduler: Tiling, Vectorization, Pipelining GPU Scheduler: Tiling, Vectorization, Pipelining CPU code (SSE, AVX…, NEON) GPU code (OpenCL, CUDA) Algorithm Description
  • 11. Copyright © 2017 Intel Corporation 11 • Same code for CPU & GPU • Halide includes very efficient loop handling engine • Almost any known DNN can be implemented entirely in Halide • The language is quite limited (insufficient to cover OpenVX 1.0) • In some cases the produced code is inefficient • The whole infrastructure is immature Plans • Halide backend in OpenCV DNN module (in progress) • Extend the language (if operator, etc.) • Improve performance of the generated code • Fix/improve the infrastructure (nicer frontend, better support for offline compilation) kernel OpenCV, ms (CPU) Halide, ms (CPU) Halide, ms (GPU) RGB=>Gray 0.44 0.54 (-20%) 0.58 (-25%) Canny 3.3 1.4+2 (-3%) 2.4+2 (-25%) DNN: AlexNet 29 (w. MKL) 24 (+20%) 47 (-40%) DNN: ENet (512x256) ~250 (w. MKL) 60 (+320%) 44 (+470%) HOG-based pedestrian detector (1080p) 200 75+70 (+38%) 140 – 700 ms Halide: first impressions & results
  • 12. Copyright © 2017 Intel Corporation 12 • OpenVX-based HAL in OpenCV ✓ [Done] Immediate-mode OpenVX calls to accelerate simple functions: • cv::boxFilter(const cv::Mat&, …) => vxuBox3x3(vx_image, …) etc. • tested with Khronos’ sample implementation and Intel IAP • [TBD] Graphs for DNN acceleration ✓ [Done] Mixing OpenVX + OpenCV at user app level • vx_image  cv::Mat, OpenVX C++ wrappers, sample code: • https://github.com/opencv/opencv/tree/master/samples/openvx OpenCV + OpenVX
  • 13. Copyright © 2017 Intel Corporation 13 OpenCV Acceleration Options Comparison + ⎼ HAL functions Get used automatically (zero effort); vendors-specific implementation is possible Little coverage (mostly image processing); usually CPU-only HAL intrinsics Super-flexible, widely applicable and widely available Low-level, CPU only T-API Can potentially deliver top speed OpenCL is not performance-portable; lot’s of expertise needed OpenVX Can be tailored for any hardware (CPU, GPU, DSP, FPGA) Inflexible, not easy to use, difficult to extend Halide Decent performance; relatively easy to use Not as flexible as OpenCL or C++ Performance Ease-of-use HAL functions HAL intrinsics Halide T-API (custom) T-API (built-in) OpenVX (graphs) OpenVX (graphs for DNN) Flexibility Coverage HAL functions HAL intrinsics Halide T-API (custom) T-API (built-in) OpenVX (graphs)
  • 14. Copyright © 2017 Intel Corporation 14 • Modern OpenCV provides several acceleration paths • Custom kernels are essential for user apps; existing OpenCV (and OpenVX) functionality is not enough • Universal intrinsics (http://docs.opencv.org/master/df/d91/group__core__hal__intrin.html) is best solution for CPU • T-API (OpenCL; http://opencv.org/platforms/opencl.html) is the way to go for GPU acceleration • Halide looks very promising and can become a viable alternative to plain C++ and OpenCL for “regular” algorithms; OpenCV 3.3 will include Halide-accelerated deep learning module Summary
  • 15. Copyright © 2017 Intel Corporation 15 • OpenCV: http://opencv.org • Intel CV SDK: https://software.intel.com/en-us/computer-vision-sdk - the home of Intel-optimized OpenCV & OpenVX • Halide: http://halide-lang.org • Insights on the OpenCV 3.x feature roadmap, EVS2016 talk by Gary Bradski: https://www.embedded-vision.com/platinum- members/embedded-vision-alliance/embedded-vision- training/videos/pages/may-2016-embedded-vision-summit-opencv Resources