SlideShare una empresa de Scribd logo
1 de 12
rnd.azoft.com
Руководство по обучению
сверточной нейронной сети для
поиска ключевых точек объекта
В нашем руководстве вы узнаете, как
получить модель свёрточной нейронной
сети для поиска ключевых точек объекта
на изображении. В качестве объекта
исследования нами были выбраны
автомобильные номера. Представленное
руководство также может быть
использовано для поиска других объектов.
О проекте
1. Выбор изображений для обучения сети.
2. Разметка ключевых точек.
3. Аугментация.
4. Упаковка наборов данных в формат HDF5.
5. Обучение свёрточной нейронной сети.
6. Выводы.
7. Базовые источники.
План
rnd.azoft.com
rnd.azoft.com 1. Выбор изображений для обучения
1. Выбор изображений для обучения
Необходимо взять набор данных из оригинальных (неаугментированных) изображений
общим числом от нескольких сотен до нескольких тысяч. Чем больше, тем лучше.
2. Разметка ключевых точек
2. Разметка ключевых точек
Если ключевые точки на оригинальном изображении не размечены, то необходимо их разметить. То есть
сохранить координаты ключевых точек изображений в **.txt или **.csv файл. Каждой координате
соответствуют два значения по оси абсцисс и по оси ординат.
ВАЖНО! Если вы решили размечать несколько ключевых точек, то размечайте их в одной последовательности.
Например, при разметке автомобильного номера вы разметили первой точкой — левый верхний угол номера,
второй точкой — правый верхний угол, третьей точкой — левый нижний угол, четвертой точкой — правый
нижний угол номера. В дальнейшем вам следует сохранять последовательность разметки.
rnd.azoft.com
rnd.azoft.com 3. Аугментация
3. Аугментация
Для хорошего обучения необходимо иметь набор данных с количеством от нескольких тысяч до десятков
тысяч изображений. Если оригинального набора данных недостаточно, то необходимо сделать
аугментацию изображений.
ВАЖНО! Прежде чем делать аугментацию, разбейте выборку на тренировочную и валидационную.
Чтобы в последующем не оказалось так, что изображения, полученные путем аугментации из одного, оказались и
в тестовой, и в валидационной выборке. Если это не сделать, то отследить переобучение модели будет весьма
тяжело.
rnd.azoft.com 3. Аугментация
Методы, которые можно использовать для аугментации:
●
Поворот относительно центра;
●
Искажение перспективы;
●
Изменение масштаба;
●
Сдвиги;
●
Соль и перец;
●
Размытие и увеличение резкости;
●
Эрозия и дилатация.
rnd.azoft.com 4. Упаковка наборов данных в формат HDF5
4. Упаковка наборов данных в формат HDF5
Для того чтобы подавать набор данных в Caffe, необходимо упаковать этот набор в формат HDF5.
Значения пикселей следует нормализовать от 0 до 1. А значения размеченных координат следует
нормализовать от -1 до 1.
ВАЖНО:
●
Если производилась аугментация изображений, то изображения в HDF5 файле должны следовать в
случайном порядке.
●
После упаковки проверьте HDF5 файл при помощи утилиты HDF5 Viewer. Данные о пикселях должны быть
от 0 до 1, координаты должны быть от -1 до 1, а изображения должны быть не искажены.
rnd.azoft.com 4. Упаковка наборов данных в формат HDF5
rnd.azoft.com 4. Упаковка наборов данных в формат HDF5
rnd.azoft.com 5. Обучение свёрточной нейронной сети
5. Обучение свёрточной нейронной сети
Для обучения рекомендуется использовать метод оптимизации ADAM.
Входной слой должен выглядеть так: layer {
name: "data"
type: "HDF5Data"
top: "data"
top: "label"
hdf5_data_param {
source: "/home/user/caffe/examples/regression/regression_train.txt"
batch_size: 256
}
}
rnd.azoft.com 5. Обучение свёрточной нейронной сети
Количество выходов на выходном слое должно быть
равно количеству значений, описывающих координаты.
Следует использовать слой ошибки EuclideanLoss.
layer {
name: "ipout"
type: "InnerProduct"
bottom: "ip01"
top: "ipout"
inner_product_param {
num_output: 8
weight_filler {
type: "msra"
}
bias_filler {
type: "constant"
}
}
}
layer {
name: "loss"
type: "EuclideanLoss"
bottom: "ipout"
bottom: "label"
top: "loss"
}
Обучить качественную и быструю сеть с
нескольких попыток представляется
маловероятным. У нас ушло около 20
попыток, прежде чем мы получили
удовлетворительный результат. Если у вас
есть какие-то вопросы по идее, реализации
или коду, будем рады ответить на них в
коментариях под статьёй.
Выводы
За основу были взяты работы:
1. Using convolutional neural nets to detect facial keypoints
2. Сaffe-regression examples ,Kaggle face keypoint detection
Базовые источники
rnd.azoft.com
Читайте подробный обзор проекта по локализации объектов на изображении
методом свёрточных нейронных сетей.

