SlideShare a Scribd company logo
Глубокие нейронные сети. 
Инструментарий. 
Быстрый старт 
Бабий А.С. - apratster@gmail.com
Deep learning 
1. Что такое deep learning. 
набор алгоритмов машинного обучения, которые пытаются моделировать 
высокоуровневые абстракции в данных, используя архитектуры, 
состоящие из множества нелинейных трансформаций.[1] 
2. Комбинирование обучения «с учителем» и «без учителя» 
3. Недостатки? 
4. Deep convolutional neural networks, CAFFE implementation
Deep convolutional neural networks 
ConvNet configuration by Krizhevsky [2]
Наборы признаков (Features sets:) 
Convolution Neural Network Architecture Model[3] 
На каком этапе формируются карты признаков? Для чего?
Наборы признаков: 
Карта признаков [4] 
Накладываем друг на друга 
но, с «коэффициентом 
прозрачности»
Pooling 
Пример работы pooling слоя [5] 
Из нескольких соседних нейронов карты признаков выбирается максимальный 
и принимается за один нейрон.
Библиотеки для работы с deep learning 
http://deeplearning.net/software_links/ 
Caffe – deep convolutional neural network framework 
http://caffe.berkeleyvision.org 
ConvNetJS – JS based deep learning framework 
http://cs.stanford.edu/people/karpathy/convnetjs/ 
DL4J - Java based deep learning framework 
http://deeplearning4j.org/ 
Theano – CPU/GPU symbolic expression compiler in python 
http://deeplearning.net/software/theano 
Cuda-Convnet – A fast C++/CUDA implementation of convolutional 
(or more generally, feed-forward) neural networks 
http://code.google.com/p/cuda-convnet/ 
Torch – provides a Matlab-like environment for state-of-the-art machine 
learning algorithms in lua 
http://www.torch.ch/ 
Accord.NET - C# deep learning 
http://accord-framework.net/, 
tutorial:http://whoopsidaisies.hatenablog.com/entry/2014/08/19/015420
Бабий А.С. - apratster@gmail.com 
CAFFE 
1. GPU (CUDA) and CPU support 
2. Caffe can be accelerated by NVIDIA cuDNN 
3. Python and/or MATLAB wrappers 
4. Config paradigm vs Coding paradigm. Command line tools. 
*CPU-only Caffe: 
Uncomment the CPU_ONLY := 1 flag in Makefile.config 
http://caffe.berkeleyvision.org/installation.html
Работа с CAFFE 
Начинать лучше с утилит командной строки: 
build/tools 
Наиболее доступный пример на базе MNIST – распознавания рукописных цифр 
http://caffe.berkeleyvision.org/gathered/examples/mnist.html 
cd $CAFFE_ROOT 
./data/mnist/get_mnist.sh 
./examples/mnist/create_mnist.sh 
cd $CAFFE_ROOT 
./examples/mnist/train_lenet.sh
В каком виде подаются входные и выходные данные? 
- databases (LevelDB or LMDB) 
- directly from memory 
- from files on disk in HDF5 
- common image formats. 
http://symas.com/mdb/ http://leveldb.org/ 
Input data 
Output data 
-snapshot file with mode 
-snapshot file with solver state 
Solver? Yes, we can continue breacked training from snapshot
Виды слоев CAFFE 
Caffe stores and communicates data in 4-dimensional arrays called blobs 
name: "LogReg" 
layers { 
name: "mnist" 
type: DATA 
top: "data" 
top: "label" 
data_param { 
source: "input_leveldb" 
batch_size: 64 
} 
} layers { 
name: "ip" 
type: INNER_PRODUCT 
bottom: "data" 
top: "ip" 
inner_product_param { 
num_output: 2 
} 
} layers { 
name: "loss" 
type: SOFTMAX_LOSS 
bottom: "ip" 
bottom: "label" 
top: "loss" 
}
Виды слоев 
Convolutional layer 
Required field 
num_output (c_o): the number of filters 
kernel_size (or kernel_h and kernel_w): specifies height and width of each filter 
Pooling layer 
Required 
kernel_size (or kernel_h and kernel_w): specifies height and width of each filter 
Loss Layers, Activation / Neuron Layers, Data Layers, Common Layers 
How to configure? 
Ready to use models in folder: examples
Решение своей задачи 
1. Заботимся о корректности, размере и покрытии выборок. 
2. Компилируем Caffe с поддержкой GPU. 
3. Конфигурируем сеть, отталкиваясь от примеров. 
4. Тренируем, смотрим на результат тестовой выборки. 
5. Если результат не устраивает- настраиваем и тренируем до получения 
достаточного результата 
6. Для использования натренированной сети для одиночных 
Изображений необходимо написать конфиг и воспользоваться 
C++, Python или Mathlab.
Литература 
1. L. Deng and D. Yu, "Deep Learning: Methods and Applications“ 
http://research.microsoft.com/pubs/209355/DeepLearning-NowPublishing-Vol7- 
SIG-039.pdf 
2. ConvNet configuration by Krizhevsky et al 
http://books.nips.cc/papers/files/nips25/NIPS2012_0534.pdf 
3. Efficient mapping of the training of Convolutional Neural Networks to a CUDA-based 
cluster http://parse.ele.tue.nl/education/cluster2 
4. http://www.cs.toronto.edu/~ranzato/research/projects.html 
5. http://www.amolgmahurkar.com/classifySTLusingCNN.html 
Спасибо за внимание !

