SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
PharoVX
Accelerated computer vision in Pharo
Dmitry Matveev // ESUG 2015 // Brescia
About
Me:
● A C++ programmer
● Playing with Smalltalk since 2009
● Itseez employee since 2013
PharoVX:
● An interface to OpenVX from Pharo
Cool, but… What is OpenVX?
OpenVX
● A standard for accelerated computer vision
● Released by Khronos group
● Specifies a set of optimized functions
● Hardware vendors will implement it for
various platforms
https://www.khronos.org/openvx/
Companies behind OpenVX
Itseez is the OpenVX working group chair
OpenVX Concepts
1. Express your computer vision task as a
graph
a. Operate with nodes and kernels
b. Each node (kernel) represents a single accelerated
operation
2. Ask hardware to perform the task
3. That’s it!
OpenVX Example
Convert to
YUV
Extract “Y”
Gaussian
blur
Canny
edge
detector
OpenVX Example
Convert to
YUV
Extract “Y”
Gaussian
blur
Canny
edge
detector
Source and destination images are available in the host
(application memory)
OpenVX Example
Convert to
YUV
Extract “Y”
Gaussian
blur
Canny
edge
detector
Source and destination images are available in the host
(application memory)
Intermediate data is somewhere in the
hardware memory (inaccessible)
OpenVX Example
Convert to
YUV
Extract “Y”
Gaussian
blur
Canny
edge
detector
Source and destination images are available in the host
(application memory)
Intermediate data is somewhere in the
hardware memory (inaccessible)
How it is executed - God (vendor) only
knows!
OpenVX
1. Reference implementation is available on
the Khronos website
2. More optimized vendor implementations to
come…
3. But we can play with it right now!
PharoVX
PharoVX
● Binding to core OpenVX functions
● Built with NativeBoost
● Provides interface to standard nodes (VX
1.0)
● Works with Khronos implementation
● ...Highly experimental: written in a week!
http://smalltalkhub.com/#!/~DmitryMatveev/PharoVX
Demo
Sample code: running Canny
runCanny
| ctx g in yuv y blr t out |
ctx := VXContext new.
g := VXGraph new: ctx.
t := VXThreshold new: ctx thresholdType: VX_THRESHOLD_TYPE_RANGE dataType: VX_TYPE_UINT8.
t lower: 64; upper: 200.
in := (Form fromFileNamed: '/tmp/lena.jpg') asVXImage: ctx.
yuv := VXImage virtual: g format: VX_DF_IMAGE_YUV4.
y := VXImage virtual: g.
blr := VXImage virtual: g.
out := VXImage new: ctx width: in width height: in height format: VX_DF_IMAGE_U8.
g colorConvert: in to: yuv;
channelExtract: yuv channel: VX_CHANNEL_Y to: y;
gaussian3x3: y to: blr;
canny: blr threshold: t gradSize: 3 normType: VX_NORM_L2 to: out.
g verify; process.
^out asForm
Status: OpenVX 1.0
AbsDiff Channel extr. Gaussian pyr. Multiply Table lookup
Accumulate Color convert HalfScale Gauss. Not Threshold
AccumulateW Convert depth Harris corners OptFlowPyrLK Warp affine
AccumulateSqr Convolve Histogram Or Warp perspecive
Add Dilate3x3 Integral Phase
And EqualizeHist Magnitude Remap
Box3x3 Erode3x3 MeanStdDev Scale
Canny FAST corners Median3x3 Sobel3x3
Channel comb. Gaussian 3x3 MinMaxLoc Subtract
Status: PharoVX 16/Jul/2015
AbsDiff Channel extr. Gaussian pyr. Multiply Table lookup
Accumulate Color convert HalfScale Gauss. Not Threshold
AccumulateW Convert depth Harris corners OptFlowPyrLK Warp affine
AccumulateSqr Convolve Histogram Or Warp perspecive
Add Dilate3x3 Integral Phase
And EqualizeHist Magnitude Remap
Box3x3 Erode3x3 MeanStdDev Scale
Canny FAST corners Median3x3 Sobel3x3
Channel comb. Gaussian 3x3 MinMaxLoc Subtract
Summary
● PharoVX is currently a prototype:
○ Provides core objects and almost all standard
kernels
○ Fragile, buggy, and so on - yes!
○ Pretty close to plain C API - probably needs to be
“Smalltalkized”
● Computer vision in Smalltalk is fun!
● Feel free to join :-)
Questions
Contacts and resources
Dmitry Matveev
● dmitry.matveev@itseez.com
● http://linkedin.com/in/dmitrym
PharoVX/OpenVX
● http://dmitrymatveev.co.uk/pharovx/
● http://smalltalkhub.com/#!/~DmitryMatveev/PharoVX
● http://khronos.org/openvx/
● http://itseez.com/
Thanks!

