18
N. Tsapanos, P. Bassia, P. Giannakeris, N. Passalis Prof. Ioannis Pitas Aristotle University of Thessaloniki [email protected] www.aiia.csd.auth.gr Version 2.3 CVML software development tools summary 1

CVML software development tools summary

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CVML software development tools summary

N. Tsapanos, P. Bassia, P. Giannakeris, N. Passalis

Prof. Ioannis Pitas

Aristotle University of Thessaloniki

[email protected]

www.aiia.csd.auth.gr

Version 2.3

CVML software development

tools summary

1

Page 2: CVML software development tools summary

Distributed computing (under development)

• ROS

• Libraries

• OpenCV

• BLAS, cuBLAS

• MKL DNN, cuDNN

• DNN Frameworks

• Neon, Tensorflow, Pytortch, Keras, MXNet

• Distributed/cloud computing

• MapReduce programming model

• Apache Spark

• Collaborative SW Development

• GitHub/Bitbucket.

Page 3: CVML software development tools summary

Robotic Operating System (ROS)

ROS is used in developing robotic applications

• ROS architecture:• ROS master, ROS nodes

• Node communications:• Topics

• Publisher and Subscriber nodes

• Functionalities:• Node graph visualization • Logging/plotting

• Checks and diagnostics

Page 4: CVML software development tools summary

ROS architecture

(Adapted from Willow Garage’s “What is ROS?” Presentation)

Master

Publisher

Publisher

Subscriber

Subscriber

/topic

(DNS-like)

Page 5: CVML software development tools summary

OpenCVOpen Computer vision library:• Image processing• Video analysis

• Deep NN, Machine Learning• Object detection

• Computer vision• Camera calibration, 3D world modeling

Page 6: CVML software development tools summary

Basic Linear Algebra

Subprograms (BLAS) Library

Basic Linear Algebra Subprograms (BLAS) is a software

library of high performance Linear Algebra routines.

• BLAS has three routine sets (“levels“).

• They correspond to both the chronological order of

definition and publication, as well as the degree of algorithm

complexity.

9

Page 7: CVML software development tools summary

cuBLAS

• The NVIDIA cuBLAS library is a fast GPU-accelerated

implementation of the standard basic linear algebra

subroutines (BLAS).

• Speed up is achieved by deploying compute-intensive

operations to a single GPU or scale up and distribute work

across multi-GPU configurations efficiently.

• Data needs to be copied to the GPU memory prior to calling

cuBLAS functions. Results need to be copied backwards to

the CPU memory.

Page 8: CVML software development tools summary

NVIDIA cuDNN

• The NVIDIA CUDA® Deep Neural Network library (cuDNN) is a GPU-accelerated

library of primitives for deep neural networks.

• Standard routines:

• Forward and backward convolution

• Pooling

• Normalization layers

• Activation layers.

• cuDNN accelerates widely used deep learning frameworks:

• Caffe

• Keras

• MATLAB

• TensorFlow

• Torch

17https://developer.nvidia.com/cudnn

Page 9: CVML software development tools summary

DNN Frameworks

Image Source: Heehoon Kim, Hyoungwook Nam, Wookeun Jung, and Jaejin Le - Performance Analysis of CNN Frameworks for GPUs

Page 10: CVML software development tools summary

DNN Frameworks• All 5 frameworks work with cuDNN as backend.

• cuDNN unfortunately not open source

• cuDNN supports FFT and Winograd

Image Source: Heehoon Kim, Hyoungwook Nam, Wookeun Jung, and Jaejin Le - Performance Analysis of CNN Frameworks for GPUs

Page 11: CVML software development tools summary

DNN Frameworks

Recommended for beginners:

Recommended for research:

Recommended for production

(cloud or mobile):

24

Page 12: CVML software development tools summary

Distributed/cloud

computing

• An alternative to expensive Graphics cards and

supercomputers.

• Can consist of any combination of PCs of various

processing power.

• Extremely flexible and scalable.

• Designed to handle Big Data.

Page 13: CVML software development tools summary

MapReduce programming

model

▪ This programming model was developed to implement

the Map and Reduce commands, which can, in turn, be

used to write distributed programs with ease.

▪ The Map command applies a function on every element

of the distributed dataset. This can be used to filter, sort,

or transform the data.

▪ The Reduce command collects the distributed dataset,

or the results of a previous Map or Reduce command, in

a summary operation, such as addition.

Page 14: CVML software development tools summary

Apache Spark• Open software for cluster

computing.

• Developed by Apache.

• Distributed big data computing.

• It is based on MapReduce.

• Up to 100 times faster than

Hadoop MapReduce.

• Machine Learning, Graph

Processing, SQL, Streaming

modules.

• Resilient Distributed Datasets.

Page 15: CVML software development tools summary

Collaborative SW Development

32

▪ Modern on-line collaborative development platforms provide a common project repository hosted on-cloud.

▪ Several features are typically available:

▪ Distributed version control▪ Source code management▪ Access control▪ Bug tracking▪ Task management▪ Web interface

Page 16: CVML software development tools summary

Collaborative SW Development

33

▪ Several alternatives exist.

▪ Most popular front-end services:▪ GitHub▪ Bitbucket

▪ Most popular underlying open-source version control systems:▪ Git▪ Mercurial

Page 17: CVML software development tools summary

34

References[BRA2008] Bradski G, Kaehler A. Learning OpenCV: Computer vision with the

OpenCV library. " O'Reilly Media, Inc."; 2008 Sep 24.

[KIR2016] Kirk DB, Wen-Mei WH. Programming massively parallel processors: a

hands-on approach. Morgan kaufmann; 2016.

[ABA2016] Abadi M, Barham P, Chen J, Chen Z, Davis A, Dean J, Devin M,

Ghemawat S, Irving G, Isard M, Kudlur M. Tensorflow: A system for large-scale

machine learning. In12th {USENIX} Symposium on Operating Systems Design and

Implementation ({OSDI} 16) 2016 (pp. 265-283).

[DEA2010] Dean J, Ghemawat S. MapReduce: a flexible data processing tool.

Communications of the ACM. 2010 Jan 1;53(1):72-7.

[ZAH2026] Zaharia M, Xin RS, Wendell P, Das T, Armbrust M, Dave A, Meng X,

Rosen J, Venkataraman S, Franklin MJ, Ghodsi A. Apache spark: a unified engine

for big data processing. Communications of the ACM. 2016 Oct 28;59(11):56-65.

[KET2017] Ketkar N. Introduction to pytorch. InDeep learning with python 2017 (pp.

195-208). Apress.

Page 18: CVML software development tools summary

Q & A

Thank you very much for your attention!

Contact: Prof. I. Pitas

[email protected]

35