def yolo_v2(inputs, num_classes, is_training, num_anchors=5, scope='yolo_v2'):
with tf.variable_scope(scope, 'yolo_v2', [inputs]) as sc:
end_points_collection = sc.name + '_end_points'
with slim.arg_scope([slim.conv2d, slim.fully_connected, slim.max_pool2d],
outputs_collections=end_points_collection):
net = slim.conv2d(inputs, 32, scope='layer_0')
net = slim.max_pool2d(net, scope='layer_1')
net = slim.conv2d(net, 64, scope='layer_2')
net = slim.max_pool2d(net, scope='layer_3')
net = slim.conv2d(net, 128, scope='layer_4')
net = slim.conv2d(net, 64, kernel_size=[1, 1], scope='layer_5')
net = slim.conv2d(net, 128, scope='layer_6')
net = slim.max_pool2d(net, scope='layer_7')
net = slim.conv2d(net, 256, scope='layer_8')
net = slim.conv2d(net, 128, kernel_size=[1, 1], scope='layer_9')
net = slim.conv2d(net, 256, scope='layer_10')
net = slim.max_pool2d(net, scope='layer_11')
net = slim.conv2d(net, 512, scope='layer_12')
net = slim.conv2d(net, 256, kernel_size=[1, 1], scope='layer_13')
net = slim.conv2d(net, 512, scope='layer_14')
net = slim.conv2d(net, 256, kernel_size=[1, 1], scope='layer_15')
net = slim.conv2d(net, 512, scope='layer_16')
path_1 = tf.space_to_depth(net, block_size=2, name='path_1')
net = slim.max_pool2d(net, scope='layer_17')
net = slim.conv2d(net, 1024, scope='layer_18')
net = slim.conv2d(net, 512, kernel_size=[1, 1], scope='layer_19')
net = slim.conv2d(net, 1024, scope='layer_20')
net = slim.conv2d(net, 512, kernel_size=[1, 1], scope='layer_21')
net = slim.conv2d(net, 1024, scope='layer_22')
net = slim.conv2d(net, 1024, scope='layer_23')
net = slim.conv2d(net, 1024, scope='layer_24')
path_2 = net
net = tf.concat([path_1, path_2], 3, name='concat2path')
net = slim.conv2d(net, 1024, scope='layer_25')
net = slim.conv2d(net, (num_classes + 5) * num_anchors, kernel_size=[1, 1], scope='layer_26')
end_points = slim.utils.convert_collection_to_dict(end_points_collection)
return net, end_points
评论列表
文章目录