Más contenido relacionado

Destacado

Лекция 3 Сегментация
Лекция 3 СегментацияЛекция 3 Сегментация
Лекция 3 Сегментация
Victor Kulikov
 
Анализ изображений и видео. Построение признаков и сравнение изображений: ло...
Анализ изображений и видео. Построение признаков и сравнение изображений: ло...Анализ изображений и видео. Построение признаков и сравнение изображений: ло...
Анализ изображений и видео. Построение признаков и сравнение изображений: ло...
Yandex
 
Hierarchical Object Detection with Deep Reinforcement Learning
Hierarchical Object Detection with Deep Reinforcement LearningHierarchical Object Detection with Deep Reinforcement Learning
Hierarchical Object Detection with Deep Reinforcement Learning
Universitat Politècnica de Catalunya
 
Анализ и обработка изображений. Классификация изображений и распознавание об...
Анализ и обработка изображений. Классификация изображений и распознавание об...Анализ и обработка изображений. Классификация изображений и распознавание об...
Анализ и обработка изображений. Классификация изображений и распознавание об...
Yandex
 
Как превратить свою сеть в систему информационной безопасности
Как превратить свою сеть в систему информационной безопасности Как превратить свою сеть в систему информационной безопасности
Как превратить свою сеть в систему информационной безопасности
Cisco Russia
 

Destacado (17)

Лекция 3 Сегментация
Лекция 3 СегментацияЛекция 3 Сегментация
Лекция 3 Сегментация
 
документы для участия в тендере
документы для участия в тендередокументы для участия в тендере
документы для участия в тендере
 
Анализ изображений и видео. Построение признаков и сравнение изображений: ло...
Анализ изображений и видео. Построение признаков и сравнение изображений: ло...Анализ изображений и видео. Построение признаков и сравнение изображений: ло...
Анализ изображений и видео. Построение признаков и сравнение изображений: ло...
 
Лекция 8
Лекция 8Лекция 8
Лекция 8
 
Машинное обучение для интеллектуализации ваших приложений
Машинное обучение  для интеллектуализации ваших приложенийМашинное обучение  для интеллектуализации ваших приложений
Машинное обучение для интеллектуализации ваших приложений
 
Владивосток, форум "Рост". 20 ноября 2015
Владивосток, форум "Рост". 20 ноября 2015 Владивосток, форум "Рост". 20 ноября 2015
Владивосток, форум "Рост". 20 ноября 2015
 
Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства" Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства"
 
Л8 Django. Дополнительные темы
Л8 Django. Дополнительные темыЛ8 Django. Дополнительные темы
Л8 Django. Дополнительные темы
 
Hierarchical Object Detection with Deep Reinforcement Learning
Hierarchical Object Detection with Deep Reinforcement LearningHierarchical Object Detection with Deep Reinforcement Learning
Hierarchical Object Detection with Deep Reinforcement Learning
 
Анализ и обработка изображений. Классификация изображений и распознавание об...
Анализ и обработка изображений. Классификация изображений и распознавание об...Анализ и обработка изображений. Классификация изображений и распознавание об...
Анализ и обработка изображений. Классификация изображений и распознавание об...
 
Git-flow workflow and pull-requests
Git-flow workflow and pull-requestsGit-flow workflow and pull-requests
Git-flow workflow and pull-requests
 
Лекция №11 "Основы нейронных сетей"
Лекция №11 "Основы нейронных сетей" Лекция №11 "Основы нейронных сетей"
Лекция №11 "Основы нейронных сетей"
 
Поиск похожих изображений при помощи нейросетей. Виктор Лемпицкий, Артем Баб...
 Поиск похожих изображений при помощи нейросетей. Виктор Лемпицкий, Артем Баб... Поиск похожих изображений при помощи нейросетей. Виктор Лемпицкий, Артем Баб...
Поиск похожих изображений при помощи нейросетей. Виктор Лемпицкий, Артем Баб...
 
Введение в архитектуры нейронных сетей / Григорий Сапунов (Intento)
Введение в архитектуры нейронных сетей / Григорий Сапунов (Intento)Введение в архитектуры нейронных сетей / Григорий Сапунов (Intento)
Введение в архитектуры нейронных сетей / Григорий Сапунов (Intento)
 
Сеть как средство защиты и реагирования на угрозы
Сеть как средство защиты и реагирования на угрозыСеть как средство защиты и реагирования на угрозы
Сеть как средство защиты и реагирования на угрозы
 
Как превратить свою сеть в систему информационной безопасности
Как превратить свою сеть в систему информационной безопасности Как превратить свою сеть в систему информационной безопасности
Как превратить свою сеть в систему информационной безопасности
 
Deep Learning - Convolutional Neural Networks
Deep Learning - Convolutional Neural NetworksDeep Learning - Convolutional Neural Networks
Deep Learning - Convolutional Neural Networks
 

