LINUX.ORG.RU

Про нейросети для машинного зрения

 , , ,


1

1

Тут будут некоторые рассуждения об особенностях применения нейросетей в машинном обучении. Просьба указать на неточности.

  1. Альтернативы. Алгоритмы с обучением в машинном зрении применялись давно. В основном использовался «метод опорных векторов» (SVM) и «К ближайших соседей» (KNN, где NN не имеет никакого отношения к нейросетям). По скорости обучения и требовательности к ресурсам они были намного лучше свёрточных нейросетей из популярных фрейворков. По точности были где-то наравне с нейросетями, а иногда и лучше. Основной их недостаток — необходимость предобработки изображений, выделение признаков «ручками».

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

  1. Эпохи. При обучении нейросетей используются две выборки с фото — тренировочная и тестовая. На тренировочной сеть обучается, а тестовая используется для оценки полученной точности. В каждой эпохе мы подгоняем коэффициенты так, чтобы результаты сортировки тестовой выборки становились лучше. Соответственно, на определённом этапе мы получаем так называемое «переобучение», когда мы слишком сильно подогнали решение под тестовую выборку. Номер эпохи, в которой недообучение переходит в переобучение сказать трудно. Поэтому если датасаентист берёт точность сортировки в, например, сотой эпохе и говорит, что это точность у полученной модели, то он лукавит или заблуждается. Данная точность может быть результатом переобучения. Вопрос в том, может ли быть переобучение уже во второй эпохе.

Правка: влияние тестовой выборки некорректно называть переобучением. Более точно будет говорить об «утечке данных из валидационной части».

  1. Аугментация данных. Для улучшения точности сортировки производят деформации изображений датасета. Например, мы можем повернуть или растянуть изображения. При удачной аугментации будет прирост точности. С другой стороны, работоспособность такого приёма может говорить о несовершенстве нейросетей.

Правка: аугментация помогает внедрить inductive bias в нейросеть.

  1. Кропы. Обычно для обучения нейросетей используются квадратные изображения заданного размера (кропы), в котором объект размещается оптимально. Если объект вылезает из кропа или занимает слишком мало места, то точность будет понижаться. Вторая проблема — выделение кропа из фона. При использовании альтернативных методов обучения мы можем не использовать квадратных кроп с жёстким размером. Мы можем даже использовать непрямоугольные изображения, если удалим фон. Нейросеть же «ест» объекты прямо с фоном из-за чего могут быть внесены искажения.

Правка: для выделения кропа датасаентистам может помочь YOLO.

  1. Распознавание в 3Д. Если мы сделали снимки объекта с разных сторон, то при использовании своего алгоритма мы можем воссоздать 3Д-модель (облако точек) и работать с ней. При использовании нейросетей из фреймворков мы можем оценить фото каждого ракурса отдельно как 2Д, а потом как-то усреднить. Очевидно, что такой подход не идеален. При использовании же трёхмерного облака точек нейросети будут обучаться вечно.
★★

Последнее исправление: Kogrom (всего исправлений: 1)

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

Ну и появился YOLO которым пользуются для большинства задач детекции и лейбелинга. Без его упоминания подобный материал бессмысленен.

Ну и третье - для автоматизации подготовки датасетов стали использовать LLM которые дорогие для продакшена, но дешевле людей в разметке (им только валидировать остается).

Norgat ★★★★★
()

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

Смотря о каких задачах идёт речь. Контрпример (с которого как-то и принято отсчёт начинать): https://image-net.org/challenges/LSVRC/2012/results.html

Точность Alexnet оказалась недостижимой. Да и по ресурсам классика (With all details mentioned, liblinear is able to train a model using the 20,500 training examples in less than 4 hours using 70Gb RAM.) не сказать, что блистала.

Основной их недостаток — необходимость предобработки изображений, выделение признаков «ручками».

Основной недостаток в том, что они не «скейлятся» с увеличением вычислений и данных. Inductive bias, заложенный в архитектуры классических решений, сильнее inductive bias, заложенного в архитектуру CNN. То же самое происходит и сейчас, когда свёртки постепенно уступают место трансформерам.

Хорошо описано это здесь: http://www.incompleteideas.net/IncIdeas/BitterLesson.html

С тех пор, в аргументы к Саттону добавилась ситуация в NLP: очень «простая» архитектура при грамотной постановке задачи (next token prediction) по сути поставила точку на целой области.

error_
()
Ответ на: комментарий от Norgat

Самое важное - данные. Появилось большое кол-во сайтов с готовыми размеченными датасетами.

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

upcFrost ★★★★★
()

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

Переобучение - это когда модель фактически запоминает данные. Часто происходит из-за недостаточного количества данных

anonymous
()
Ответ на: комментарий от Norgat

Самое важное - данные.

Мне не нужны чужие датасеты. У меня есть свои :)

Если уж готовишь материал

Я не готовлю материал. Я пытаюсь прояснить некоторые вещи, чтобы фильтровать статьи с ахинеей.

Ну и появился YOLO

Да. Верное замечание.

Kogrom ★★
() автор топика
Ответ на: комментарий от error_

Inductive bias, заложенный в архитектуры классических решений, сильнее inductive bias, заложенного в архитектуру CNN.

Вот это кстати ключ к пониманию границы использования разных алгоритмов. Нашёл неплохую статью на эту тему. Там говорится: «чем меньше обучающий датасет, тем более сильный inductive bias нужен для успешного обучения модели. Но верно и обратное: чем больший датасет есть у нас в распоряжении, тем меньший inductive bias требуется и тем лучше модель может обучиться под задачу».