More Related Content

Similar to Deep convolution networks with caffe

TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
Iosif Itkin
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2Technopark
 
Дмитрий Кручинин - Сравнительный анализ библиотек глубинного обучения
Дмитрий Кручинин - Сравнительный анализ библиотек глубинного обученияДмитрий Кручинин - Сравнительный анализ библиотек глубинного обучения
Дмитрий Кручинин - Сравнительный анализ библиотек глубинного обучения
AIST
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
Ivan Grishaev
 
Обзор Continuous integration инструментов
Обзор Continuous integration инструментовОбзор Continuous integration инструментов
Обзор Continuous integration инструментов
Vitalii Morvaniuk
 
Machine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий ЛапинMachine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий Лапин
IT61
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
Yandex
 
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
Alex V. Petrov
 
CUDA Course 2010 at MSU
CUDA Course 2010 at MSUCUDA Course 2010 at MSU
CUDA Course 2010 at MSU
larhat
 
Soft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровняSoft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровняLuxoftTraining
 
RUNOS OpenFlow controller (ru)
RUNOS OpenFlow controller (ru)RUNOS OpenFlow controller (ru)
RUNOS OpenFlow controller (ru)
Alexander Shalimov
 
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Stfalcon Meetups
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Mikhail Kurnosov
 
Нюансы запуска приложений в Kubernetes
Нюансы запуска приложений в KubernetesНюансы запуска приложений в Kubernetes
Нюансы запуска приложений в Kubernetes
Андрей Новиков
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoFDmitry Buzdin
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Mikhail Kurnosov
 
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Ontico
 
Программируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusПрограммируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco Nexus
Cisco Russia
 
Linkmeup v076(2019-06).3
Linkmeup v076(2019-06).3Linkmeup v076(2019-06).3
Linkmeup v076(2019-06).3
eucariot
 
Внедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движокВнедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движок
Roman_Lut
 

Similar to Deep convolution networks with caffe (20)

TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2
 
Дмитрий Кручинин - Сравнительный анализ библиотек глубинного обучения
Дмитрий Кручинин - Сравнительный анализ библиотек глубинного обученияДмитрий Кручинин - Сравнительный анализ библиотек глубинного обучения
Дмитрий Кручинин - Сравнительный анализ библиотек глубинного обучения
 
От Make к Ansible
От Make к AnsibleОт Make к Ansible
От Make к Ansible
 
Обзор Continuous integration инструментов
Обзор Continuous integration инструментовОбзор Continuous integration инструментов
Обзор Continuous integration инструментов
 
Machine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий ЛапинMachine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий Лапин
 
