exponenta event banner

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

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

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

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

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

Что вы хотите сделать?Подробнее
Выполнение обучения переносу для точной настройки сети с использованием данных

Начните углубленное обучение быстрее с помощью трансферного обучения

Совет

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

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

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

Конволюционная нейронная сеть поезда для регрессии

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

Сеть поездов для классификации изображений

Image Labeler (инструментарий компьютерного зрения)

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

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

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

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

Изображения Deep Dream с помощью GoogLeNet

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

Обучение на CPU, GPU, нескольких графических процессорах параллельно на рабочем столе или на кластерах в облаке и работа с наборами данных, слишком большими для размещения в памятиГлубокое обучение с помощью больших данных о графических процессорах и параллельно

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

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

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

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

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

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

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

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

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

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

Попробуйте глубокое обучение в 10 строках кода MATLAB

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

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

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

    Если необходимо установить webcam и alexnet Add-on, появится сообщение от каждой функции со ссылкой, которая поможет загрузить бесплатные Add-On Explorer. Кроме того, см. модель инструментария глубокого обучения для AlexNet Network и пакет поддержки MATLAB для веб-камер USB.

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

  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.

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

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

Начните углубленное обучение быстрее с помощью трансферного обучения

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

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

Обучение трансферу позволяет:

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

  • Перенести обучение быстрее и проще, чем обучение новой сети

  • Сокращение времени обучения и размера набора данных

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

Интерактивный пример см. в разделе Transfer Learning with Deep Network Designer.

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

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

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

Пример см. в разделе Извлечение элементов изображения с помощью предварительно обученной сети.

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

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

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

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

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

Связанные темы