SlideShare a Scribd company logo
1 of 45
Download to read offline
VideoMR:
A Map and Reduce Framework for
Real-time Video Processing
Benjamin-Heinz Meier, Matthias Trapp, Jürgen Döllner
Hasso Plattner Institute, University of Potsdam, Germany
1
Motivation
For our research we were searching
for a real-time video processing
framework supporting us to develop
GPU-based filter operation.
2
3
Video
Processing
3
Abstraction
& Usability
Video
Processing
3
Abstraction
& Usability
GPU
Program-
ming
Video
Processing
3
GPU
Program-
ming
Abstraction
& Usability
Video
Processing
GStreamer,
Videotoolkit,
Premiere,
...
Plug-
Ins
Map & Reduce
MARS, ...
4
VideoMR
5
GPU
Program-
ming
Abstraction
& Usability
Video
Processing
VideoMR
bounded
memory concept,
new definition of operators
Map & Reduce
transparent
memory management
using streams
6
GPU
Program-
ming
Abstraction
& Usability
Video
Processing
Agenda
Memory management using LMAX disruptors as streams
The concept of Map & Reduce
A redefinition for video processing
A small example
Performance Evaluation
Limitations & Improvements
Conclusion
7
Memory Management
A video is a sequence of frames
A stream is a subsequence of the video with a fixed size
Implemented using the idea of a disruptor [Tho’11] :
using LMAX disruptors as streams
time
current frame
pointer
0
-1
-2
-3
…
8
– [Dean'04]
“Programs written in this functional style are automatically
parallelized and executed on a large cluster of
commodity machines.”
9
Map & Reduce
Map & Reduce
concept
10
Map Operation
map(key1,value1) → list(key2,value2)
Map & Reduce
concept
10
Map Operation
map(key1,value1) → list(key2,value2)
Map & Reduce
concept
for each word:
if word is a noun:
emit („noun“,1)
else if word is a verb:
emit („verb“,1)
10
Reduce Operation
reduce(key2,list(value2)) → list(value2)
Map Operation
map(key1,value1) → list(key2,value2)
Map & Reduce
concept
for each word:
if word is a noun:
emit („noun“,1)
else if word is a verb:
emit („verb“,1)
10
Reduce Operation
reduce(key2,list(value2)) → list(value2)
Map Operation
map(key1,value1) → list(key2,value2)
Map & Reduce
concept
for each word:
if word is a noun:
emit („noun“,1)
else if word is a verb:
emit („verb“,1)
result = 0
for each value2:
result += 1
emit („number of“+key2
+result)
10
Map & Reduce
redefinition for video processing
11
Map & Reduce
redefinition for video processing
11
Map
map(streamin,list(streamside)) → streamout
streamin
Map & Reduce
redefinition for video processing
11
Map
map(streamin,list(streamside)) → streamout
streamin
Map & Reduce
redefinition for video processing
11
Map
map(streamin,list(streamside)) → streamout
streamin
Reduce
reduce(streamin,list(streamside)) → streamout
streamin
Map & Reduce
redefinition for video processing
11
Map
map(streamin,list(streamside)) → streamout
streamin
Reduce
reduce(streamin,list(streamside)) → streamout
streamin
Example
12
Example
Program
12
Example
Program
12
// init program
auto prog = std::make_shared
<vmr::GlfwProgram >();
auto source = std::make_shared
<vmr:: LibavLoader>("./example.mov");
source->init(3);
Example
Program
12
// init program
auto prog = std::make_shared
<vmr::GlfwProgram >();
auto source = std::make_shared
<vmr:: LibavLoader>("./example.mov");
source->init(3);
// setup program and add the operation to it
*prog << moveMap;
Example
Program
12
// init program
auto prog = std::make_shared
<vmr::GlfwProgram >();
auto source = std::make_shared
<vmr:: LibavLoader>("./example.mov");
source->init(3);
// move detection

auto move = std::make_shared<vmr::Display>(); 

auto moveMap = std::make_shared<vmr::Map>
(source,move,“./move.map“);
// setup program and add the operation to it
*prog << moveMap;
Example
Program
12
// init program
auto prog = std::make_shared
<vmr::GlfwProgram >();
auto source = std::make_shared
<vmr:: LibavLoader>("./example.mov");
source->init(3);
// move detection

auto move = std::make_shared<vmr::Display>(); 

auto moveMap = std::make_shared<vmr::Map>
(source,move,“./move.map“);
// setup program and add the operation to it
*prog << moveMap;
// run program
prog->run();
Example
Program Operation
12
// init program
auto prog = std::make_shared
<vmr::GlfwProgram >();
auto source = std::make_shared
<vmr:: LibavLoader>("./example.mov");
source->init(3);
// move detection

auto move = std::make_shared<vmr::Display>(); 

auto moveMap = std::make_shared<vmr::Map>
(source,move,“./move.map“);
// setup program and add the operation to it
*prog << moveMap;
// run program
prog->run();
Example
Program Operation
12
// init program
auto prog = std::make_shared
<vmr::GlfwProgram >();
auto source = std::make_shared
<vmr:: LibavLoader>("./example.mov");
source->init(3);
// move detection

auto move = std::make_shared<vmr::Display>(); 

auto moveMap = std::make_shared<vmr::Map>
(source,move,“./move.map“);
// setup program and add the operation to it
*prog << moveMap;
// run program
prog->run();
// get position of current pixel
ivec2 pos = vmr_getPosition();
Example
Program Operation
12
// init program
auto prog = std::make_shared
<vmr::GlfwProgram >();
auto source = std::make_shared
<vmr:: LibavLoader>("./example.mov");
source->init(3);
// move detection

auto move = std::make_shared<vmr::Display>(); 

auto moveMap = std::make_shared<vmr::Map>
(source,move,“./move.map“);
// setup program and add the operation to it
*prog << moveMap;
// run program
prog->run();
// get position of current pixel
ivec2 pos = vmr_getPosition();
// get data from last three frames
vec3 c;
vec3 c1 = vmr_getStreamDataIn(pos, 0);
vec3 c2 = vmr_getStreamDataIn(pos, -1);
vec3 c3 = vmr_getStreamDataIn(pos, -2);
Example
Program Operation
12
// init program
auto prog = std::make_shared
<vmr::GlfwProgram >();
auto source = std::make_shared
<vmr:: LibavLoader>("./example.mov");
source->init(3);
// move detection

auto move = std::make_shared<vmr::Display>(); 

auto moveMap = std::make_shared<vmr::Map>
(source,move,“./move.map“);
// setup program and add the operation to it
*prog << moveMap;
// run program
prog->run();
// get position of current pixel
ivec2 pos = vmr_getPosition();
// get data from last three frames
vec3 c;
vec3 c1 = vmr_getStreamDataIn(pos, 0);
vec3 c2 = vmr_getStreamDataIn(pos, -1);
vec3 c3 = vmr_getStreamDataIn(pos, -2);
// compute difference
float diff1 = abs(c1.r-c2.r)
+ abs(c1.g-c2.g) + abs(c1.b-c2.b);
float diff2 = abs(c1.r-c3.r)
+ abs(c1.g-c3.g) + abs(c1.b-c3.b);
Example
Program Operation
12
// init program
auto prog = std::make_shared
<vmr::GlfwProgram >();
auto source = std::make_shared
<vmr:: LibavLoader>("./example.mov");
source->init(3);
// move detection

auto move = std::make_shared<vmr::Display>(); 

auto moveMap = std::make_shared<vmr::Map>
(source,move,“./move.map“);
// setup program and add the operation to it
*prog << moveMap;
// run program
prog->run();
// get position of current pixel
ivec2 pos = vmr_getPosition();
// get data from last three frames
vec3 c;
vec3 c1 = vmr_getStreamDataIn(pos, 0);
vec3 c2 = vmr_getStreamDataIn(pos, -1);
vec3 c3 = vmr_getStreamDataIn(pos, -2);
// compute difference
float diff1 = abs(c1.r-c2.r)
+ abs(c1.g-c2.g) + abs(c1.b-c2.b);
float diff2 = abs(c1.r-c3.r)
+ abs(c1.g-c3.g) + abs(c1.b-c3.b);
// compare with threshold
if (diff1>100 && diff2>100){
c = vec3(255, 255, 255);
} else {
c = vec3(0, 0, 0);
}
Example
Program Operation
12
// init program
auto prog = std::make_shared
<vmr::GlfwProgram >();
auto source = std::make_shared
<vmr:: LibavLoader>("./example.mov");
source->init(3);
// move detection

auto move = std::make_shared<vmr::Display>(); 

auto moveMap = std::make_shared<vmr::Map>
(source,move,“./move.map“);
// setup program and add the operation to it
*prog << moveMap;
// run program
prog->run();
// get position of current pixel
ivec2 pos = vmr_getPosition();
// get data from last three frames
vec3 c;
vec3 c1 = vmr_getStreamDataIn(pos, 0);
vec3 c2 = vmr_getStreamDataIn(pos, -1);
vec3 c3 = vmr_getStreamDataIn(pos, -2);
// compute difference
float diff1 = abs(c1.r-c2.r)
+ abs(c1.g-c2.g) + abs(c1.b-c2.b);
float diff2 = abs(c1.r-c3.r)
+ abs(c1.g-c3.g) + abs(c1.b-c3.b);
// compare with threshold
if (diff1>100 && diff2>100){
c = vec3(255, 255, 255);
} else {
c = vec3(0, 0, 0);
}
// write result to current position
vmr_emitToStreamOut(pos,c);
Performance Evaluation
0 ms
10 ms
20 ms
30 ms
40 ms
SD HD Full HD 4K
map reduce complex
13
0 RLOC
125 RLOC
250 RLOC
375 RLOC
500 RLOC
OpenGL VideoMR
program operation
Improvements & Future Work
14
Improvements & Future Work
14
A general concept for n-dimensional buffers instead of frames
Improvements & Future Work
14
A general concept for n-dimensional buffers instead of frames
Extension with template classes to decide which main data type to use
Improvements & Future Work
14
A general concept for n-dimensional buffers instead of frames
Extension with template classes to decide which main data type to use
Introduction of an explicit CPU operation with transparent memory
management
Improvements & Future Work
14
A general concept for n-dimensional buffers instead of frames
Extension with template classes to decide which main data type to use
Introduction of an explicit CPU operation with transparent memory
management
Considering of OpenCL and CUDA as backend
Improvements & Future Work
14
A general concept for n-dimensional buffers instead of frames
Extension with template classes to decide which main data type to use
Introduction of an explicit CPU operation with transparent memory
management
Considering of OpenCL and CUDA as backend
Comparison with other map and reduce frameworks will be part of future
and therefore, a suitable benchmark has to be developed
Conclusion
15
GPU
Program-
ming
Abstraction
& Usability
Video
Processing
VideoMR fulfills the requirements of
real-time video processing and
supports with the map and
reduce concept the development
of GPU-based filter operations.
Question & Comments
16
Contact:
Benjamin-Heinz Meier/ benjamin-heinz.meier@student.hpi.de
Matthias Trapp / matthias.trapp@hpi.de
Jürgen Döllner / juergen.doellner@hpi.de
Publications: www.4dndvis.de/publikationen.html
This work was funded by the Federal Ministry of Education
and Research (BMBF), Germany within the InnoProfile
Transfer research group "4DnD-Vis".
VideoMR:
A Map and Reduce Framework for
Real-time Video Processing
Benjamin-Heinz Meier, Matthias Trapp, Jürgen Döllner
Hasso Plattner Institute, University of Potsdam, Germany
17
18
PAPER
[Dean'04]
Dean, J. & Ghemawat, S. MapReduce: Simplified Data
Processing on Large Clusters OSDI'04: Sixth Symposium on
Operating System Design and Implementation, 2004
[Tho'11]
Thompson, M.; Farley, D.; Barker, M.; Gee,
P. & Stewart, A. DISRUPTOR: High performance
alternative to bounded queues for exchanging data

More Related Content

Similar to VideoMR - A Map and Reduce Framework for Real-time Video Processing

performance optimization: UI
performance optimization: UIperformance optimization: UI
performance optimization: UI晓东 杜
 
426 lecture 4: AR Developer Tools
426 lecture 4: AR Developer Tools426 lecture 4: AR Developer Tools
426 lecture 4: AR Developer ToolsMark Billinghurst
 
Java Performance and Profiling
Java Performance and ProfilingJava Performance and Profiling
Java Performance and ProfilingWSO2
 
Advanced kapacitor
Advanced kapacitorAdvanced kapacitor
Advanced kapacitorInfluxData
 
Open Cv 2005 Q4 Tutorial
Open Cv 2005 Q4 TutorialOpen Cv 2005 Q4 Tutorial
Open Cv 2005 Q4 Tutorialantiw
 
20110220 computer vision_eruhimov_lecture02
20110220 computer vision_eruhimov_lecture0220110220 computer vision_eruhimov_lecture02
20110220 computer vision_eruhimov_lecture02Computer Science Club
 
Point cloud mesh-investigation_report-lihang
Point cloud mesh-investigation_report-lihangPoint cloud mesh-investigation_report-lihang
Point cloud mesh-investigation_report-lihangLihang Li
 
Native Java with GraalVM
Native Java with GraalVMNative Java with GraalVM
Native Java with GraalVMSylvain Wallez
 
Mobility insights at Swisscom - Understanding collective mobility in Switzerland
Mobility insights at Swisscom - Understanding collective mobility in SwitzerlandMobility insights at Swisscom - Understanding collective mobility in Switzerland
Mobility insights at Swisscom - Understanding collective mobility in SwitzerlandFrançois Garillot
 
Spark Summit EU talk by Francois Garillot and Mohamed Kafsi
Spark Summit EU talk by Francois Garillot and Mohamed KafsiSpark Summit EU talk by Francois Garillot and Mohamed Kafsi
Spark Summit EU talk by Francois Garillot and Mohamed KafsiSpark Summit
 
Sparkling Water Meetup
Sparkling Water MeetupSparkling Water Meetup
Sparkling Water MeetupSri Ambati
 
Monitoring_with_Prometheus_Grafana_Tutorial
Monitoring_with_Prometheus_Grafana_TutorialMonitoring_with_Prometheus_Grafana_Tutorial
Monitoring_with_Prometheus_Grafana_TutorialTim Vaillancourt
 
5 baker oxide (1)
5 baker oxide (1)5 baker oxide (1)
5 baker oxide (1)mistercteam
 
Adopting GraalVM - Scale by the Bay 2018
Adopting GraalVM - Scale by the Bay 2018Adopting GraalVM - Scale by the Bay 2018
Adopting GraalVM - Scale by the Bay 2018Petr Zapletal
 
Forge - DevCon 2016: Visual Reporting with Connected Design Data
Forge - DevCon 2016: Visual Reporting with Connected Design DataForge - DevCon 2016: Visual Reporting with Connected Design Data
Forge - DevCon 2016: Visual Reporting with Connected Design DataAutodesk
 
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...Vincenzo Ferme
 
Automatic and Interpretable Machine Learning with H2O and LIME
Automatic and Interpretable Machine Learning with H2O and LIMEAutomatic and Interpretable Machine Learning with H2O and LIME
Automatic and Interpretable Machine Learning with H2O and LIMEJo-fai Chow
 
Integrating Angular js & three.js
Integrating Angular js & three.jsIntegrating Angular js & three.js
Integrating Angular js & three.jsJosh Staples
 
Kubernetes walkthrough
Kubernetes walkthroughKubernetes walkthrough
Kubernetes walkthroughSangwon Lee
 
VMworld 2013: vSphere Data Protection (VDP) Technical Deep Dive and Troublesh...
VMworld 2013: vSphere Data Protection (VDP) Technical Deep Dive and Troublesh...VMworld 2013: vSphere Data Protection (VDP) Technical Deep Dive and Troublesh...
VMworld 2013: vSphere Data Protection (VDP) Technical Deep Dive and Troublesh...VMworld
 

Similar to VideoMR - A Map and Reduce Framework for Real-time Video Processing (20)

performance optimization: UI
performance optimization: UIperformance optimization: UI
performance optimization: UI
 
426 lecture 4: AR Developer Tools
426 lecture 4: AR Developer Tools426 lecture 4: AR Developer Tools
426 lecture 4: AR Developer Tools
 
Java Performance and Profiling
Java Performance and ProfilingJava Performance and Profiling
Java Performance and Profiling
 
Advanced kapacitor
Advanced kapacitorAdvanced kapacitor
Advanced kapacitor
 
Open Cv 2005 Q4 Tutorial
Open Cv 2005 Q4 TutorialOpen Cv 2005 Q4 Tutorial
Open Cv 2005 Q4 Tutorial
 
20110220 computer vision_eruhimov_lecture02
20110220 computer vision_eruhimov_lecture0220110220 computer vision_eruhimov_lecture02
20110220 computer vision_eruhimov_lecture02
 
Point cloud mesh-investigation_report-lihang
Point cloud mesh-investigation_report-lihangPoint cloud mesh-investigation_report-lihang
Point cloud mesh-investigation_report-lihang
 
Native Java with GraalVM
Native Java with GraalVMNative Java with GraalVM
Native Java with GraalVM
 
Mobility insights at Swisscom - Understanding collective mobility in Switzerland
Mobility insights at Swisscom - Understanding collective mobility in SwitzerlandMobility insights at Swisscom - Understanding collective mobility in Switzerland
Mobility insights at Swisscom - Understanding collective mobility in Switzerland
 
Spark Summit EU talk by Francois Garillot and Mohamed Kafsi
Spark Summit EU talk by Francois Garillot and Mohamed KafsiSpark Summit EU talk by Francois Garillot and Mohamed Kafsi
Spark Summit EU talk by Francois Garillot and Mohamed Kafsi
 
Sparkling Water Meetup
Sparkling Water MeetupSparkling Water Meetup
Sparkling Water Meetup
 
Monitoring_with_Prometheus_Grafana_Tutorial
Monitoring_with_Prometheus_Grafana_TutorialMonitoring_with_Prometheus_Grafana_Tutorial
Monitoring_with_Prometheus_Grafana_Tutorial
 
5 baker oxide (1)
5 baker oxide (1)5 baker oxide (1)
5 baker oxide (1)
 
Adopting GraalVM - Scale by the Bay 2018
Adopting GraalVM - Scale by the Bay 2018Adopting GraalVM - Scale by the Bay 2018
Adopting GraalVM - Scale by the Bay 2018
 
Forge - DevCon 2016: Visual Reporting with Connected Design Data
Forge - DevCon 2016: Visual Reporting with Connected Design DataForge - DevCon 2016: Visual Reporting with Connected Design Data
Forge - DevCon 2016: Visual Reporting with Connected Design Data
 
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
BenchFlow: A Platform for End-to-end Automation of Performance Testing and An...
 
Automatic and Interpretable Machine Learning with H2O and LIME
Automatic and Interpretable Machine Learning with H2O and LIMEAutomatic and Interpretable Machine Learning with H2O and LIME
Automatic and Interpretable Machine Learning with H2O and LIME
 
Integrating Angular js & three.js
Integrating Angular js & three.jsIntegrating Angular js & three.js
Integrating Angular js & three.js
 
Kubernetes walkthrough
Kubernetes walkthroughKubernetes walkthrough
Kubernetes walkthrough
 
VMworld 2013: vSphere Data Protection (VDP) Technical Deep Dive and Troublesh...
VMworld 2013: vSphere Data Protection (VDP) Technical Deep Dive and Troublesh...VMworld 2013: vSphere Data Protection (VDP) Technical Deep Dive and Troublesh...
VMworld 2013: vSphere Data Protection (VDP) Technical Deep Dive and Troublesh...
 

More from Matthias Trapp

Interactive Control over Temporal Consistency while Stylizing Video Streams
Interactive Control over Temporal Consistency while Stylizing Video StreamsInteractive Control over Temporal Consistency while Stylizing Video Streams
Interactive Control over Temporal Consistency while Stylizing Video StreamsMatthias Trapp
 
A Framework for Art-directed Augmentation of Human Motion in Videos on Mobile...
A Framework for Art-directed Augmentation of Human Motion in Videos on Mobile...A Framework for Art-directed Augmentation of Human Motion in Videos on Mobile...
A Framework for Art-directed Augmentation of Human Motion in Videos on Mobile...Matthias Trapp
 
A Framework for Interactive 3D Photo Stylization Techniques on Mobile Devices
A Framework for Interactive 3D Photo Stylization Techniques on Mobile DevicesA Framework for Interactive 3D Photo Stylization Techniques on Mobile Devices
A Framework for Interactive 3D Photo Stylization Techniques on Mobile DevicesMatthias Trapp
 
ALIVE-Adaptive Chromaticity for Interactive Low-light Image and Video Enhance...
ALIVE-Adaptive Chromaticity for Interactive Low-light Image and Video Enhance...ALIVE-Adaptive Chromaticity for Interactive Low-light Image and Video Enhance...
ALIVE-Adaptive Chromaticity for Interactive Low-light Image and Video Enhance...Matthias Trapp
 
A Service-based Preset Recommendation System for Image Stylization Applications
A Service-based Preset Recommendation System for Image Stylization ApplicationsA Service-based Preset Recommendation System for Image Stylization Applications
A Service-based Preset Recommendation System for Image Stylization ApplicationsMatthias Trapp
 
Design Space of Geometry-based Image Abstraction Techniques with Vectorizatio...
Design Space of Geometry-based Image Abstraction Techniques with Vectorizatio...Design Space of Geometry-based Image Abstraction Techniques with Vectorizatio...
Design Space of Geometry-based Image Abstraction Techniques with Vectorizatio...Matthias Trapp
 
A Benchmark for the Use of Topic Models for Text Visualization Tasks - Online...
A Benchmark for the Use of Topic Models for Text Visualization Tasks - Online...A Benchmark for the Use of Topic Models for Text Visualization Tasks - Online...
A Benchmark for the Use of Topic Models for Text Visualization Tasks - Online...Matthias Trapp
 
Efficient GitHub Crawling using the GraphQL API
Efficient GitHub Crawling using the GraphQL APIEfficient GitHub Crawling using the GraphQL API
Efficient GitHub Crawling using the GraphQL APIMatthias Trapp
 
CodeCV - Mining Expertise of GitHub Users from Coding Activities - Online.pdf
CodeCV - Mining Expertise of GitHub Users from Coding Activities - Online.pdfCodeCV - Mining Expertise of GitHub Users from Coding Activities - Online.pdf
CodeCV - Mining Expertise of GitHub Users from Coding Activities - Online.pdfMatthias Trapp
 
Non-Photorealistic Rendering of 3D Point Clouds for Cartographic Visualization
Non-Photorealistic Rendering of 3D Point Clouds for Cartographic VisualizationNon-Photorealistic Rendering of 3D Point Clouds for Cartographic Visualization
Non-Photorealistic Rendering of 3D Point Clouds for Cartographic VisualizationMatthias Trapp
 
TWIN4ROAD - Erfassung Analyse und Auswertung mobiler Multi Sensorik im Strass...
TWIN4ROAD - Erfassung Analyse und Auswertung mobiler Multi Sensorik im Strass...TWIN4ROAD - Erfassung Analyse und Auswertung mobiler Multi Sensorik im Strass...
TWIN4ROAD - Erfassung Analyse und Auswertung mobiler Multi Sensorik im Strass...Matthias Trapp
 
Interactive Close-Up Rendering for Detail+Overview Visualization of 3D Digita...
Interactive Close-Up Rendering for Detail+Overview Visualization of 3D Digita...Interactive Close-Up Rendering for Detail+Overview Visualization of 3D Digita...
Interactive Close-Up Rendering for Detail+Overview Visualization of 3D Digita...Matthias Trapp
 
Web-based and Mobile Provisioning of Virtual 3D Reconstructions
Web-based and Mobile Provisioning of Virtual 3D ReconstructionsWeb-based and Mobile Provisioning of Virtual 3D Reconstructions
Web-based and Mobile Provisioning of Virtual 3D ReconstructionsMatthias Trapp
 
Visualization of Knowledge Distribution across Development Teams using 2.5D S...
Visualization of Knowledge Distribution across Development Teams using 2.5D S...Visualization of Knowledge Distribution across Development Teams using 2.5D S...
Visualization of Knowledge Distribution across Development Teams using 2.5D S...Matthias Trapp
 
Real-time Screen-space Geometry Draping for 3D Digital Terrain Models
Real-time Screen-space Geometry Draping for 3D Digital Terrain ModelsReal-time Screen-space Geometry Draping for 3D Digital Terrain Models
Real-time Screen-space Geometry Draping for 3D Digital Terrain ModelsMatthias Trapp
 
FERMIUM - A Framework for Real-time Procedural Point Cloud Animation & Morphing
FERMIUM - A Framework for Real-time Procedural Point Cloud Animation & MorphingFERMIUM - A Framework for Real-time Procedural Point Cloud Animation & Morphing
FERMIUM - A Framework for Real-time Procedural Point Cloud Animation & MorphingMatthias Trapp
 
Interactive Editing of Signed Distance Fields
Interactive Editing of Signed Distance FieldsInteractive Editing of Signed Distance Fields
Interactive Editing of Signed Distance FieldsMatthias Trapp
 
Integration of Image Processing Techniques into the Unity Game Engine
Integration of Image Processing Techniques into the Unity Game EngineIntegration of Image Processing Techniques into the Unity Game Engine
Integration of Image Processing Techniques into the Unity Game EngineMatthias Trapp
 
Interactive GPU-based Image Deformation for Mobile Devices
Interactive GPU-based Image Deformation for Mobile DevicesInteractive GPU-based Image Deformation for Mobile Devices
Interactive GPU-based Image Deformation for Mobile DevicesMatthias Trapp
 
Interactive Photo Editing on Smartphones via Intrinsic Decomposition
Interactive Photo Editing on Smartphones via Intrinsic DecompositionInteractive Photo Editing on Smartphones via Intrinsic Decomposition
Interactive Photo Editing on Smartphones via Intrinsic DecompositionMatthias Trapp
 

More from Matthias Trapp (20)

Interactive Control over Temporal Consistency while Stylizing Video Streams
Interactive Control over Temporal Consistency while Stylizing Video StreamsInteractive Control over Temporal Consistency while Stylizing Video Streams
Interactive Control over Temporal Consistency while Stylizing Video Streams
 
A Framework for Art-directed Augmentation of Human Motion in Videos on Mobile...
A Framework for Art-directed Augmentation of Human Motion in Videos on Mobile...A Framework for Art-directed Augmentation of Human Motion in Videos on Mobile...
A Framework for Art-directed Augmentation of Human Motion in Videos on Mobile...
 
A Framework for Interactive 3D Photo Stylization Techniques on Mobile Devices
A Framework for Interactive 3D Photo Stylization Techniques on Mobile DevicesA Framework for Interactive 3D Photo Stylization Techniques on Mobile Devices
A Framework for Interactive 3D Photo Stylization Techniques on Mobile Devices
 
ALIVE-Adaptive Chromaticity for Interactive Low-light Image and Video Enhance...
ALIVE-Adaptive Chromaticity for Interactive Low-light Image and Video Enhance...ALIVE-Adaptive Chromaticity for Interactive Low-light Image and Video Enhance...
ALIVE-Adaptive Chromaticity for Interactive Low-light Image and Video Enhance...
 
A Service-based Preset Recommendation System for Image Stylization Applications
A Service-based Preset Recommendation System for Image Stylization ApplicationsA Service-based Preset Recommendation System for Image Stylization Applications
A Service-based Preset Recommendation System for Image Stylization Applications
 
Design Space of Geometry-based Image Abstraction Techniques with Vectorizatio...
Design Space of Geometry-based Image Abstraction Techniques with Vectorizatio...Design Space of Geometry-based Image Abstraction Techniques with Vectorizatio...
Design Space of Geometry-based Image Abstraction Techniques with Vectorizatio...
 
A Benchmark for the Use of Topic Models for Text Visualization Tasks - Online...
A Benchmark for the Use of Topic Models for Text Visualization Tasks - Online...A Benchmark for the Use of Topic Models for Text Visualization Tasks - Online...
A Benchmark for the Use of Topic Models for Text Visualization Tasks - Online...
 
Efficient GitHub Crawling using the GraphQL API
Efficient GitHub Crawling using the GraphQL APIEfficient GitHub Crawling using the GraphQL API
Efficient GitHub Crawling using the GraphQL API
 
CodeCV - Mining Expertise of GitHub Users from Coding Activities - Online.pdf
CodeCV - Mining Expertise of GitHub Users from Coding Activities - Online.pdfCodeCV - Mining Expertise of GitHub Users from Coding Activities - Online.pdf
CodeCV - Mining Expertise of GitHub Users from Coding Activities - Online.pdf
 
Non-Photorealistic Rendering of 3D Point Clouds for Cartographic Visualization
Non-Photorealistic Rendering of 3D Point Clouds for Cartographic VisualizationNon-Photorealistic Rendering of 3D Point Clouds for Cartographic Visualization
Non-Photorealistic Rendering of 3D Point Clouds for Cartographic Visualization
 
TWIN4ROAD - Erfassung Analyse und Auswertung mobiler Multi Sensorik im Strass...
TWIN4ROAD - Erfassung Analyse und Auswertung mobiler Multi Sensorik im Strass...TWIN4ROAD - Erfassung Analyse und Auswertung mobiler Multi Sensorik im Strass...
TWIN4ROAD - Erfassung Analyse und Auswertung mobiler Multi Sensorik im Strass...
 
Interactive Close-Up Rendering for Detail+Overview Visualization of 3D Digita...
Interactive Close-Up Rendering for Detail+Overview Visualization of 3D Digita...Interactive Close-Up Rendering for Detail+Overview Visualization of 3D Digita...
Interactive Close-Up Rendering for Detail+Overview Visualization of 3D Digita...
 
Web-based and Mobile Provisioning of Virtual 3D Reconstructions
Web-based and Mobile Provisioning of Virtual 3D ReconstructionsWeb-based and Mobile Provisioning of Virtual 3D Reconstructions
Web-based and Mobile Provisioning of Virtual 3D Reconstructions
 
Visualization of Knowledge Distribution across Development Teams using 2.5D S...
Visualization of Knowledge Distribution across Development Teams using 2.5D S...Visualization of Knowledge Distribution across Development Teams using 2.5D S...
Visualization of Knowledge Distribution across Development Teams using 2.5D S...
 
Real-time Screen-space Geometry Draping for 3D Digital Terrain Models
Real-time Screen-space Geometry Draping for 3D Digital Terrain ModelsReal-time Screen-space Geometry Draping for 3D Digital Terrain Models
Real-time Screen-space Geometry Draping for 3D Digital Terrain Models
 
FERMIUM - A Framework for Real-time Procedural Point Cloud Animation & Morphing
FERMIUM - A Framework for Real-time Procedural Point Cloud Animation & MorphingFERMIUM - A Framework for Real-time Procedural Point Cloud Animation & Morphing
FERMIUM - A Framework for Real-time Procedural Point Cloud Animation & Morphing
 
Interactive Editing of Signed Distance Fields
Interactive Editing of Signed Distance FieldsInteractive Editing of Signed Distance Fields
Interactive Editing of Signed Distance Fields
 
Integration of Image Processing Techniques into the Unity Game Engine
Integration of Image Processing Techniques into the Unity Game EngineIntegration of Image Processing Techniques into the Unity Game Engine
Integration of Image Processing Techniques into the Unity Game Engine
 
Interactive GPU-based Image Deformation for Mobile Devices
Interactive GPU-based Image Deformation for Mobile DevicesInteractive GPU-based Image Deformation for Mobile Devices
Interactive GPU-based Image Deformation for Mobile Devices
 
Interactive Photo Editing on Smartphones via Intrinsic Decomposition
Interactive Photo Editing on Smartphones via Intrinsic DecompositionInteractive Photo Editing on Smartphones via Intrinsic Decomposition
Interactive Photo Editing on Smartphones via Intrinsic Decomposition
 

Recently uploaded

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Recently uploaded (20)

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

VideoMR - A Map and Reduce Framework for Real-time Video Processing

  • 1. VideoMR: A Map and Reduce Framework for Real-time Video Processing Benjamin-Heinz Meier, Matthias Trapp, Jürgen Döllner Hasso Plattner Institute, University of Potsdam, Germany 1
  • 2. Motivation For our research we were searching for a real-time video processing framework supporting us to develop GPU-based filter operation. 2
  • 3. 3
  • 9. VideoMR bounded memory concept, new definition of operators Map & Reduce transparent memory management using streams 6 GPU Program- ming Abstraction & Usability Video Processing
  • 10. Agenda Memory management using LMAX disruptors as streams The concept of Map & Reduce A redefinition for video processing A small example Performance Evaluation Limitations & Improvements Conclusion 7
  • 11. Memory Management A video is a sequence of frames A stream is a subsequence of the video with a fixed size Implemented using the idea of a disruptor [Tho’11] : using LMAX disruptors as streams time current frame pointer 0 -1 -2 -3 … 8
  • 12. – [Dean'04] “Programs written in this functional style are automatically parallelized and executed on a large cluster of commodity machines.” 9 Map & Reduce
  • 14. Map Operation map(key1,value1) → list(key2,value2) Map & Reduce concept 10
  • 15. Map Operation map(key1,value1) → list(key2,value2) Map & Reduce concept for each word: if word is a noun: emit („noun“,1) else if word is a verb: emit („verb“,1) 10
  • 16. Reduce Operation reduce(key2,list(value2)) → list(value2) Map Operation map(key1,value1) → list(key2,value2) Map & Reduce concept for each word: if word is a noun: emit („noun“,1) else if word is a verb: emit („verb“,1) 10
  • 17. Reduce Operation reduce(key2,list(value2)) → list(value2) Map Operation map(key1,value1) → list(key2,value2) Map & Reduce concept for each word: if word is a noun: emit („noun“,1) else if word is a verb: emit („verb“,1) result = 0 for each value2: result += 1 emit („number of“+key2 +result) 10
  • 18. Map & Reduce redefinition for video processing 11
  • 19. Map & Reduce redefinition for video processing 11 Map map(streamin,list(streamside)) → streamout streamin
  • 20. Map & Reduce redefinition for video processing 11 Map map(streamin,list(streamside)) → streamout streamin
  • 21. Map & Reduce redefinition for video processing 11 Map map(streamin,list(streamside)) → streamout streamin Reduce reduce(streamin,list(streamside)) → streamout streamin
  • 22. Map & Reduce redefinition for video processing 11 Map map(streamin,list(streamside)) → streamout streamin Reduce reduce(streamin,list(streamside)) → streamout streamin
  • 25. Example Program 12 // init program auto prog = std::make_shared <vmr::GlfwProgram >(); auto source = std::make_shared <vmr:: LibavLoader>("./example.mov"); source->init(3);
  • 26. Example Program 12 // init program auto prog = std::make_shared <vmr::GlfwProgram >(); auto source = std::make_shared <vmr:: LibavLoader>("./example.mov"); source->init(3); // setup program and add the operation to it *prog << moveMap;
  • 27. Example Program 12 // init program auto prog = std::make_shared <vmr::GlfwProgram >(); auto source = std::make_shared <vmr:: LibavLoader>("./example.mov"); source->init(3); // move detection
 auto move = std::make_shared<vmr::Display>(); 
 auto moveMap = std::make_shared<vmr::Map> (source,move,“./move.map“); // setup program and add the operation to it *prog << moveMap;
  • 28. Example Program 12 // init program auto prog = std::make_shared <vmr::GlfwProgram >(); auto source = std::make_shared <vmr:: LibavLoader>("./example.mov"); source->init(3); // move detection
 auto move = std::make_shared<vmr::Display>(); 
 auto moveMap = std::make_shared<vmr::Map> (source,move,“./move.map“); // setup program and add the operation to it *prog << moveMap; // run program prog->run();
  • 29. Example Program Operation 12 // init program auto prog = std::make_shared <vmr::GlfwProgram >(); auto source = std::make_shared <vmr:: LibavLoader>("./example.mov"); source->init(3); // move detection
 auto move = std::make_shared<vmr::Display>(); 
 auto moveMap = std::make_shared<vmr::Map> (source,move,“./move.map“); // setup program and add the operation to it *prog << moveMap; // run program prog->run();
  • 30. Example Program Operation 12 // init program auto prog = std::make_shared <vmr::GlfwProgram >(); auto source = std::make_shared <vmr:: LibavLoader>("./example.mov"); source->init(3); // move detection
 auto move = std::make_shared<vmr::Display>(); 
 auto moveMap = std::make_shared<vmr::Map> (source,move,“./move.map“); // setup program and add the operation to it *prog << moveMap; // run program prog->run(); // get position of current pixel ivec2 pos = vmr_getPosition();
  • 31. Example Program Operation 12 // init program auto prog = std::make_shared <vmr::GlfwProgram >(); auto source = std::make_shared <vmr:: LibavLoader>("./example.mov"); source->init(3); // move detection
 auto move = std::make_shared<vmr::Display>(); 
 auto moveMap = std::make_shared<vmr::Map> (source,move,“./move.map“); // setup program and add the operation to it *prog << moveMap; // run program prog->run(); // get position of current pixel ivec2 pos = vmr_getPosition(); // get data from last three frames vec3 c; vec3 c1 = vmr_getStreamDataIn(pos, 0); vec3 c2 = vmr_getStreamDataIn(pos, -1); vec3 c3 = vmr_getStreamDataIn(pos, -2);
  • 32. Example Program Operation 12 // init program auto prog = std::make_shared <vmr::GlfwProgram >(); auto source = std::make_shared <vmr:: LibavLoader>("./example.mov"); source->init(3); // move detection
 auto move = std::make_shared<vmr::Display>(); 
 auto moveMap = std::make_shared<vmr::Map> (source,move,“./move.map“); // setup program and add the operation to it *prog << moveMap; // run program prog->run(); // get position of current pixel ivec2 pos = vmr_getPosition(); // get data from last three frames vec3 c; vec3 c1 = vmr_getStreamDataIn(pos, 0); vec3 c2 = vmr_getStreamDataIn(pos, -1); vec3 c3 = vmr_getStreamDataIn(pos, -2); // compute difference float diff1 = abs(c1.r-c2.r) + abs(c1.g-c2.g) + abs(c1.b-c2.b); float diff2 = abs(c1.r-c3.r) + abs(c1.g-c3.g) + abs(c1.b-c3.b);
  • 33. Example Program Operation 12 // init program auto prog = std::make_shared <vmr::GlfwProgram >(); auto source = std::make_shared <vmr:: LibavLoader>("./example.mov"); source->init(3); // move detection
 auto move = std::make_shared<vmr::Display>(); 
 auto moveMap = std::make_shared<vmr::Map> (source,move,“./move.map“); // setup program and add the operation to it *prog << moveMap; // run program prog->run(); // get position of current pixel ivec2 pos = vmr_getPosition(); // get data from last three frames vec3 c; vec3 c1 = vmr_getStreamDataIn(pos, 0); vec3 c2 = vmr_getStreamDataIn(pos, -1); vec3 c3 = vmr_getStreamDataIn(pos, -2); // compute difference float diff1 = abs(c1.r-c2.r) + abs(c1.g-c2.g) + abs(c1.b-c2.b); float diff2 = abs(c1.r-c3.r) + abs(c1.g-c3.g) + abs(c1.b-c3.b); // compare with threshold if (diff1>100 && diff2>100){ c = vec3(255, 255, 255); } else { c = vec3(0, 0, 0); }
  • 34. Example Program Operation 12 // init program auto prog = std::make_shared <vmr::GlfwProgram >(); auto source = std::make_shared <vmr:: LibavLoader>("./example.mov"); source->init(3); // move detection
 auto move = std::make_shared<vmr::Display>(); 
 auto moveMap = std::make_shared<vmr::Map> (source,move,“./move.map“); // setup program and add the operation to it *prog << moveMap; // run program prog->run(); // get position of current pixel ivec2 pos = vmr_getPosition(); // get data from last three frames vec3 c; vec3 c1 = vmr_getStreamDataIn(pos, 0); vec3 c2 = vmr_getStreamDataIn(pos, -1); vec3 c3 = vmr_getStreamDataIn(pos, -2); // compute difference float diff1 = abs(c1.r-c2.r) + abs(c1.g-c2.g) + abs(c1.b-c2.b); float diff2 = abs(c1.r-c3.r) + abs(c1.g-c3.g) + abs(c1.b-c3.b); // compare with threshold if (diff1>100 && diff2>100){ c = vec3(255, 255, 255); } else { c = vec3(0, 0, 0); } // write result to current position vmr_emitToStreamOut(pos,c);
  • 35. Performance Evaluation 0 ms 10 ms 20 ms 30 ms 40 ms SD HD Full HD 4K map reduce complex 13 0 RLOC 125 RLOC 250 RLOC 375 RLOC 500 RLOC OpenGL VideoMR program operation
  • 37. Improvements & Future Work 14 A general concept for n-dimensional buffers instead of frames
  • 38. Improvements & Future Work 14 A general concept for n-dimensional buffers instead of frames Extension with template classes to decide which main data type to use
  • 39. Improvements & Future Work 14 A general concept for n-dimensional buffers instead of frames Extension with template classes to decide which main data type to use Introduction of an explicit CPU operation with transparent memory management
  • 40. Improvements & Future Work 14 A general concept for n-dimensional buffers instead of frames Extension with template classes to decide which main data type to use Introduction of an explicit CPU operation with transparent memory management Considering of OpenCL and CUDA as backend
  • 41. Improvements & Future Work 14 A general concept for n-dimensional buffers instead of frames Extension with template classes to decide which main data type to use Introduction of an explicit CPU operation with transparent memory management Considering of OpenCL and CUDA as backend Comparison with other map and reduce frameworks will be part of future and therefore, a suitable benchmark has to be developed
  • 42. Conclusion 15 GPU Program- ming Abstraction & Usability Video Processing VideoMR fulfills the requirements of real-time video processing and supports with the map and reduce concept the development of GPU-based filter operations.
  • 43. Question & Comments 16 Contact: Benjamin-Heinz Meier/ benjamin-heinz.meier@student.hpi.de Matthias Trapp / matthias.trapp@hpi.de Jürgen Döllner / juergen.doellner@hpi.de Publications: www.4dndvis.de/publikationen.html This work was funded by the Federal Ministry of Education and Research (BMBF), Germany within the InnoProfile Transfer research group "4DnD-Vis".
  • 44. VideoMR: A Map and Reduce Framework for Real-time Video Processing Benjamin-Heinz Meier, Matthias Trapp, Jürgen Döllner Hasso Plattner Institute, University of Potsdam, Germany 17
  • 45. 18 PAPER [Dean'04] Dean, J. & Ghemawat, S. MapReduce: Simplified Data Processing on Large Clusters OSDI'04: Sixth Symposium on Operating System Design and Implementation, 2004 [Tho'11] Thompson, M.; Farley, D.; Barker, M.; Gee, P. & Stewart, A. DISRUPTOR: High performance alternative to bounded queues for exchanging data