Другая виртуализация
Другая виртуализацияДругая виртуализация
Другая виртуализация
 
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
DEV Labs 2013. Can C++ Code Effeciency Be Comparable to That of Middle-Level ...
 
CUDA Course 2010 at MSU
CUDA Course 2010 at MSUCUDA Course 2010 at MSU
CUDA Course 2010 at MSU
 
Soft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровняSoft labs. достижима ли в c++ эффективность языка среднего уровня
Soft labs. достижима ли в c++ эффективность языка среднего уровня
 
RUNOS OpenFlow controller (ru)
RUNOS OpenFlow controller (ru)RUNOS OpenFlow controller (ru)
RUNOS OpenFlow controller (ru)
 
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
Использование Java Native Interface (JNI) и кросплатформенных C/C++ реализаци...
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
 
Нюансы запуска приложений в Kubernetes
Нюансы запуска приложений в KubernetesНюансы запуска приложений в Kubernetes
Нюансы запуска приложений в Kubernetes
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
 
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
Отказоустойчивый микрокластер своими руками, Виталий Гаврилов (Ленвендо)
 
Программируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco NexusПрограммируемость коммутаторов для ЦОД Cisco Nexus
Программируемость коммутаторов для ЦОД Cisco Nexus
 
Linkmeup v076(2019-06).3
Linkmeup v076(2019-06).3Linkmeup v076(2019-06).3
Linkmeup v076(2019-06).3
 
Внедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движокВнедрение параллельного рендеринга в игровой движок
Внедрение параллельного рендеринга в игровой движок
 

More from Andrew Babiy

Lidar road recognition
Lidar road recognitionLidar road recognition
Lidar road recognition
Andrew Babiy
 
Automated driving - Автоматическое вождение
Automated driving - Автоматическое вождениеAutomated driving - Автоматическое вождение
Automated driving - Автоматическое вождение
Andrew Babiy
 
Пути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обученияПути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обучения
Andrew Babiy
 
Face detection and recognition using OpenCV
Face detection and recognition using OpenCVFace detection and recognition using OpenCV
Face detection and recognition using OpenCV
Andrew Babiy
 
Recognition of handwritten digits
Recognition of handwritten digitsRecognition of handwritten digits
Recognition of handwritten digitsAndrew Babiy
 
SURF
SURFSURF

More from Andrew Babiy (6)

Lidar road recognition
Lidar road recognitionLidar road recognition
Lidar road recognition
 
Automated driving - Автоматическое вождение
Automated driving - Автоматическое вождениеAutomated driving - Автоматическое вождение
Automated driving - Автоматическое вождение
 
Пути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обученияПути увеличения эффективности реализации алгоритмов машинного обучения
Пути увеличения эффективности реализации алгоритмов машинного обучения
 
Face detection and recognition using OpenCV
Face detection and recognition using OpenCVFace detection and recognition using OpenCV
Face detection and recognition using OpenCV
 
Recognition of handwritten digits
Recognition of handwritten digitsRecognition of handwritten digits
Recognition of handwritten digits
 
SURF
SURFSURF
SURF
 

