• Модель сегментации определяет принадлежность отдельных пикселей или вокселей к определенному классу. Этим сегментация отличается от классификации, которая работает на уровне всего изображения.
• Архитектура U-Net в свое время была революционной архитектурой для задач сегментации.
• Используя сегментацию с последующей классификацией, мы можем реализовать обнаружение объектов, не предъявляя слишком серьезных требований к данным и вычислениям.
• Наивные подходы к 3D-сегментации могут привести к быстрому использованию слишком большого объема оперативной памяти у ГП текущего поколения. Ограничение объема данных, передаваемых модели, может помочь снизить затраты оперативной памяти.
• Можно обучать модель сегментации на кадрированных изображениях, одновременно проверяя полноценные срезы изображения. Эта гибкость может оказаться полезна с точки зрения балансировки классов.
• Взвешивание потерь позволяет выделить значимость потерь определенных классов или подмножеств обучающих данных, чтобы отклонить поведение модели в нужную сторону. Этот механизм, вкупе с балансировкой классов, является полезным инструментом для регулировки производительности модели.
• TensorBoard может отображать 2D-изображения, созданные во время обучения, и сохранять историю изменений моделей в ходе обучения. Эту возможность используют для визуального отслеживания изменений в выходных данных модели по мере прохождения обучения.
• Параметры модели можно сохранить на диск и загрузить обратно, чтобы воссоздать ранее сохраненную модель. Точная реализация модели при этом может даже быть другой, если параметры старой и новой модели в точности соответствуют друг другу.
• Бинарные метки и пороговое значение бинарной классификации разделили исходный набор данных на четыре квадранта: истинно положительные, истинно отрицательные, ложноотрицательные и ложноположительные. Эти четыре параметра лежат в основе метрик эффективности, которые мы ввели.
• Отклик — способность модели максимизировать истинно положительные результаты. Положительная классификация каждого элемента гарантирует идеальный отклик, поскольку все правильные ответы будут отмечены, но при этом снижается точность.
• Точность — способность модели минимизировать ложные срабатывания. Если не выбрать ничего, то это гарантирует идеальную точность, поскольку неправильных ответов не было, но также свидетельствует о плохом отклике.
• Метрика F1 объединяет точность и полноту в единую метрику, которая описывает производительность модели. Мы используем метрику F1, чтобы определить, какое влияние изменения в алгоритме обучения или модели оказывают на производительность.
• Балансировка обучающего набора до равного количества положительных и отрицательных элементов во время обучения может привести к улучшению работы модели (определяемой как наличие положительной, увеличивающейся метрики F1).
• Дополнение данных — это взятие имеющихся реальных данных и такое их изменение, чтобы полученный дополненный элемент нетривиально отличался от исходного, но оставался репрезентативным для элементов того же класса. Это позволяет избежать переобучения в случаях, когда данные ограничены.
• К общим стратегиям дополнения данных относят изменение ориентации, зеркальное отражение, изменение масштаба, смещение и добавление шума. В зависимости от особенностей проекта, могут использоваться и другие, более конкретные стратегии.
Сравним ложноотрицательные результаты с истинно отрицательными: это неинтересные события, которые классифицированы правильно
Ложноотрицательный результат — событие, которое классифицируется системой как не представляющее интереса или не относящееся к желаемому классу, однако на самом деле является важным.
Сравним ложноположительный результат с истинно положительным: это случай, когда интересующее нас событие классифицировано правильно.
Ложноположительный результат — событие, которое нас теоретически интересует или относится к желаемому классу (то есть именно то, что мы пытаемся обнаружить), но при ближайшем рассмотрении оказывается неважным
• Свертки могут использоваться как линейные операции сети прямого распространения, обрабатывающей изображения. Благодаря сверткам получаются сети с меньшим числом параметров, использующие локальность и обладающие инвариантностью относительно сдвига.
• Размещение нескольких операций свертки друг за другом и использование максимального объединения между ними дает эффект применения сверток с учетом пространственных отношений в больших частях входного изображения по мере роста глубины.
• Все подклассы nn.Module могут рекурсивно собирать и возвращать параметры — свои и дочерние. Эту методику можно использовать для их подсчета, передачи оптимизатору или просмотра их значений.
• Функциональный API предоставляет модули, не зависящие от хранения внутреннего состояния. Он применяется для операций, где не хранятся параметры и, следовательно, не происходит обучения.
• Обученные параметры модели можно сохранить на диск, а затем загрузить обратно при помощи одной строки кода для каждой из этих операций.
Понижающая дискретизация может происходить по-разному. Уменьшение изображения вдвое эквивалентно генерации одного пикселя на выходе на основе четырех соседних пикселей на входе. Как именно вычислять значение на выходе по значениям на входе — наше дело. Можно:
• усреднять значения четырех входных пикселей — изначально весьма распространенный подход под названием «усредняющая субдискретизация» (average pooling), несколько утративший популярность в последнее время;
• брать максимум из значений четырех входных пикселей — в настоящее время чаще всего используется именно этот подход: субдискретизация с выбором максимального значения (max pooling). Его недостаток в том, что отбрасываются три четверти данных;
• шаговая свертка (strided convolution), при которой учитывается лишь каждый N-й пиксель — свертка 3 × 4 с шагом 2 позволяет учесть значения всех пикселей предыдущего слоя. Судя по публикациям, этот подход весьма перспективен, хотя и не вытеснил пока что субдискретизацию с выбором максимального значения.
Машинное зрение — одна из самых обширных сфер применения глубокого обучения.
• Существует несколько общедоступных наборов изображений с описаниями; ко многим из них можно получить доступ через torchvision.
• Классы Dataset и DataLoader — это простые, но эффективные абстракции для загрузки наборов данных и выборки из них данных.
• Для задач классификации можно получить значения, которые могут восприниматься как вероятности с помощью многомерной логистической функции на выходе сети. Идеальная функция потерь для классификации в этом случае получается путем подачи выходного сигнала многомерной логистической функции на вход неотрицательной логарифмической функции правдоподобия. В PyTorch сочетание многомерной логистической функции и подобной функции потерь называется перекрестной энтропией.
• Ничто не мешает нам обрабатывать изображения как векторы значений пикселей с помощью полносвязной сети, подобно любым другим числовым данным. Однако при этом намного сложнее извлечь выгоду из пространственных взаимосвязей в данных.
• Создавать простые модели можно с помощью nn.Sequential.
• Нейронные сети могут автоматически адаптироваться к поставленной задаче.
• Нейронные сети обеспечивают возможность удобного доступа к аналитически выраженным производным функции потерь относительно любого из параметров модели, что позволяет очень эффективно обновлять эти параметры. Благодаря механизму автоматического дифференцирования PyTorch с легкостью предоставляет подобные производные.
• Функции активации, в дополнение к линейным преобразованиям, позволяют нейронным сетям аппроксимировать сильно нелинейные функции, оставляя их при этом достаточно простыми для оптимизации.
• Модуль nn, вместе со стандартной библиотекой для работы с тензорами, обеспечивает все необходимое для создания нейронных сетей.
• Чтобы выявить переобучение, необходимо отделять обучающий набор точек данных от проверочного набора. Не существует единого рецепта борьбы с переобучением, но для начала имеет смысл найти дополнительные или более разнообразные данные, а также ограничиться более простыми моделями.
• Всем, кто занимается исследованием данных, следует постоянно визуализировать их.