parameters: (images, n_last_channels=425)
return_statement: return net
docstring: Darknet19 for YOLOv2
docstring_summary: Darknet19 for YOLOv2
docstring_tokens: Darknet19 for YOLOv2
function: def darknet(images, n_last_channels=425):
      """Darknet19 for YOLOv2"""
      ######### 1. 3*3*3*32 卷积核  3通道输入 32通道输出 步长1 + 最大值池化 ########################
      net = conv2d(images, 32, 3, 1, name="conv1")
      net = maxpool(net, name="pool1")# 2*2的池化核 步长 2  尺寸减半
      ######### 2. 3*3*32*64 卷积核  32通道输入 64通道输出 步长1 + 最大值池化 ######################
      net = conv2d(net, 64, 3, 1, name="conv2")
      net = maxpool(net, name="pool2")# 2*2的池化核 步长 2  尺寸减半
      ######### 3. 3*3 1*1 3*3 卷积 + 最大值池化 ##################################################
      net = conv2d(net, 128, 3, 1, name="conv3_1")# 3*3*64*128 卷积核  64通道输入  128通道输出 步长1
      net = conv2d(net, 64, 1, name="conv3_2")    # 1*1*128*64 卷积核  128通道输入 64通道输出 步长1 
      net = conv2d(net, 128, 3, 1, name="conv3_3")# 3*3*64*128 卷积核  64通道输入  128通道输出 步长1
      net = maxpool(net, name="pool3")# 2*2的池化核 步长 2  尺寸减半
      ######### 4. 3*3 1*1 3*3 卷积 + 最大值池化 ###################################################
      net = conv2d(net, 256, 3, 1, name="conv4_1")# 3*3*128*256 卷积核  128通道输入  256通道输出 步长1
      net = conv2d(net, 128, 1, name="conv4_2")   # 1*1*256*128 卷积核  256通道输入  128通道输出 步长1
      net = conv2d(net, 256, 3, 1, name="conv4_3")# 3*3*128*256 卷积核  128通道输入  256通道输出 步长1
      net = maxpool(net, name="pool4")# 2*2的池化核 步长 2  尺寸减半
      ######### 5. 3*3 1*1 3*3 1*1 3*3 卷积 + 最大值池化   ##########################################
      net = conv2d(net, 512, 3, 1, name="conv5_1")# 3*3*256*512 卷积核  256通道输入  512通道输出 步长1
      net = conv2d(net, 256, 1, name="conv5_2")   # 1*1*512*256 卷积核  512通道输入  256通道输出 步长1
      net = conv2d(net, 512, 3, 1, name="conv5_3")# 3*3*256*512 卷积核  256通道输入  512通道输出 步长1
      net = conv2d(net, 256, 1, name="conv5_4")   # 1*1*512*256 卷积核  512通道输入  256通道输出 步长1
      net = conv2d(net, 512, 3, 1, name="conv5_5")# 3*3*256*512 卷积核  256通道输入  512通道输出 步长1
      shortcut = net ######## 保存大尺寸的卷积特征图###########
      net = maxpool(net, name="pool5")# 2*2的池化核 步长 2  尺寸减半
      ######### 6. 3*3 1*1 3*3 1*1 3*3 卷积   ##########################################################
      net = conv2d(net, 1024, 3, 1, name="conv6_1")# 3*3*512*1024  卷积核  512通道输入   1024通道输出 步长1
      net = conv2d(net, 512, 1, name="conv6_2")    # 1*1*1024*512  卷积核  1024通道输入  512通道输出  步长1
      net = conv2d(net, 1024, 3, 1, name="conv6_3")# 3*3*512*1024  卷积核  512通道输入   1024通道输出 步长1
      net = conv2d(net, 512, 1, name="conv6_4")    # 1*1*1024*512  卷积核  1024通道输入  512通道输出  步长1
      net = conv2d(net, 1024, 3, 1, name="conv6_5")# 3*3*512*1024  卷积核  512通道输入   1024通道输出 步长1
      ######### 7.  3*3  3*3 卷积 ######################################################################
      net = conv2d(net, 1024, 3, 1, name="conv7_1")# 3*3*1024*1024 卷积核  1024通道输入  1024通道输出 步长 
      net = conv2d(net, 1024, 3, 1, name="conv7_2")# 3*3*1024*1024 卷积核  1024通道输入  1024通道输出 步长 
      # shortcut ？？？？？？？有点问题
      shortcut = conv2d(shortcut, 64, 1, name="conv_shortcut")# 26*26*512 特征图  再卷积 1*1*512*64  64个输出？？
      shortcut = reorg(shortcut, 2)# passtrough 层 尺寸减半 通道数量变为4倍
      net = tf.concat([shortcut, net], axis=-1)# 跨层 通道合并
      ######### 8. 3*3*(1024+64*4)*1024 卷积核  1280通道输入 1024通道输出 步长1 ##########################
      net = conv2d(net, 1024, 3, 1, name="conv8")
      ######### 9. 3*3*1024* n_last_channels 卷积核  1024通道输入 n_last_channels 通道输出 步长1##########
      ######### 检测网络输出
      net = conv2d(net, n_last_channels, 1, batch_normalize=0,
                   activation=None, use_bias=True, name="conv_dec")
      return net