Deep convolution networks with caffe

  • 1. Глубокие нейронные сети. Инструментарий. Быстрый старт Бабий А.С. - apratster@gmail.com
  • 2. Deep learning 1. Что такое deep learning. набор алгоритмов машинного обучения, которые пытаются моделировать высокоуровневые абстракции в данных, используя архитектуры, состоящие из множества нелинейных трансформаций.[1] 2. Комбинирование обучения «с учителем» и «без учителя» 3. Недостатки? 4. Deep convolutional neural networks, CAFFE implementation
  • 3. Deep convolutional neural networks ConvNet configuration by Krizhevsky [2]
  • 4. Наборы признаков (Features sets:) Convolution Neural Network Architecture Model[3] На каком этапе формируются карты признаков? Для чего?
  • 5. Наборы признаков: Карта признаков [4] Накладываем друг на друга но, с «коэффициентом прозрачности»
  • 6. Pooling Пример работы pooling слоя [5] Из нескольких соседних нейронов карты признаков выбирается максимальный и принимается за один нейрон.
  • 7. Библиотеки для работы с deep learning http://deeplearning.net/software_links/ Caffe – deep convolutional neural network framework http://caffe.berkeleyvision.org ConvNetJS – JS based deep learning framework http://cs.stanford.edu/people/karpathy/convnetjs/ DL4J - Java based deep learning framework http://deeplearning4j.org/ Theano – CPU/GPU symbolic expression compiler in python http://deeplearning.net/software/theano Cuda-Convnet – A fast C++/CUDA implementation of convolutional (or more generally, feed-forward) neural networks http://code.google.com/p/cuda-convnet/ Torch – provides a Matlab-like environment for state-of-the-art machine learning algorithms in lua http://www.torch.ch/ Accord.NET - C# deep learning http://accord-framework.net/, tutorial:http://whoopsidaisies.hatenablog.com/entry/2014/08/19/015420
  • 8. Бабий А.С. - apratster@gmail.com CAFFE 1. GPU (CUDA) and CPU support 2. Caffe can be accelerated by NVIDIA cuDNN 3. Python and/or MATLAB wrappers 4. Config paradigm vs Coding paradigm. Command line tools. *CPU-only Caffe: Uncomment the CPU_ONLY := 1 flag in Makefile.config http://caffe.berkeleyvision.org/installation.html
  • 9. Работа с CAFFE Начинать лучше с утилит командной строки: build/tools Наиболее доступный пример на базе MNIST – распознавания рукописных цифр http://caffe.berkeleyvision.org/gathered/examples/mnist.html cd $CAFFE_ROOT ./data/mnist/get_mnist.sh ./examples/mnist/create_mnist.sh cd $CAFFE_ROOT ./examples/mnist/train_lenet.sh
  • 10. В каком виде подаются входные и выходные данные? - databases (LevelDB or LMDB) - directly from memory - from files on disk in HDF5 - common image formats. http://symas.com/mdb/ http://leveldb.org/ Input data Output data -snapshot file with mode -snapshot file with solver state Solver? Yes, we can continue breacked training from snapshot
  • 11. Виды слоев CAFFE Caffe stores and communicates data in 4-dimensional arrays called blobs name: "LogReg" layers { name: "mnist" type: DATA top: "data" top: "label" data_param { source: "input_leveldb" batch_size: 64 } } layers { name: "ip" type: INNER_PRODUCT bottom: "data" top: "ip" inner_product_param { num_output: 2 } } layers { name: "loss" type: SOFTMAX_LOSS bottom: "ip" bottom: "label" top: "loss" }
  • 12. Виды слоев Convolutional layer Required field num_output (c_o): the number of filters kernel_size (or kernel_h and kernel_w): specifies height and width of each filter Pooling layer Required kernel_size (or kernel_h and kernel_w): specifies height and width of each filter Loss Layers, Activation / Neuron Layers, Data Layers, Common Layers How to configure? Ready to use models in folder: examples
  • 13. Решение своей задачи 1. Заботимся о корректности, размере и покрытии выборок. 2. Компилируем Caffe с поддержкой GPU. 3. Конфигурируем сеть, отталкиваясь от примеров. 4. Тренируем, смотрим на результат тестовой выборки. 5. Если результат не устраивает- настраиваем и тренируем до получения достаточного результата 6. Для использования натренированной сети для одиночных Изображений необходимо написать конфиг и воспользоваться C++, Python или Mathlab.
  • 14. Литература 1. L. Deng and D. Yu, "Deep Learning: Methods and Applications“ http://research.microsoft.com/pubs/209355/DeepLearning-NowPublishing-Vol7- SIG-039.pdf 2. ConvNet configuration by Krizhevsky et al http://books.nips.cc/papers/files/nips25/NIPS2012_0534.pdf 3. Efficient mapping of the training of Convolutional Neural Networks to a CUDA-based cluster http://parse.ele.tue.nl/education/cluster2 4. http://www.cs.toronto.edu/~ranzato/research/projects.html 5. http://www.amolgmahurkar.com/classifySTLusingCNN.html Спасибо за внимание !