То есть классические решения могут показывать лучшие результаты на малых датасетах, а нейросети не больших. Но суть даже не в размере, это косвенный признак. Всё зависит от того, есть ли у нас удачный inductive bias.

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

Да и по ресурсам классика (With all details mentioned, liblinear is able to train a model using the 20,500 training examples in less than 4 hours using 70Gb RAM.) не сказать, что блистала.

Ну как же не блистала. Победитель пишет про свою нейросеть: «It was trained on two NVIDIA GPUs for about a week.» Речь же всё-таки идёт о 10 миллионах изображений и более 10 тысячах категорий.

Смотря о каких задачах идёт речь

Я на практике сталкивался только с небольшими датасетами и классов было не более 20. Обычно даже меньше 10.

Kogrom ★★
() автор топика
Ответ на: комментарий от Kogrom

Там говорится: «чем меньше обучающий датасет, тем более сильный inductive bias нужен для успешного обучения модели. Но верно и обратное: чем больший датасет есть у нас в распоряжении, тем меньший inductive bias требуется и тем лучше модель может обучиться под задачу».

Ну, можно считать и так. Я вижу в статье ряд неточностей, которые простительны для «научпопа».

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

Это очень сильное утверждение, соглашаться с ним не буду.

error_
()
Ответ на: комментарий от error_

Это очень сильное утверждение, соглашаться с ним не буду.

Я же не учёный, а технарь. Поэтому математического доказательства я не дам, а на опытах у меня были такие результаты. К сожалению, сходу не нашёл датасета для классификации по цвету, чтобы продемонстрировать преимущество классики, экспериментируя прямо в теме. Есть, например, довольно примитивные, типа: colorized-MNIST, но их легко можно сортировать по цвету без обучения, так как цвет везде примерно одной светлоты и насыщенности. Тут достаточно перевести усреднённый цвет в HLS и сортировать Hue по порогам.

Kogrom ★★
() автор топика
Ответ на: комментарий от Kogrom

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

Опыты вещь такая… Хорошо провести и интерпретировать опыт тоже вещь тяжёлая.

Вот вам пример из профессии, так сказать. В далёком 2018 году вышла вот такая статья: https://arxiv.org/abs/1811.12231

По сути она говорила о том, что всего-лишь отдельный класс архитектур (CNN) имеют bias в сторону текстур (обратите внимание, насколько их гипотеза слабее вашей). И как-то я ее ещё тогда заметил, запомнил, но вообще никакого влияния вокруг она не оказала.

И вот, в буквально недавно, вышло «продолжение»: https://arxiv.org/abs/2509.20234

Если вам не лень, посмотрите, как люди сделали дизайн экспериментов в обеих статьях. И насколько вообще это тонкая работа.

error_
()
Ответ на: комментарий от error_

Если вам не лень, посмотрите, как люди сделали дизайн экспериментов в обеих статьях.

Посмотрел. Не во все детали вникал. Но во второй статье мне понравилась таблица 3. Производили модификации изображений и смотрели как будет изменяться точность. Так вот при изменении цвета изображений (обесцвечивании и перемешивании RGB-каналов) точность не только не падала, но даже возрастала.

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

Для подтверждения гипотезы нужен датасет типа MNIST, в котором категории будут незначительно отличаться по форме и текстуре, а сортировать надо будет по цвету. И цвет будет не особо насыщенным (с низким saturation в пространстве HSL). Можно ещё наложить поверх градиенты и шумы, чтобы задача не была примитивной. Возможно, когда-нибудь сгенерю такой датасет.

Kogrom ★★
() автор топика

Аугментация данных. Для улучшения точности сортировки производят деформации изображений датасета. Например, мы можем повернуть или растянуть изображения. При удачной аугментации будет прирост точности. С другой стороны, работоспособность такого приёма может говорить о несовершенстве нейросетей. Правка: аугментация помогает внедрить inductive bias в нейросеть.

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

annulen ★★★★★
()
Ответ на: комментарий от annulen

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

Это частный случай. Более общим определением аугментации будет внедрение inductive bias в нейросеть с помощью искажений датасета.

Если брать классические решения (SVM, KNN), то там шумы будут удаляться в предобработке, что может быть более универсальным решением.

Я также могу согласиться, что аугментация - это не недостаток, а вынужденная мера на малых датасетах. Но это довольно слабый инструмент. Например, в статье по приведённой выше ссылке есть картинка с жёлтыми грушами и красными яблоками. Подразумевается, что мы должны делить на яблоки и груши. Куда при этом будет отнесено жёлтое яблоко? Тут коллизия. Аугментацией такое выправить можно, но придётся ручками перекрашивать. Предобработкой (обесцвечиванием) - намного легче. Такая же проблема будет если мы решим сортировать фрукты по цвету (не обращая внимания на тип фрукта). А с предобработкой, да с классическими решениями проблем не будет, ибо мы прямо сообщим алгоритму куда смотреть.

Kogrom ★★
() автор топика
Ответ на: комментарий от error_

Про Mixup я могу только как теоретик рассуждать. Inductive bias «загоняет модель в рамки при выборе метода генерализации». Создавая комбинированные изображения с новыми метками мы задаём области в которых нейронка не должна определять нужные нам классы.

Kogrom ★★
() автор топика