示例#1
0
def add_yolo_loss(net):
    bottom = net.tops.keys()[-1]
    conv = L.Convolution(net[bottom],
                         kernel_size=1,
                         stride=1,
                         num_output=125,
                         pad=0,
                         bias_term=True,
                         weight_filler=dict(type='xavier'),
                         bias_filler=dict(type='constant'))

    net.RegionLoss = L.RegionLoss(
        conv,
        net.label,
        top='det_loss',
        num_class=20,
        coords=4,
        num=5,
        softmax=1,
        jitter=0.2,
        rescore=0,
        object_scale=5.0,
        noobject_scale=1.0,
        class_scale=1.0,
        coord_scale=1.0,
        absolute=1,
        thresh=0.6,
        random=0,
        biases=[1.08, 1.19, 3.42, 4.41, 6.63, 11.38, 9.42, 5.11, 16.62, 10.52])
示例#2
0
def region_loss_layer(previous, name, params, train=False):
    """ create region loss layer"""
    fields = dict(num_class=int(params["classes"]),
                  coords=int(params["coords"]))

    if "anchors" in params.keys():
        fields["biases"] = int(params["anchors"])

    if "jitter" in params.keys():
        fields["jitter"] = float(params["jitter"])

    if "num" in params.keys():
        fields["num"] = int(params["num"])

    if "object_scale" in params.keys():
        fields["object_scale"] = int(params["object_scale"])

    if "noobject_scale" in params.keys():
        fields["noobject_scale"] = int(params["noobject_scale"])

    if "class_scale" in params.keys():
        fields["class_scale"] = int(params["class_scale"])

    if "coord_scale" in params.keys():
        fields["coord_scale"] = int(params["coord_scale"])

    if "absolute" in params.keys():
        fields["absolute"] = int(params["absolute"])

    if "thresh" in params.keys():
        fields["thresh"] = float(params["thresh"])

    return cl.RegionLoss(previous, name=name, **fields)
示例#3
0
def add_yolo_loss(net,out_layer=0,version='yolov2'):
  bottom = net.tops.keys()[-1]


  if version is 'yolov2' :
    net.conv_global = L.Convolution(net[bottom], kernel_size=1, stride=1,name='conv_global',
                    num_output=125,  pad=0, bias_term=True, weight_filler=dict(type='xavier'), bias_filler=dict(type='constant'))
    net.RegionLoss = L.RegionLoss(net.conv_global,net.label,num_class=20,coords=4,num=5,softmax=1,jitter=0.2,rescore=0,object_scale=5.0,noobject_scale=1.0,class_scale=1.0,
					coord_scale=1.0,absolute=1,thresh=0.6,random=0,biases=[1.08,1.19,3.42,4.41,6.63,11.38,9.42,5.11,16.62,10.52], include={'phase':caffe.TRAIN})
    return net.conv_global,net.conv_global
  else :
  
    #net.conv_global1 = L.Convolution(net[bottom], kernel_size=1, stride=1,name='conv_global1',
    #            num_output=75,  pad=0, bias_term=True, weight_filler=dict(type='msra'), bias_filler=dict(type='constant'))
    net.Yolov3Loss1 = L.Yolov3(net[bottom],net.label,num_class=20,num=3,object_scale=5.0,noobject_scale=1.0,class_scale=1.0,side=13,
				coord_scale=1.0,thresh=0.6,anchors_scale=32,use_logic_gradient=False,mask=[3,4,5],biases=[10,14,23,27,37,58,81,82,135,169,344,319], include={'phase':caffe.TRAIN})
    
    net.upsample = L.Deconvolution(net[bottom],param=dict(lr_mult=0, decay_mult=0),convolution_param=dict(kernel_size=4,stride=2,pad=1,group=75,bias_term=False,num_output=75,weight_filler=dict(type='bilinear')))
    x = L.Eltwise(net.upsample, out_layer)
    #net.conv_global2 = L.Convolution(x, kernel_size=1, stride=1,name='conv_global2',
    #            num_output=75,  pad=0, bias_term=True, weight_filler=dict(type='msra'), bias_filler=dict(type='constant'))                
    net.Yolov3Loss2 = L.Yolov3(x,net.label,num_class=20,num=3,object_scale=5.0,noobject_scale=1.0,class_scale=1.0,side=26,
				coord_scale=1.0,thresh=0.6,anchors_scale=16,use_logic_gradient=False,mask=[0,1,2],biases=[10,14,23,27,37,58,81,82,135,169,344,319], include={'phase':caffe.TRAIN}) 
                
    return net[bottom],x