This commit is contained in:
Daniel Gordon 2018-03-13 11:26:27 -07:00
commit 3839d29309
7 changed files with 17 additions and 17 deletions

View File

@ -10,9 +10,9 @@ import darknet as dn
import pdb import pdb
dn.set_gpu(0) dn.set_gpu(0)
net = dn.load_net("cfg/tiny-yolo.cfg", "tiny-yolo.weights", 0) net = dn.load_net("cfg/yolo-thor.cfg", "/home/pjreddie/backup/yolo-thor_final.weights", 0)
meta = dn.load_meta("cfg/coco.data") meta = dn.load_meta("cfg/thor.data")
r = dn.detect(net, meta, "data/dog.jpg") r = dn.detect(net, meta, "data/bedroom.jpg")
print r print r
# And then down here you could detect a lot more images like: # And then down here you could detect a lot more images like:

View File

@ -47,7 +47,7 @@ void optimize_picture(network *net, image orig, int max_layer, float scale, floa
#ifdef GPU #ifdef GPU
net->delta_gpu = cuda_make_array(delta.data, im.w*im.h*im.c); net->delta_gpu = cuda_make_array(delta.data, im.w*im.h*im.c);
cuda_push_array(net->input_gpu, im.data, net->inputs); copy_cpu(net->inputs, im.data, 1, net->input, 1);
forward_network_gpu(net); forward_network_gpu(net);
copy_gpu(last.outputs, last.output_gpu, 1, last.delta_gpu, 1); copy_gpu(last.outputs, last.output_gpu, 1, last.delta_gpu, 1);
@ -62,7 +62,8 @@ void optimize_picture(network *net, image orig, int max_layer, float scale, floa
cuda_free(net->delta_gpu); cuda_free(net->delta_gpu);
net->delta_gpu = 0; net->delta_gpu = 0;
#else #else
net->input = im.data; printf("\nnet: %d %d %d im: %d %d %d\n", net->w, net->h, net->inputs, im.w, im.h, im.c);
copy_cpu(net->inputs, im.data, 1, net->input, 1);
net->delta = delta.data; net->delta = delta.data;
forward_network(net); forward_network(net);
copy_cpu(last.outputs, last.output, 1, last.delta, 1); copy_cpu(last.outputs, last.output, 1, last.delta, 1);
@ -308,8 +309,7 @@ void run_nightmare(int argc, char **argv)
int reconstruct = find_arg(argc, argv, "-reconstruct"); int reconstruct = find_arg(argc, argv, "-reconstruct");
int smooth_size = find_int_arg(argc, argv, "-smooth", 1); int smooth_size = find_int_arg(argc, argv, "-smooth", 1);
network *net = parse_network_cfg(cfg); network *net = load_network(cfg, weights, 0);
load_weights(net, weights);
char *cfgbase = basecfg(cfg); char *cfgbase = basecfg(cfg);
char *imbase = basecfg(input); char *imbase = basecfg(input);

View File

@ -17,7 +17,6 @@ def c_array(ctype, values):
arr[:] = values arr[:] = values
return arr return arr
class BOX(Structure): class BOX(Structure):
_fields_ = [("x", c_float), _fields_ = [("x", c_float),
("y", c_float), ("y", c_float),

View File

@ -177,7 +177,7 @@ void backward_convolutional_layer_gpu(convolutional_layer l, network net)
if(l.smooth){ if(l.smooth){
smooth_layer(l, 5, l.smooth); smooth_layer(l, 5, l.smooth);
} }
constrain_gpu(l.outputs*l.batch, 1, l.delta_gpu, 1); //constrain_gpu(l.outputs*l.batch, 1, l.delta_gpu, 1);
gradient_array_gpu(l.output_gpu, l.outputs*l.batch, l.activation, l.delta_gpu); gradient_array_gpu(l.output_gpu, l.outputs*l.batch, l.activation, l.delta_gpu);
@ -236,7 +236,7 @@ void backward_convolutional_layer_gpu(convolutional_layer l, network net)
float *b = net.workspace; float *b = net.workspace;
float *c = l.weight_updates_gpu + j*l.nweights/l.groups; float *c = l.weight_updates_gpu + j*l.nweights/l.groups;
float *im = net.input+(i*l.groups + j)*l.c/l.groups*l.h*l.w; float *im = net.input_gpu+(i*l.groups + j)*l.c/l.groups*l.h*l.w;
im2col_gpu(im, l.c/l.groups, l.h, l.w, im2col_gpu(im, l.c/l.groups, l.h, l.w,
l.size, l.stride, l.pad, b); l.size, l.stride, l.pad, b);

View File

@ -150,24 +150,24 @@ void cudnn_convolutional_setup(layer *l)
l->weightDesc, l->weightDesc,
l->convDesc, l->convDesc,
l->dstTensorDesc, l->dstTensorDesc,
CUDNN_CONVOLUTION_FWD_PREFER_FASTEST, CUDNN_CONVOLUTION_FWD_SPECIFY_WORKSPACE_LIMIT,
0, 4000000000,
&l->fw_algo); &l->fw_algo);
cudnnGetConvolutionBackwardDataAlgorithm(cudnn_handle(), cudnnGetConvolutionBackwardDataAlgorithm(cudnn_handle(),
l->weightDesc, l->weightDesc,
l->ddstTensorDesc, l->ddstTensorDesc,
l->convDesc, l->convDesc,
l->dsrcTensorDesc, l->dsrcTensorDesc,
CUDNN_CONVOLUTION_BWD_DATA_PREFER_FASTEST, CUDNN_CONVOLUTION_BWD_DATA_SPECIFY_WORKSPACE_LIMIT,
0, 4000000000,
&l->bd_algo); &l->bd_algo);
cudnnGetConvolutionBackwardFilterAlgorithm(cudnn_handle(), cudnnGetConvolutionBackwardFilterAlgorithm(cudnn_handle(),
l->srcTensorDesc, l->srcTensorDesc,
l->ddstTensorDesc, l->ddstTensorDesc,
l->convDesc, l->convDesc,
l->dweightDesc, l->dweightDesc,
CUDNN_CONVOLUTION_BWD_FILTER_PREFER_FASTEST, CUDNN_CONVOLUTION_BWD_FILTER_SPECIFY_WORKSPACE_LIMIT,
0, 4000000000,
&l->bf_algo); &l->bf_algo);
} }
#endif #endif

View File

@ -389,6 +389,7 @@ int resize_network(network *net, int w, int h)
error("Cannot resize this type of layer"); error("Cannot resize this type of layer");
} }
if(l.workspace_size > workspace_size) workspace_size = l.workspace_size; if(l.workspace_size > workspace_size) workspace_size = l.workspace_size;
if(l.workspace_size > 2000000000) assert(0);
inputs = l.outputs; inputs = l.outputs;
net->layers[i] = l; net->layers[i] = l;
w = l.out_w; w = l.out_w;

View File

@ -1110,7 +1110,7 @@ void load_weights_upto(network *net, char *filename, int start, int cutoff)
fread(&major, sizeof(int), 1, fp); fread(&major, sizeof(int), 1, fp);
fread(&minor, sizeof(int), 1, fp); fread(&minor, sizeof(int), 1, fp);
fread(&revision, sizeof(int), 1, fp); fread(&revision, sizeof(int), 1, fp);
if ((major*10 + minor) >= 2){ if ((major*10 + minor) >= 2 && major < 1000 && minor < 1000){
fread(net->seen, sizeof(size_t), 1, fp); fread(net->seen, sizeof(size_t), 1, fp);
} else { } else {
int iseen = 0; int iseen = 0;