Weitere ähnliche Inhalte

Was ist angesagt?

2 19-2018-mean of all runs
2 19-2018-mean of all runs2 19-2018-mean of all runs
2 19-2018-mean of all runsAlexander Bitar
 
Untitled presentation(4)
Untitled presentation(4)Untitled presentation(4)
Untitled presentation(4)chan20kaur
 
Basic Intro to WinDbg
Basic Intro to WinDbgBasic Intro to WinDbg
Basic Intro to WinDbgEmad Alashi
 
Java Code for Sample Projects Methods
Java Code for Sample Projects MethodsJava Code for Sample Projects Methods
Java Code for Sample Projects Methodsjwjablonski
 
Richard Salter: Using the Titanium OpenGL Module
Richard Salter: Using the Titanium OpenGL ModuleRichard Salter: Using the Titanium OpenGL Module
Richard Salter: Using the Titanium OpenGL ModuleAxway Appcelerator
 
Scalability comparison: Traditional fork-join-based parallelism vs. Goroutine...
Scalability comparison: Traditional fork-join-based parallelism vs. Goroutine...Scalability comparison: Traditional fork-join-based parallelism vs. Goroutine...
Scalability comparison: Traditional fork-join-based parallelism vs. Goroutine...Artjom Simon
 
SdE 2: Le langage Python, Allocation de memoire
SdE 2: Le langage Python, Allocation de memoireSdE 2: Le langage Python, Allocation de memoire
SdE 2: Le langage Python, Allocation de memoireAlexandru Radovici
 
ClojureScript - A functional Lisp for the browser
ClojureScript - A functional Lisp for the browserClojureScript - A functional Lisp for the browser
ClojureScript - A functional Lisp for the browserFalko Riemenschneider
 
[Bop] Block Oriented Programming Automating Data-only Attacks
[Bop] Block Oriented Programming Automating Data-only Attacks[Bop] Block Oriented Programming Automating Data-only Attacks
[Bop] Block Oriented Programming Automating Data-only Attacks星曼 陈
 
Open GL Programming Training Session I
Open GL Programming Training Session IOpen GL Programming Training Session I
Open GL Programming Training Session INEEVEE Technologies
 

Was ist angesagt? (20)

Inc decsourcefile
Inc decsourcefileInc decsourcefile
Inc decsourcefile
 
2 19-2018-mean of all runs
2 19-2018-mean of all runs2 19-2018-mean of all runs
2 19-2018-mean of all runs
 
Untitled presentation(4)
Untitled presentation(4)Untitled presentation(4)
Untitled presentation(4)
 
Basic Intro to WinDbg
Basic Intro to WinDbgBasic Intro to WinDbg
Basic Intro to WinDbg
 
3 rd animation
3 rd animation3 rd animation
3 rd animation
 
Java Code for Sample Projects Methods
Java Code for Sample Projects MethodsJava Code for Sample Projects Methods
Java Code for Sample Projects Methods
 
Python 3 - tutorial
Python 3 - tutorialPython 3 - tutorial
Python 3 - tutorial
 
Richard Salter: Using the Titanium OpenGL Module
Richard Salter: Using the Titanium OpenGL ModuleRichard Salter: Using the Titanium OpenGL Module
Richard Salter: Using the Titanium OpenGL Module
 
Scalability comparison: Traditional fork-join-based parallelism vs. Goroutine...
Scalability comparison: Traditional fork-join-based parallelism vs. Goroutine...Scalability comparison: Traditional fork-join-based parallelism vs. Goroutine...
Scalability comparison: Traditional fork-join-based parallelism vs. Goroutine...
 
SdE 2: Le langage Python, Allocation de memoire
SdE 2: Le langage Python, Allocation de memoireSdE 2: Le langage Python, Allocation de memoire
SdE 2: Le langage Python, Allocation de memoire
 
ClojureScript - A functional Lisp for the browser
ClojureScript - A functional Lisp for the browserClojureScript - A functional Lisp for the browser
ClojureScript - A functional Lisp for the browser
 
[Bop] Block Oriented Programming Automating Data-only Attacks
[Bop] Block Oriented Programming Automating Data-only Attacks[Bop] Block Oriented Programming Automating Data-only Attacks
[Bop] Block Oriented Programming Automating Data-only Attacks
 
Bitcoin:Next
Bitcoin:NextBitcoin:Next
Bitcoin:Next
 
Perimeter
PerimeterPerimeter
Perimeter
 
C coroutine
C coroutineC coroutine
C coroutine
 
Code
CodeCode
Code
 
Dev day linux redu
Dev day linux reduDev day linux redu
Dev day linux redu
 
201801 CSE240 Lecture 12
201801 CSE240 Lecture 12201801 CSE240 Lecture 12
201801 CSE240 Lecture 12
 
