Глубокое обучение в MATLAB

Что такое глубокое обучение?

Deep learning является ветвью машинного обучения, которое учит компьютеры делать то, что прибывает естественно к людям: учитесь на опыте. Алгоритмы машинного обучения используют вычислительные методы, чтобы “узнать” об информации непосредственно из данных, не используя предопределенное уравнение как модель. Глубокое обучение особенно подходит для распознавания изображений, которое важно для решения задач, таких как распознавание лиц, обнаружение движения и много усовершенствованных технологий помощи драйвера, таких как автономное управление автомобилем, обнаружение маршрута, пешеходное обнаружение и автономная парковка.

Deep Learning Toolbox™ обеспечивает простой MATLAB® команды для создания и соединения слоев глубокой нейронной сети. Примеры и предварительно обученные сети дают возможность использовать MATLAB для глубокого обучения, даже без ведома усовершенствованных алгоритмов компьютерного зрения или нейронных сетей.

Для свободного практического введения в практические методы глубокого обучения смотрите Глубокое обучение Onramp.

Что вы хотите сделать?Узнать больше
Используйте обучение с переносом, чтобы подстроить сеть с вашими данными

Запустите глубокое обучение быстрее Используя передачу обучения

Совет

Подстройка предварительно обученной сети, чтобы изучить новую задачу обычно намного быстрее и легче, чем обучение новой сети.

Классифицируйте изображения с предварительно обученными сетямиПредварительно обученные глубокие нейронные сети
Создайте новую глубокую нейронную сеть для классификации или регрессии

Создайте простую сеть глубокого обучения для классификации

Обучите сверточную нейронную сеть регрессии

Измените размер, вращайте или предварительно обработайте изображения для обучения или предсказанияПредварительно обработайте изображения для глубокого обучения
Пометьте свои данные изображения автоматически на основе имен папок или в интерактивном режиме использования приложения

Обучите сеть для классификации изображений

Image Labeler (Computer Vision Toolbox)

Создайте нейронные сети для глубокого обучения для последовательности и данных временных рядов.

Классификация последовательностей Используя глубокое обучение

Прогнозирование временных рядов Используя глубокое обучение

Классифицируйте каждый пиксель изображения (например, дорога, автомобиль, пешеход)Начало работы с Семантической Сегментацией Используя глубокое обучение (Computer Vision Toolbox)
Обнаружьте и распознайте объекты в изображенияхРаспознавание, обнаружение объектов и Семантическая Сегментация (Computer Vision Toolbox)
Классифицируйте текстовые данные Классифицируйте текстовые данные Используя глубокое обучение
Классифицируйте аудиоданные для распознавания речиРаспознание речевых команд с использованием глубокого обучения
Визуализация свойств обученной сети

Глубокие изображения мечты Используя GoogLeNet

Визуализируйте активации сверточной нейронной сети

Обучайтесь на центральном процессоре, графическом процессоре, нескольких графических процессорах, параллельно на вашем рабочем столе или в кластерах в облаке, и работайте с наборами данных, слишком большими, чтобы уместиться в памяти

Увеличьте глубокое обучение параллельно на графических процессорах, и в облаке

Глубокое обучение для Больших данных

Чтобы узнать больше об областях применения глубокого обучения, включая автоматизированное управление, смотрите Применение глубокого обучения.

Чтобы выбрать, использовать ли предварительно обученную сеть или создать новую глубокую сеть, рассмотрите сценарии в этой таблице.

 Используйте предварительно обученную сеть для передачи обученияСоздайте новую глубокую сеть
Обучающие данныеСотни к тысячам помеченных (маленьких) изображенийТысячи к миллионам помеченных изображений
РасчетУмеренный расчет (дополнительный графический процессор)Вычислите интенсивный (требует графического процессора для скорости),
Учебное времяСекунды к минутамДни к неделям для настоящих проблем
Точность моделиХороший, зависит от предварительно обученной моделиВысоко, но может сверхсоответствовать к небольшим наборам данных

Для получения дополнительной информации смотрите, Выбирают Network Architecture.

