Я не понимаю конкатенацию в tiny-yolo-v3 - PullRequest
0 голосов
/ 16 ноября 2018

Структура сети описана в файле .cfg (см. Ниже). «Блок» начинается с [.....]

Все используемые фильтры:

  • 3x3 с шагом 1 и отступом 1 -> не изменяет высоту и ширину вывода
  • 1x1 слоев с шагом 1 и отступом = 1 -> карта объектов = (ширина + 2, высота + 2, глубина)

  • Upsample layer -> Я читал, что он умножает в 2 раза высоту и ширину

  • маршрут:

    • если только 1 параметр: (т. Е. «-4»: перед этим слоем маршрута берется карта объектов 4-го слоя)
    • если 2 параметра: (т.е. -1,8: он берет карту объектов предыдущего слоя и объединяет ее с картой объектов 8-го уровня сети)

Я не понимаю конкатенацию, применяемую "[route] Layers: -1,8", потому что, если я прав, это объединяет 32x32x ... с 26x26x ..., что технически невозможно, верно?

Я переписал cfg-файл, чтобы его было проще визуализировать. Можете ли вы сказать мне, если моя транскрипция правильная и как работает эта конкатенация? (Карта результатов, которую я не понимаю, написана красным.)

моя транскрипция файла cfg

[\[net\]
# Testing
batch=1
subdivisions=1
# Training
# batch=64
# subdivisions=2
width=416
height=416
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1

learning_rate=0.001
burn_in=1000
max_batches = 500200
policy=steps
steps=400000,450000
scales=.1,.1

\[convolutional\]
batch_normalize=1
filters=16
size=3
stride=1
pad=1
activation=leaky

\[maxpool\]
size=2
stride=2

\[convolutional\]
batch_normalize=132
filters=32
size=3
stride=1
pad=1
activation=leaky

\[maxpool\]
size=2
stride=2

\[convolutional\]
batch_normalize=1
filters=64
size=3
stride=1
pad=1
activation=leaky

\[maxpool\]
size=2
stride=2

\[convolutional\]
batch_normalize=1
filters=128
size=3
stride=1
pad=1
activation=leaky

\[maxpool\]
size=2
stride=2

\[convolutional\]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky

\[maxpool\]
size=2
stride=2

\[convolutional\]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky

\[maxpool\]
size=2
stride=1

\[convolutional\]
batch_normalize=1
filters=1024
size=3
stride=1
pad=1
activation=leaky

###########

\[convolutional\]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky

\[convolutional\]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky

\[convolutional\]
size=1
stride=1
pad=1
filters=255
activation=linear



\[yolo\]
mask = 3,4,5
anchors = 10,14,  23,27,  37,58,  81,82,  135,169,  344,319
classes=80
num=6
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1

\[route\]
layers = -4

\[convolutional\]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky

\[upsample\]
stride=2

\[route\]
layers = -1, 8

\[convolutional\]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky

\[convolutional\]
size=1
stride=1
pad=1
filters=255
activation=linear

\[yolo\]
mask = 0,1,2
anchors = 10,14,  23,27,  37,58,  81,82,  135,169,  344,319
classes=80
num=6
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1
...