Open GL Programming Training Session I
Open GL Programming Training Session IOpen GL Programming Training Session I
Open GL Programming Training Session I
 
Ns tutorial
Ns tutorialNs tutorial
Ns tutorial
 

Ähnlich wie Pharo VX

The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...
The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...
The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...David Walker
 
wxPython and wxFormBuilder
wxPython and wxFormBuilderwxPython and wxFormBuilder
wxPython and wxFormBuilderJenny Liang
 
Introduction to Xdebug
Introduction to XdebugIntroduction to Xdebug
Introduction to XdebugAbid Malik
 
Debugging node in prod
Debugging node in prodDebugging node in prod
Debugging node in prodYunong Xiao
 
100 bugs in Open Source C/C++ projects
100 bugs in Open Source C/C++ projects 100 bugs in Open Source C/C++ projects
100 bugs in Open Source C/C++ projects Andrey Karpov
 
LCA13: Xen on ARM
LCA13: Xen on ARMLCA13: Xen on ARM
LCA13: Xen on ARMLinaro
 
Deploying Prometheus stacks with Juju
Deploying Prometheus stacks with JujuDeploying Prometheus stacks with Juju
Deploying Prometheus stacks with JujuJ.J. Ciarlante
 
Rainbow Over the Windows: More Colors Than You Could Expect
Rainbow Over the Windows: More Colors Than You Could ExpectRainbow Over the Windows: More Colors Than You Could Expect
Rainbow Over the Windows: More Colors Than You Could ExpectPeter Hlavaty
 
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
 
BlueHat v17 || Out of the Truman Show: VM Escape in VMware Gracefully
BlueHat v17 || Out of the Truman Show: VM Escape in VMware Gracefully BlueHat v17 || Out of the Truman Show: VM Escape in VMware Gracefully
BlueHat v17 || Out of the Truman Show: VM Escape in VMware Gracefully BlueHat Security Conference
 
Anomalies in X-Ray Engine
Anomalies in X-Ray EngineAnomalies in X-Ray Engine
Anomalies in X-Ray EnginePVS-Studio
 

Ähnlich wie Pharo VX (20)

Andes open cl for RISC-V
Andes open cl for RISC-VAndes open cl for RISC-V
Andes open cl for RISC-V
 
Xdebug from a to x
Xdebug from a to xXdebug from a to x
Xdebug from a to x
 
The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...
The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...
The Effect of Hierarchical Memory on the Design of Parallel Algorithms and th...
 
GNURAdioDoc-8
GNURAdioDoc-8GNURAdioDoc-8
GNURAdioDoc-8
 
GNURAdioDoc-8
GNURAdioDoc-8GNURAdioDoc-8
GNURAdioDoc-8
 
wxPython and wxFormBuilder
wxPython and wxFormBuilderwxPython and wxFormBuilder
wxPython and wxFormBuilder
 
Introduction to Xdebug
Introduction to XdebugIntroduction to Xdebug
Introduction to Xdebug
 
3-sdn-lab.pdf
3-sdn-lab.pdf3-sdn-lab.pdf
3-sdn-lab.pdf
 
Debugging node in prod
Debugging node in prodDebugging node in prod
Debugging node in prod
 
Programming in c
Programming in cProgramming in c
Programming in c
 
Book
BookBook
Book
 
100 bugs in Open Source C/C++ projects
100 bugs in Open Source C/C++ projects 100 bugs in Open Source C/C++ projects
100 bugs in Open Source C/C++ projects
 
LCA13: Xen on ARM
LCA13: Xen on ARMLCA13: Xen on ARM
LCA13: Xen on ARM
 
Deploying Prometheus stacks with Juju
Deploying Prometheus stacks with JujuDeploying Prometheus stacks with Juju
Deploying Prometheus stacks with Juju
 
Rainbow Over the Windows: More Colors Than You Could Expect
Rainbow Over the Windows: More Colors Than You Could ExpectRainbow Over the Windows: More Colors Than You Could Expect
Rainbow Over the Windows: More Colors Than You Could Expect
 
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
 
BlueHat v17 || Out of the Truman Show: VM Escape in VMware Gracefully
BlueHat v17 || Out of the Truman Show: VM Escape in VMware Gracefully BlueHat v17 || Out of the Truman Show: VM Escape in VMware Gracefully
BlueHat v17 || Out of the Truman Show: VM Escape in VMware Gracefully
 
Getting started with wxWidgets
Getting started with wxWidgets Getting started with wxWidgets
Getting started with wxWidgets
 
Berlin sigma-2017
Berlin sigma-2017Berlin sigma-2017
Berlin sigma-2017
 
Anomalies in X-Ray Engine
Anomalies in X-Ray EngineAnomalies in X-Ray Engine
Anomalies in X-Ray Engine
 

Kürzlich hochgeladen

What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfkalichargn70th171
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 