Глубокое обучение использует нейронные сети, чтобы изучить полезные представления функций непосредственно из данных. Нейронные сети комбинируют несколько нелинейных слоев обработки, с помощью простых элементов, действующих параллельно и вдохновленный биологическими нервными системами. Модели глубокого обучения могут достигнуть современной точности в предметной классификации, иногда чрезмерной эффективности человеческого уровня.

Вы обучаете модели с помощью большого набора маркированных данных и архитектур нейронной сети, которые содержат много слоев, обычно включая некоторые сверточные слои. Обучение эти модели в вычислительном отношении интенсивны и можно обычно ускорять обучение при помощи высокоэффективного графического процессора. Эта схема показывает, как сверточные нейронные сети комбинируют слои, которые автоматически узнают о функциях из многих изображений, чтобы классифицировать новые изображения.

Много применения глубокого обучения используют файлы изображений, и иногда миллионы файлов изображений. Чтобы получить доступ ко многим файлам изображений для глубокого обучения эффективно, MATLAB обеспечивает imageDatastore функция. Используйте эту функцию для:

  • Автоматически считайте пакеты изображений для более быстрой обработки в приложениях компьютерного зрения и машинном обучении

  • Импортируйте данные от коллекций изображений, которые являются слишком большими, чтобы уместиться в памяти

  • Пометьте свои данные изображения автоматически на основе имен папок

Попробуйте Глубокое Обучение в 10 строках КОДА MATLAB

В этом примере показано, как использовать глубокое обучение, чтобы идентифицировать объекты на веб-камере реального времени с помощью только 10 линий кода MATLAB. Попробуйте пример, чтобы видеть, как простой это должно начать с глубоким обучением в MATLAB.

  1. Запустите эти команды, чтобы получить загрузки в случае необходимости, соединиться с веб-камерой и получить предварительно обученную нейронную сеть.

    camera = webcam; % Connect to the camera
    net = alexnet;   % Load the neural network

    Если необходимо установить webcam и alexnet дополнения, сообщение от каждой функции появляется со ссылкой, чтобы помочь вам загрузить свободные дополнения с помощью Add-On Explorer. В качестве альтернативы см. Модель Deep Learning Toolbox для Сети AlexNet и Пакет поддержки MATLAB для Веб-камер USB.

    После того, как вы установите Модель Deep Learning Toolbox для Сети AlexNet, можно использовать его, чтобы классифицировать изображения. AlexNet является предварительно обученной сверточной нейронной сетью (CNN), которая была обучена больше чем на миллионе изображений и может классифицировать изображения в 1 000 категорий объектов (например, клавиатура, мышь, кофейная кружка, карандаш и многие животные).

  2. Запустите следующий код, чтобы показать и классифицировать живые изображения. Укажите веб-камеру на объект и отчеты нейронной сети, какой класс объекта она думает, что веб-камера показывает. Это продолжит классифицировать изображения, пока вы не нажмете Ctrl +C. Код изменяет размер изображения для сетевого использования imresize.

    while true
        im = snapshot(camera);       % Take a picture
        image(im);                   % Show the picture
        im = imresize(im,[227 227]); % Resize the picture for alexnet
        label = classify(net,im);    % Classify the picture
        title(char(label));          % Show the class label
        drawnow
    end

    В этом примере сеть правильно классифицирует кофейную кружку. Экспериментируйте с объектами в своей среде, насколько точный сеть.

    Чтобы посмотреть ролик этого примера, смотрите Глубокое обучение в 11 Линиях кода MATLAB.

    Чтобы изучить, как расширить этот пример и показать множество вероятности классов, смотрите, Классифицируют Изображения Веб-камеры Используя Глубокое обучение.

    Для следующих шагов в глубоком обучении можно использовать предварительно обученную сеть для других задач. Решите новые задачи классификации на своих данных изображения с передачей обучения или извлечением признаков. Для примеров смотрите, Запускают Глубокое обучение Быстрее Используя Передачу обучения и Обучают Классификаторы, использующие Функции, Извлеченные из Предварительно обученных сетей. Чтобы попробовать другие предварительно обученные сети, смотрите Предварительно обученные Глубокие нейронные сети.

