Глубокое обучение - это отрасль машинного обучения, которая учит компьютеры делать то, что приходит естественным образом к людям: учиться на опыте. Алгоритмы машинного обучения используют вычислительные методы для «изучения» информации непосредственно из данных, не опираясь на заранее определенное уравнение в качестве модели. Глубокое обучение особенно подходит для распознавания изображений, что важно для решения таких проблем, как распознавание лиц, обнаружение движения и многие передовые технологии помощи водителю, такие как автономное вождение, обнаружение полосы движения, обнаружение пешеходов и автономная парковка.
Deep Learning Toolbox™ предоставляет простые команды MATLAB ® для создания и соединения слоев глубокой нейронной сети. Примеры и заранее обученные сети позволяют легко использовать MATLAB для глубокого обучения, даже без знания современных алгоритмов компьютерного зрения или нейронных сетей.
Бесплатное практическое введение в практические методы глубокого обучения см. в разделе Глубокое обучение Onramp.
Что вы хотите сделать? | Подробнее |
---|---|
Выполнение обучения переносу для точной настройки сети с использованием данных | Начните углубленное обучение быстрее с помощью трансферного обучения Совет Точная настройка предварительно обученной сети для изучения новой задачи обычно намного быстрее и проще, чем обучение новой сети.
|
Классифицировать изображения по предварительно подготовленным сетям | Предварительно обученные глубокие нейронные сети |
Создание новой глубокой нейронной сети для классификации или регрессии | |
Изменение размеров, поворот или предварительная обработка изображений для обучения или прогнозирования | Предварительная обработка изображений для глубокого обучения |
Маркировка данных изображения автоматически на основе имен папок или в интерактивном режиме с помощью приложения | Сеть поездов для классификации изображений Image Labeler (инструментарий компьютерного зрения) |
Создание сетей глубокого обучения для данных последовательности и временных рядов. | Классификация последовательностей с использованием глубокого обучения Прогнозирование временных рядов с использованием глубокого обучения |
Классификация каждого пикселя изображения (например, дороги, автомобиля, пешехода) | Начало работы с семантической сегментацией с помощью глубокого обучения (панель инструментов компьютерного зрения) |
Обнаружение и распознавание объектов на изображениях | Распознавание, обнаружение объектов и семантическая сегментация (панель инструментов компьютерного зрения) |
Классифицировать текстовые данные | Классификация текстовых данных с помощью глубокого обучения |
Классифицировать аудиоданные для распознавания речи | Распознавание речевых команд с помощью глубокого обучения |
Визуализация изученных сетей функций | |
Обучение на CPU, GPU, нескольких графических процессорах параллельно на рабочем столе или на кластерах в облаке и работа с наборами данных, слишком большими для размещения в памяти | Глубокое обучение с помощью больших данных о графических процессорах и параллельно |
Дополнительные сведения о областях приложений для глубокого обучения, включая автоматизированное вождение, см. в разделе Приложения для глубокого обучения.
Чтобы выбрать использование предварительно обученной сети или создание новой глубокой сети, рассмотрим сценарии в этой таблице.
Использование предварительно обученной сети для обучения трансферу | Создание новой глубокой сети | |
---|---|---|
Данные обучения | От сотен до тысяч помеченных изображений (небольших) | От тысяч до миллионов помеченных изображений |
Вычисление | Умеренное вычисление (графический процессор опционально) | Интенсивные вычисления (для скорости требуется графический процессор) |
Время обучения | От секунд до минут | От дней до недель для реальных проблем |
Точность модели | Хорошо, зависит от заранее подготовленной модели | Высокая, но может перенапряжаться в небольшие наборы данных |
Дополнительные сведения см. в разделе Выбор сетевой архитектуры.
Глубокое обучение использует нейронные сети для изучения полезных представлений функций непосредственно из данных. Нейронные сети объединяют несколько нелинейных обрабатывающих слоев, используя простые элементы, работающие параллельно и вдохновленные биологическими нервными системами. Модели глубокого обучения могут достигать самой современной точности в классификации объектов, иногда превышая производительность на уровне человека.
Вы обучаете модели, используя большой набор маркированных данных и нейронных сетевых архитектур, которые содержат много уровней, обычно включая некоторые сверточные уровни. Обучение этих моделей требует больших вычислений, и вы обычно можете ускорить обучение, используя высокопроизводительный графический процессор. На этой диаграмме показано, как сверточные нейронные сети объединяют слои, которые автоматически изучают особенности многих изображений для классификации новых изображений.
Многие приложения для глубокого обучения используют файлы изображений, а иногда и миллионы файлов изображений. Для эффективного доступа ко многим файлам изображений для глубокого обучения MATLAB предоставляет imageDatastore
функция. Эта функция используется для:
Автоматическое считывание пакетов изображений для более быстрой обработки в приложениях машинного обучения и компьютерного зрения
Импорт данных из коллекций изображений, слишком больших для размещения в памяти
Автоматически маркировать данные изображения на основе имен папок
В этом примере показано, как использовать глубокое обучение для идентификации объектов на веб-камере в режиме реального времени, используя только 10 строк кода MATLAB. Попробуйте попробовать пример, чтобы понять, как просто начать с глубокого обучения в MATLAB.
При необходимости выполните эти команды для загрузки, подключитесь к веб-камере и получите предварительно обученную нейронную сеть.
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 категориям объектов (например, клавиатура, мышь, кофейная кружка, карандаш и многие животные).
Выполните следующий код для отображения и классификации изображений в реальном времени. Направьте веб-камеру на объект, и нейронная сеть сообщит, какой класс объекта, по ее мнению, показывает веб-камера. Она будет продолжать классифицировать изображения до тех пор, пока вы не нажмете клавиши 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
для работы с пакетами данных без необходимости в кластере машин. Однако при наличии кластера может быть полезно перенести код в хранилище данных, а не перемещать большие объемы данных.
Дополнительные сведения об аппаратном обеспечении глубокого обучения и параметрах памяти см. в разделе Глубокое обучение с большими данными о графических процессорах и параллельных процессорах.