Kürzlich hochgeladen (20)

What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 

Pharo VX

  • 1. PharoVX Accelerated computer vision in Pharo Dmitry Matveev // ESUG 2015 // Brescia
  • 2. About Me: ● A C++ programmer ● Playing with Smalltalk since 2009 ● Itseez employee since 2013 PharoVX: ● An interface to OpenVX from Pharo
  • 3. Cool, but… What is OpenVX?
  • 4. OpenVX ● A standard for accelerated computer vision ● Released by Khronos group ● Specifies a set of optimized functions ● Hardware vendors will implement it for various platforms https://www.khronos.org/openvx/
  • 5. Companies behind OpenVX Itseez is the OpenVX working group chair
  • 6. OpenVX Concepts 1. Express your computer vision task as a graph a. Operate with nodes and kernels b. Each node (kernel) represents a single accelerated operation 2. Ask hardware to perform the task 3. That’s it!
  • 7. OpenVX Example Convert to YUV Extract “Y” Gaussian blur Canny edge detector
  • 8. OpenVX Example Convert to YUV Extract “Y” Gaussian blur Canny edge detector Source and destination images are available in the host (application memory)
  • 9. OpenVX Example Convert to YUV Extract “Y” Gaussian blur Canny edge detector Source and destination images are available in the host (application memory) Intermediate data is somewhere in the hardware memory (inaccessible)
  • 10. OpenVX Example Convert to YUV Extract “Y” Gaussian blur Canny edge detector Source and destination images are available in the host (application memory) Intermediate data is somewhere in the hardware memory (inaccessible) How it is executed - God (vendor) only knows!
  • 11. OpenVX 1. Reference implementation is available on the Khronos website 2. More optimized vendor implementations to come… 3. But we can play with it right now!
  • 13. PharoVX ● Binding to core OpenVX functions ● Built with NativeBoost ● Provides interface to standard nodes (VX 1.0) ● Works with Khronos implementation ● ...Highly experimental: written in a week! http://smalltalkhub.com/#!/~DmitryMatveev/PharoVX
  • 14. Demo
  • 15. Sample code: running Canny runCanny | ctx g in yuv y blr t out | ctx := VXContext new. g := VXGraph new: ctx. t := VXThreshold new: ctx thresholdType: VX_THRESHOLD_TYPE_RANGE dataType: VX_TYPE_UINT8. t lower: 64; upper: 200. in := (Form fromFileNamed: '/tmp/lena.jpg') asVXImage: ctx. yuv := VXImage virtual: g format: VX_DF_IMAGE_YUV4. y := VXImage virtual: g. blr := VXImage virtual: g. out := VXImage new: ctx width: in width height: in height format: VX_DF_IMAGE_U8. g colorConvert: in to: yuv; channelExtract: yuv channel: VX_CHANNEL_Y to: y; gaussian3x3: y to: blr; canny: blr threshold: t gradSize: 3 normType: VX_NORM_L2 to: out. g verify; process. ^out asForm
  • 16. Status: OpenVX 1.0 AbsDiff Channel extr. Gaussian pyr. Multiply Table lookup Accumulate Color convert HalfScale Gauss. Not Threshold AccumulateW Convert depth Harris corners OptFlowPyrLK Warp affine AccumulateSqr Convolve Histogram Or Warp perspecive Add Dilate3x3 Integral Phase And EqualizeHist Magnitude Remap Box3x3 Erode3x3 MeanStdDev Scale Canny FAST corners Median3x3 Sobel3x3 Channel comb. Gaussian 3x3 MinMaxLoc Subtract
  • 17. Status: PharoVX 16/Jul/2015 AbsDiff Channel extr. Gaussian pyr. Multiply Table lookup Accumulate Color convert HalfScale Gauss. Not Threshold AccumulateW Convert depth Harris corners OptFlowPyrLK Warp affine AccumulateSqr Convolve Histogram Or Warp perspecive Add Dilate3x3 Integral Phase And EqualizeHist Magnitude Remap Box3x3 Erode3x3 MeanStdDev Scale Canny FAST corners Median3x3 Sobel3x3 Channel comb. Gaussian 3x3 MinMaxLoc Subtract
  • 18. Summary ● PharoVX is currently a prototype: ○ Provides core objects and almost all standard kernels ○ Fragile, buggy, and so on - yes! ○ Pretty close to plain C API - probably needs to be “Smalltalkized” ● Computer vision in Smalltalk is fun! ● Feel free to join :-)
  • 20. Contacts and resources Dmitry Matveev ● dmitry.matveev@itseez.com ● http://linkedin.com/in/dmitrym PharoVX/OpenVX ● http://dmitrymatveev.co.uk/pharovx/ ● http://smalltalkhub.com/#!/~DmitryMatveev/PharoVX ● http://khronos.org/openvx/ ● http://itseez.com/