Запустите глубокое обучение быстрее Используя передачу обучения

Передача обучения обычно используется в применении глубокого обучения. Можно взять предварительно обученную сеть и использовать ее в качестве начальной точки, чтобы изучить новую задачу. Подстройка сети с передачей обучения намного быстрее и легче, чем обучение с нуля. Можно быстро заставить сеть изучить новую задачу с помощью меньшего числа учебных изображений. Преимущество передачи обучения состоит в том, что предварительно обученная сеть уже изучила богатый набор функций, которые могут быть применены к широкому спектру других подобных задач.

Например, если вы берете сеть, обученную на тысячах или миллионах изображений, можно переобучить ее для нового обнаружения объектов только с помощью сотен изображений. Можно эффективно подстроить предварительно обученную сеть с намного меньшими наборами данных, чем исходные обучающие данные. Если у вас есть очень большой набор данных, то передача обучения не может быть быстрее, чем обучение новой сети.

Передача обучения позволяет:

  • Передайте изученные функции предварительно обученной сети к новой проблеме

  • Передача обучения быстрее и легче, чем обучение новой сети

  • Уменьшайте учебное время и размер набора данных

  • Выполните глубокое обучение, не будучи должен изучить, как создать совершенно новую сеть

Для интерактивного примера смотрите Передачу обучения с Deep Network Designer.

Для программируемого примера смотрите, Обучают Нейронную сеть для глубокого обучения Классифицировать Новые Изображения.

Обучите классификаторы, использующие функции, извлеченные из предварительно обученных сетей

Извлечение признаков позволяет вам использовать степень предварительно обученных сетей, не инвестируя время и усилие в обучение. Извлечение признаков может быть самым быстрым способом использовать глубокое обучение. Вы извлекаете изученные функции из предварительно обученной сети и используете те функции, чтобы обучить классификатор, например, машина опорных векторов (SVM — требует Statistics and Machine Learning Toolbox™). Например, если SVM обучил использование alexnet может достигнуть>, 90%-я точность на вашем наборе обучения и валидации, затем подстраивающем с передачей обучения, не может стоить усилия получить некоторую дополнительную точность. Если вы выполняете подстройку на маленьком наборе данных, то вы также рискуете сверхсоответствовать. Если SVM не может достигнуть достаточно хорошей точности для вашего приложения, то подстройка стоит усилия искать более высокую точность.

Для примера смотрите, что Функции Извлечения Изображений Используют Предварительно обученную сеть.

Глубокое обучение для Больших данных на центральных процессорах, графических процессорах, параллельно, и в облаке

Нейронные сети являются по сути параллельными алгоритмами. Можно использовать в своих интересах этот параллелизм при помощи Parallel Computing Toolbox™, чтобы распределить обучение на многожильных центральных процессорах, графические блоки обработки (графические процессоры) и кластеры компьютеров с несколькими центральными процессорами и графических процессоров.

Обучение глубоких сетей чрезвычайно в вычислительном отношении интенсивно, и можно обычно ускорять обучение при помощи высокоэффективного графического процессора. Если у вас нет подходящего графического процессора, можно обучаться на одном или нескольких ядрах процессора вместо этого. Можно обучить сверточную нейронную сеть на одном графическом процессоре или центральном процессоре, или на нескольких графических процессорах или ядрах процессора, или параллельно в кластере. Используя графический процессор или параллельные опции требует Parallel Computing Toolbox.

Вам не нужны несколько компьютеров, чтобы решить задачи с помощью наборов данных, слишком больших, чтобы уместиться в памяти. Можно использовать imageDatastore функционируйте, чтобы работать с пакетами данных, не нуждаясь в кластере машин. Однако, если вы имеете кластер в наличии, может быть полезно взять ваш код к репозиторию данных вместо того, чтобы переместить большие объемы данных вокруг.

Чтобы узнать больше о глубоком обучении для больших наборов данных, смотрите Глубокое обучение для Больших данных.

Похожие темы