function_tokens: def darknet ( images , n_last_channels = 425 ) : ######### 1. 3*3*3*32 卷积核  3通道输入 32通道输出 步长1 + 最大值池化 ######################## net = conv2d ( images , 32 , 3 , 1 , name = "conv1" ) net = maxpool ( net , name = "pool1" ) # 2*2的池化核 步长 2  尺寸减半 ######### 2. 3*3*32*64 卷积核  32通道输入 64通道输出 步长1 + 最大值池化 ###################### net = conv2d ( net , 64 , 3 , 1 , name = "conv2" ) net = maxpool ( net , name = "pool2" ) # 2*2的池化核 步长 2  尺寸减半 ######### 3. 3*3 1*1 3*3 卷积 + 最大值池化 ################################################## net = conv2d ( net , 128 , 3 , 1 , name = "conv3_1" ) # 3*3*64*128 卷积核  64通道输入  128通道输出 步长1 net = conv2d ( net , 64 , 1 , name = "conv3_2" ) # 1*1*128*64 卷积核  128通道输入 64通道输出 步长1  net = conv2d ( net , 128 , 3 , 1 , name = "conv3_3" ) # 3*3*64*128 卷积核  64通道输入  128通道输出 步长1 net = maxpool ( net , name = "pool3" ) # 2*2的池化核 步长 2  尺寸减半 ######### 4. 3*3 1*1 3*3 卷积 + 最大值池化 ################################################### net = conv2d ( net , 256 , 3 , 1 , name = "conv4_1" ) # 3*3*128*256 卷积核  128通道输入  256通道输出 步长1 net = conv2d ( net , 128 , 1 , name = "conv4_2" ) # 1*1*256*128 卷积核  256通道输入  128通道输出 步长1 net = conv2d ( net , 256 , 3 , 1 , name = "conv4_3" ) # 3*3*128*256 卷积核  128通道输入  256通道输出 步长1 net = maxpool ( net , name = "pool4" ) # 2*2的池化核 步长 2  尺寸减半 ######### 5. 3*3 1*1 3*3 1*1 3*3 卷积 + 最大值池化   ########################################## net = conv2d ( net , 512 , 3 , 1 , name = "conv5_1" ) # 3*3*256*512 卷积核  256通道输入  512通道输出 步长1 net = conv2d ( net , 256 , 1 , name = "conv5_2" ) # 1*1*512*256 卷积核  512通道输入  256通道输出 步长1 net = conv2d ( net , 512 , 3 , 1 , name = "conv5_3" ) # 3*3*256*512 卷积核  256通道输入  512通道输出 步长1 net = conv2d ( net , 256 , 1 , name = "conv5_4" ) # 1*1*512*256 卷积核  512通道输入  256通道输出 步长1 net = conv2d ( net , 512 , 3 , 1 , name = "conv5_5" ) # 3*3*256*512 卷积核  256通道输入  512通道输出 步长1 shortcut = net ######## 保存大尺寸的卷积特征图########### net = maxpool ( net , name = "pool5" ) # 2*2的池化核 步长 2  尺寸减半 ######### 6. 3*3 1*1 3*3 1*1 3*3 卷积   ########################################################## net = conv2d ( net , 1024 , 3 , 1 , name = "conv6_1" ) # 3*3*512*1024  卷积核  512通道输入   1024通道输出 步长1 net = conv2d ( net , 512 , 1 , name = "conv6_2" ) # 1*1*1024*512  卷积核  1024通道输入  512通道输出  步长1 net = conv2d ( net , 1024 , 3 , 1 , name = "conv6_3" ) # 3*3*512*1024  卷积核  512通道输入   1024通道输出 步长1 net = conv2d ( net , 512 , 1 , name = "conv6_4" ) # 1*1*1024*512  卷积核  1024通道输入  512通道输出  步长1 net = conv2d ( net , 1024 , 3 , 1 , name = "conv6_5" ) # 3*3*512*1024  卷积核  512通道输入   1024通道输出 步长1 ######### 7.  3*3  3*3 卷积 ###################################################################### net = conv2d ( net , 1024 , 3 , 1 , name = "conv7_1" ) # 3*3*1024*1024 卷积核  1024通道输入  1024通道输出 步长  net = conv2d ( net , 1024 , 3 , 1 , name = "conv7_2" ) # 3*3*1024*1024 卷积核  1024通道输入  1024通道输出 步长  # shortcut ？？？？？？？有点问题 shortcut = conv2d ( shortcut , 64 , 1 , name = "conv_shortcut" ) # 26*26*512 特征图  再卷积 1*1*512*64  64个输出？？ shortcut = reorg ( shortcut , 2 ) # passtrough 层 尺寸减半 通道数量变为4倍 net = tf . concat ( [ shortcut , net ] , axis = - 1 ) # 跨层 通道合并 ######### 8. 3*3*(1024+64*4)*1024 卷积核  1280通道输入 1024通道输出 步长1 ########################## net = conv2d ( net , 1024 , 3 , 1 , name = "conv8" ) ######### 9. 3*3*1024* n_last_channels 卷积核  1024通道输入 n_last_channels 通道输出 步长1########## ######### 检测网络输出 net = conv2d ( net , n_last_channels , 1 , batch_normalize = 0 , activation = None , use_bias = True , name = "conv_dec" ) return net