mirror of
https://github.com/pjreddie/darknet.git
synced 2023-08-10 21:13:14 +03:00
merged
This commit is contained in:
commit
3839d29309
@ -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:
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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),
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user