Добавление отсева на предварительно обученную модель Yolo v1 - PullRequest
0 голосов
/ 23 мая 2018

Я получил код Yolo v1 от https://github.com/lovish1234/YOLOv1 (если при добавлении этой ссылки возникают проблемы с лицензией, пожалуйста, свяжитесь со мной)

Насколько я знаю, код не содержит выпадения в отличие от бумаги Yolo v1,Также, согласно оригинальной статье, они добавили выпадающий слой со скоростью = 0,5 после первого подключенного слоя, чтобы предотвратить совместную адаптацию между слоями.

Поэтому я изменил код как

def build_graph(self):
    """Build the computational graph for the network"""
    # Print
    if self.verbose:
        print('Building Yolo Graph....')
    # Reset default graph
    tf.reset_default_graph()
    # Input placeholder
    self.x = tf.placeholder('float32', [None, 448, 448, 3])
    self.label_batch = tf.placeholder('float32', [None, 73])
    self.keep_prob = tf.placeholder('float32')

    # conv1, pool1
    self.conv1 = self.conv_layer(1, self.x, 64, 7, 2)
    self.pool1 = self.maxpool_layer(2, self.conv1, 2, 2)
    # size reduced to 64x112x112
    # conv2, pool2
    self.conv2 = self.conv_layer(3, self.pool1, 192, 3, 1)
    self.pool2 = self.maxpool_layer(4, self.conv2, 2, 2)

    # size reduced to 192x56x56
    # conv3, conv4, conv5, conv6, pool3
    self.conv3 = self.conv_layer(5, self.pool2, 128, 1, 1)
    self.conv4 = self.conv_layer(6, self.conv3, 256, 3, 1)
    self.conv5 = self.conv_layer(7, self.conv4, 256, 1, 1)
    self.conv6 = self.conv_layer(8, self.conv5, 512, 3, 1)
    self.pool3 = self.maxpool_layer(9, self.conv6, 2, 2)

    # size reduced to 512x28x28
    # conv7 - conv16, pool4
    self.conv7 = self.conv_layer(10, self.pool3, 256, 1, 1)
    self.conv8 = self.conv_layer(11, self.conv7, 512, 3, 1)
    self.conv9 = self.conv_layer(12, self.conv8, 256, 1, 1)
    self.conv10 = self.conv_layer(13, self.conv9, 512, 3, 1)
    self.conv11 = self.conv_layer(14, self.conv10, 256, 1, 1)
    self.conv12 = self.conv_layer(15, self.conv11, 512, 3, 1)
    self.conv13 = self.conv_layer(16, self.conv12, 256, 1, 1)
    self.conv14 = self.conv_layer(17, self.conv13, 512, 3, 1)
    self.conv15 = self.conv_layer(18, self.conv14, 512, 1, 1)
    self.conv16 = self.conv_layer(19, self.conv15, 1024, 3, 1)
    self.pool4 = self.maxpool_layer(20, self.conv16, 2, 2)

    # size reduced to 1024x14x14
    # conv17 - conv24
    self.conv17 = self.conv_layer(21, self.pool4, 512, 1, 1)
    self.conv18 = self.conv_layer(22, self.conv17, 1024, 3, 1)
    self.conv19 = self.conv_layer(23, self.conv18, 512, 1, 1)
    self.conv20 = self.conv_layer(24, self.conv19, 1024, 3, 1)
    self.conv21 = self.conv_layer(25, self.conv20, 1024, 3, 1)
    self.conv22 = self.conv_layer(26, self.conv21, 1024, 3, 2)
    self.conv23 = self.conv_layer(27, self.conv22, 1024, 3, 1)
    self.conv24 = self.conv_layer(28, self.conv23, 1024, 3, 1)

    # size reduced to 1024x7x7
    # fc1, fc2, fc3
    self.fc1 = self.fc_layer(29, self.conv24, 512,
                             flatten=True, linear=False)
    self.dropout = tf.nn.dropout(self.fc1, self.keep_prob)
    self.fc2 = self.fc_layer(
        30, self.dropout, 4096, flatten=False, linear=False)
    self.fc3 = self.fc_layer(
        31, self.fc2, 1470, flatten=False, linear=True)

Я ожидал положительного результата.Но тренировка после добавления отсева снижает его функцию.Некоторые даже не показывают коробку, а для тех, которые показывают, ящики ошибочны, и доверие ниже.

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

Это важный проект, который мне нужно сделать.Но я новичок в Tensorflow.Поэтому, пожалуйста, прости меня, если это был простой вопрос.Также, если кто-то знает ответ, пожалуйста, скажите мне.Спасибо.

1 Ответ

0 голосов
/ 09 ноября 2018

Dropout - гиперпараметр;иногда это помогает, иногда нет.Помогает это или нет, зависит от других факторов, таких как другие значения гиперпараметра (например, размер пакета, скорость обучения и т. Д.) И свойства набора данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...