Общие сведения о конфигурационных файлах darknet yolo.cfg

Я искал в Интернете, но нашел очень мало информации об этом, я не понимаю, что каждая переменная/значение представляет в файлах yolo .cfg. Поэтому я надеялся, что некоторые из вас могут помочь, я не думаю, что я единственный, у кого есть эта проблема, поэтому, если кто-нибудь знает переменные 2 или 3, отправьте их им, чтобы люди, которые нуждаются в такой информации в будущем, могли их найти.

Главное, что я хотел бы знать:

  • партия
  • подразделения

  • распад

  • импульс

  • каналы

  • фильтры

  • активация

Ответы

Ответ 1

Вот мое текущее понимание некоторых переменных. Не обязательно правильно:

[сеть]

  • batch: В обратном переходе используется много изображений + меток для вычисления градиента и обновления весов путем обратного распространения.
  • подразделы: пакет разделен на множество "блоков". Образы блока выполняются параллельно на gpu.
  • распад: возможно, термин, чтобы уменьшить вес, чтобы избежать больших значений. По соображениям стабильности, я думаю.
  • каналов: Лучше объясняется на этом изображении:

Слева у нас есть один канал с 4x4 пикселями. Уровень реорганизации уменьшает размер до половины, а затем создает 4 канала с соседними пикселями в разных каналах. figure

  • Импульс: я думаю, новый градиент вычисляется импульсом * previous_gradient + (1-импульс) * gradient_of_current_batch. Делает градиент более стабильным.
  • adam: Использует оптимизатор adam? Не работает для меня, хотя
  • burn_in: для первых x партий медленно увеличивайте скорость обучения до его конечного значения (значение параметра learning_rate). Используйте это, чтобы определить скорость обучения, контролируя до тех пор, пока значение потери не уменьшится (прежде чем оно начнет расходиться).
  • policy = steps: Используйте параметры шагов и масштабов ниже, чтобы настроить скорость обучения во время обучения
  • шаги = 500,1000: настройка скорости обучения после 500 и 1000 партий
  • весы = 0,1,0,2: после 500 умножить LR на 0,1, затем после 1000 снова умножить на 0,2
  • угол: увеличение изображения путем вращения до этого угла (в градусах)

слои

  • filters: Сколько сверточных ядер есть в слое.
  • активация: функция активации, relu, неисправность relu и т.д. См. src/activations.h
  • stopbackward: Сделайте backpropagation только до этого слоя. Поместите его в панорамированный слой свертки перед первым слоем yolo, чтобы тренировать только слои за ним, например, при использовании предварительно обработанных весов.
  • random: Поместите в слои yolo. Если установлено значение 1, выполните увеличение данных, изменив размеры изображений на разные размеры каждые несколько партий. Используйте для обобщения размеров объектов.

Многие вещи более или менее понятны (размер, шаг, batch_normalize, max_batches, ширина, высота). Если у вас есть еще вопросы, не стесняйтесь комментировать.

Опять же, имейте в виду, что я не уверен на 100% многих из них.

Ответ 2

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

Подразделения деления по размеру партии на нет. подпартий для параллельной обработки

затухание является обучающим параметром, и, как указано в журнале, используется импульс 0,9, а затухание 0,0005

импульс - это обучающий параметр, и, как указано в журнале, используется импульс 0,9 и затухание 0,0005

каналы Каналы - это размер канала входного изображения (3) для изображения BGR

фильтры количество фильтров, используемых для алгоритма CNN

активация функция активации CNN: в основном используется функция Leaky RELU (что я видел в основном в файлах конфигурации)

Ответ 3

Хотя это довольно старый запрос о помощи, для будущих пользователей, которые ищут ответ, Вы можете найти все объяснения на вики-странице внутри самого известного форка оригинального проекта Yolo https://github.com/AlexeyAB/darknet/wiki

В частности, копирование и вставка только части [net] из здесь следующим образом:

[Нетто]

  • batch=1 - количество сэмплов (изображений, букв и т.д.), Которые будут предварительно обработаны в одной партии
  • subdivisions=1 - количество мини-пакетов в одном пакете, размер mini_batch = batch/subdivisions, поэтому графический процессор обрабатывает выборки mini_batch одновременно, и веса будут обновляться для выборок batch (1 итерация обрабатывает изображения batch)
  • width=416 - размер (ширина) сети, поэтому каждое изображение будет изменено до размера сети во время обучения и обнаружения
  • height=416 - размер (высота) сети, поэтому каждое изображение будет изменено до размера сети во время обучения и обнаружения
  • channels=3 - размер сети (каналы), поэтому каждое изображение будет преобразовано в это количество каналов во время обучения и обнаружения
  • inputs=256 - размер сети (входы) используется для данных без изображения: букв, цен, любых пользовательских данных

В любом случае, вам даже следует попытаться найти в относительной части Github/Issues что-то, даже наивное, которое вы хотите знать, потому что обычно это уже спрашивали и отвечали.

Удачи.