Руководство по обучению сверточной нейронной сети для поиска ключевых точек объекта

  • 1. rnd.azoft.com Руководство по обучению сверточной нейронной сети для поиска ключевых точек объекта
  • 2. В нашем руководстве вы узнаете, как получить модель свёрточной нейронной сети для поиска ключевых точек объекта на изображении. В качестве объекта исследования нами были выбраны автомобильные номера. Представленное руководство также может быть использовано для поиска других объектов. О проекте 1. Выбор изображений для обучения сети. 2. Разметка ключевых точек. 3. Аугментация. 4. Упаковка наборов данных в формат HDF5. 5. Обучение свёрточной нейронной сети. 6. Выводы. 7. Базовые источники. План rnd.azoft.com
  • 3. rnd.azoft.com 1. Выбор изображений для обучения 1. Выбор изображений для обучения Необходимо взять набор данных из оригинальных (неаугментированных) изображений общим числом от нескольких сотен до нескольких тысяч. Чем больше, тем лучше.
  • 4. 2. Разметка ключевых точек 2. Разметка ключевых точек Если ключевые точки на оригинальном изображении не размечены, то необходимо их разметить. То есть сохранить координаты ключевых точек изображений в **.txt или **.csv файл. Каждой координате соответствуют два значения по оси абсцисс и по оси ординат. ВАЖНО! Если вы решили размечать несколько ключевых точек, то размечайте их в одной последовательности. Например, при разметке автомобильного номера вы разметили первой точкой — левый верхний угол номера, второй точкой — правый верхний угол, третьей точкой — левый нижний угол, четвертой точкой — правый нижний угол номера. В дальнейшем вам следует сохранять последовательность разметки. rnd.azoft.com
  • 5. rnd.azoft.com 3. Аугментация 3. Аугментация Для хорошего обучения необходимо иметь набор данных с количеством от нескольких тысяч до десятков тысяч изображений. Если оригинального набора данных недостаточно, то необходимо сделать аугментацию изображений. ВАЖНО! Прежде чем делать аугментацию, разбейте выборку на тренировочную и валидационную. Чтобы в последующем не оказалось так, что изображения, полученные путем аугментации из одного, оказались и в тестовой, и в валидационной выборке. Если это не сделать, то отследить переобучение модели будет весьма тяжело.
  • 6. rnd.azoft.com 3. Аугментация Методы, которые можно использовать для аугментации: ● Поворот относительно центра; ● Искажение перспективы; ● Изменение масштаба; ● Сдвиги; ● Соль и перец; ● Размытие и увеличение резкости; ● Эрозия и дилатация.
  • 7. rnd.azoft.com 4. Упаковка наборов данных в формат HDF5 4. Упаковка наборов данных в формат HDF5 Для того чтобы подавать набор данных в Caffe, необходимо упаковать этот набор в формат HDF5. Значения пикселей следует нормализовать от 0 до 1. А значения размеченных координат следует нормализовать от -1 до 1. ВАЖНО: ● Если производилась аугментация изображений, то изображения в HDF5 файле должны следовать в случайном порядке. ● После упаковки проверьте HDF5 файл при помощи утилиты HDF5 Viewer. Данные о пикселях должны быть от 0 до 1, координаты должны быть от -1 до 1, а изображения должны быть не искажены.
  • 8. rnd.azoft.com 4. Упаковка наборов данных в формат HDF5
  • 9. rnd.azoft.com 4. Упаковка наборов данных в формат HDF5
  • 10. rnd.azoft.com 5. Обучение свёрточной нейронной сети 5. Обучение свёрточной нейронной сети Для обучения рекомендуется использовать метод оптимизации ADAM. Входной слой должен выглядеть так: layer { name: "data" type: "HDF5Data" top: "data" top: "label" hdf5_data_param { source: "/home/user/caffe/examples/regression/regression_train.txt" batch_size: 256 } }
  • 11. rnd.azoft.com 5. Обучение свёрточной нейронной сети Количество выходов на выходном слое должно быть равно количеству значений, описывающих координаты. Следует использовать слой ошибки EuclideanLoss. layer { name: "ipout" type: "InnerProduct" bottom: "ip01" top: "ipout" inner_product_param { num_output: 8 weight_filler { type: "msra" } bias_filler { type: "constant" } } } layer { name: "loss" type: "EuclideanLoss" bottom: "ipout" bottom: "label" top: "loss" }
  • 12. Обучить качественную и быструю сеть с нескольких попыток представляется маловероятным. У нас ушло около 20 попыток, прежде чем мы получили удовлетворительный результат. Если у вас есть какие-то вопросы по идее, реализации или коду, будем рады ответить на них в коментариях под статьёй. Выводы За основу были взяты работы: 1. Using convolutional neural nets to detect facial keypoints 2. Сaffe-regression examples ,Kaggle face keypoint detection Базовые источники rnd.azoft.com Читайте подробный обзор проекта по локализации объектов на изображении методом свёрточных нейронных сетей.