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

Azoft
AzoftAzoft
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
Читайте подробный обзор проекта по локализации объектов на изображении
методом свёрточных нейронных сетей.
1 of 12

Recommended

Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обуче... by
Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обуче...Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обуче...
Классификация изображений с помощью нейронных сетей. Сжатие и ускорение обуче...Yandex
5.7K views49 slides
Классификация сигналов головного мозга для нейрокомпьютерного интерфейса by
Классификация сигналов головного мозга для нейрокомпьютерного интерфейсаКлассификация сигналов головного мозга для нейрокомпьютерного интерфейса
Классификация сигналов головного мозга для нейрокомпьютерного интерфейсаAzoft
1.5K views18 slides
Hейронные сети на практике — R&D, Azoft by
Hейронные сети на практике — R&D, AzoftHейронные сети на практике — R&D, Azoft
Hейронные сети на практике — R&D, AzoftAzoft
2.7K views54 slides
Введение в искусственные нейронные сети by
Введение в искусственные нейронные сетиВведение в искусственные нейронные сети
Введение в искусственные нейронные сетиIvan Miniailenko
514 views32 slides
Нейронные сети: практическое применение / Наталия Ефремова (NTechLab) by
Нейронные сети: практическое применение / Наталия Ефремова (NTechLab)Нейронные сети: практическое применение / Наталия Ефремова (NTechLab)
Нейронные сети: практическое применение / Наталия Ефремова (NTechLab)Ontico
4.7K views59 slides
Deep Learning with TensorFlow: Understanding Tensors, Computations Graphs, Im... by
Deep Learning with TensorFlow: Understanding Tensors, Computations Graphs, Im...Deep Learning with TensorFlow: Understanding Tensors, Computations Graphs, Im...
Deep Learning with TensorFlow: Understanding Tensors, Computations Graphs, Im...Altoros
23.8K views41 slides

More Related Content

Viewers also liked

Лекция 3 Сегментация by
Лекция 3 СегментацияЛекция 3 Сегментация
Лекция 3 СегментацияVictor Kulikov
3.1K views59 slides
документы для участия в тендере by
документы для участия в тендередокументы для участия в тендере
документы для участия в тендереГригорий Ювченко
24.3K views19 slides
Анализ изображений и видео. Построение признаков и сравнение изображений: ло... by
Анализ изображений и видео. Построение признаков и сравнение изображений: ло...Анализ изображений и видео. Построение признаков и сравнение изображений: ло...
Анализ изображений и видео. Построение признаков и сравнение изображений: ло...Yandex
12.1K views49 slides
Лекция 8 by
Лекция 8Лекция 8
Лекция 8Ivan Stolyarov
645 views23 slides
Машинное обучение для интеллектуализации ваших приложений by
Машинное обучение  для интеллектуализации ваших приложенийМашинное обучение  для интеллектуализации ваших приложений
Машинное обучение для интеллектуализации ваших приложенийPAY2 YOU
75.3K views40 slides
Владивосток, форум "Рост". 20 ноября 2015 by
Владивосток, форум "Рост". 20 ноября 2015 Владивосток, форум "Рост". 20 ноября 2015
Владивосток, форум "Рост". 20 ноября 2015 Fedor Ovchinnikov
1.7K views66 slides

Viewers also liked(17)

Лекция 3 Сегментация by Victor Kulikov
Лекция 3 СегментацияЛекция 3 Сегментация
Лекция 3 Сегментация
Victor Kulikov3.1K views
Анализ изображений и видео. Построение признаков и сравнение изображений: ло... by Yandex
Анализ изображений и видео. Построение признаков и сравнение изображений: ло...Анализ изображений и видео. Построение признаков и сравнение изображений: ло...
Анализ изображений и видео. Построение признаков и сравнение изображений: ло...
Yandex12.1K views
Машинное обучение для интеллектуализации ваших приложений by PAY2 YOU
Машинное обучение  для интеллектуализации ваших приложенийМашинное обучение  для интеллектуализации ваших приложений
Машинное обучение для интеллектуализации ваших приложений
PAY2 YOU75.3K views
Владивосток, форум "Рост". 20 ноября 2015 by Fedor Ovchinnikov
Владивосток, форум "Рост". 20 ноября 2015 Владивосток, форум "Рост". 20 ноября 2015
Владивосток, форум "Рост". 20 ноября 2015
Fedor Ovchinnikov1.7K views
Лекция №8 "Методы снижения размерности пространства" by Technosphere1
Лекция №8 "Методы снижения размерности пространства" Лекция №8 "Методы снижения размерности пространства"
Лекция №8 "Методы снижения размерности пространства"
Technosphere11.8K views
Л8 Django. Дополнительные темы by Technosphere1
Л8 Django. Дополнительные темыЛ8 Django. Дополнительные темы
Л8 Django. Дополнительные темы
Technosphere1650 views
Анализ и обработка изображений. Классификация изображений и распознавание об... by Yandex
Анализ и обработка изображений. Классификация изображений и распознавание об...Анализ и обработка изображений. Классификация изображений и распознавание об...
Анализ и обработка изображений. Классификация изображений и распознавание об...
Yandex17.8K views
Лекция №11 "Основы нейронных сетей" by Technosphere1
Лекция №11 "Основы нейронных сетей" Лекция №11 "Основы нейронных сетей"
Лекция №11 "Основы нейронных сетей"
Technosphere11.9K views
Поиск похожих изображений при помощи нейросетей. Виктор Лемпицкий, Артем Баб... by Yandex
 Поиск похожих изображений при помощи нейросетей. Виктор Лемпицкий, Артем Баб... Поиск похожих изображений при помощи нейросетей. Виктор Лемпицкий, Артем Баб...
Поиск похожих изображений при помощи нейросетей. Виктор Лемпицкий, Артем Баб...
Yandex1.4K views
Введение в архитектуры нейронных сетей / Григорий Сапунов (Intento) by Ontico
Введение в архитектуры нейронных сетей / Григорий Сапунов (Intento)Введение в архитектуры нейронных сетей / Григорий Сапунов (Intento)
Введение в архитектуры нейронных сетей / Григорий Сапунов (Intento)
Ontico3.3K views
Сеть как средство защиты и реагирования на угрозы by Cisco Russia
Сеть как средство защиты и реагирования на угрозыСеть как средство защиты и реагирования на угрозы
Сеть как средство защиты и реагирования на угрозы
Cisco Russia 742 views
Как превратить свою сеть в систему информационной безопасности by Cisco Russia
Как превратить свою сеть в систему информационной безопасности Как превратить свою сеть в систему информационной безопасности
Как превратить свою сеть в систему информационной безопасности
Cisco Russia 1.5K views
Deep Learning - Convolutional Neural Networks by Christian Perone
Deep Learning - Convolutional Neural NetworksDeep Learning - Convolutional Neural Networks
Deep Learning - Convolutional Neural Networks
Christian Perone71.4K views

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

  • 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 Читайте подробный обзор проекта по локализации объектов на изображении методом свёрточных нейронных сетей.