LINUX.ORG.RU

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

 , , ,


0

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_
()