--- a +++ b/darkflow/dark/darkop.py @@ -0,0 +1,69 @@ +from .layer import Layer +from .convolution import * +from .connected import * + + +class avgpool_layer(Layer): + pass + + +class crop_layer(Layer): + pass + + +class maxpool_layer(Layer): + def setup(self, ksize, stride, pad): + self.stride = stride + self.ksize = ksize + self.pad = pad + + +class softmax_layer(Layer): + def setup(self, groups): + self.groups = groups + + +class dropout_layer(Layer): + def setup(self, p): + self.h['pdrop'] = dict({ + 'feed': p, # for training + 'dfault': 1.0, # for testing + 'shape': () + }) + + +class route_layer(Layer): + def setup(self, routes): + self.routes = routes + + +class reorg_layer(Layer): + def setup(self, stride): + self.stride = stride + + +""" +Darkop Factory +""" + +darkops = { + 'dropout': dropout_layer, + 'connected': connected_layer, + 'maxpool': maxpool_layer, + 'convolutional': convolutional_layer, + 'avgpool': avgpool_layer, + 'softmax': softmax_layer, + 'crop': crop_layer, + 'local': local_layer, + 'select': select_layer, + 'route': route_layer, + 'reorg': reorg_layer, + 'conv-select': conv_select_layer, + 'conv-extract': conv_extract_layer, + 'extract': extract_layer +} + + +def create_darkop(ltype, num, *args): + op_class = darkops.get(ltype, Layer) + return op_class(ltype, num, *args)