| | |
| | | } |
| | | } |
| | | |
| | | void optimize_picture(network *net, image orig, int max_layer, float scale, float rate, float thresh) |
| | | void optimize_picture(network *net, image orig, int max_layer, float scale, float rate, float thresh, int norm) |
| | | { |
| | | scale_image(orig, 2); |
| | | translate_image(orig, -1); |
| | |
| | | |
| | | #ifdef GPU |
| | | state.input = cuda_make_array(im.data, im.w*im.h*im.c); |
| | | state.delta = cuda_make_array(0, im.w*im.h*im.c); |
| | | state.delta = cuda_make_array(im.data, im.w*im.h*im.c); |
| | | |
| | | forward_network_gpu(*net, state); |
| | | copy_ongpu(last.outputs, last.output_gpu, 1, last.delta_gpu, 1); |
| | |
| | | |
| | | //rate = rate / abs_mean(out.data, out.w*out.h*out.c); |
| | | |
| | | normalize_array(out.data, out.w*out.h*out.c); |
| | | if(norm) normalize_array(out.data, out.w*out.h*out.c); |
| | | axpy_cpu(orig.w*orig.h*orig.c, rate, out.data, 1, orig.data, 1); |
| | | |
| | | /* |
| | |
| | | int max_layer = atoi(argv[5]); |
| | | |
| | | int range = find_int_arg(argc, argv, "-range", 1); |
| | | int norm = find_int_arg(argc, argv, "-norm", 1); |
| | | int rounds = find_int_arg(argc, argv, "-rounds", 1); |
| | | int iters = find_int_arg(argc, argv, "-iters", 10); |
| | | int octaves = find_int_arg(argc, argv, "-octaves", 4); |
| | |
| | | float rate = find_float_arg(argc, argv, "-rate", .04); |
| | | float thresh = find_float_arg(argc, argv, "-thresh", 1.); |
| | | float rotate = find_float_arg(argc, argv, "-rotate", 0); |
| | | char *prefix = find_char_arg(argc, argv, "-prefix", 0); |
| | | |
| | | network net = parse_network_cfg(cfg); |
| | | load_weights(&net, weights); |
| | |
| | | fflush(stderr); |
| | | int layer = max_layer + rand()%range - range/2; |
| | | int octave = rand()%octaves; |
| | | optimize_picture(&net, im, layer, 1/pow(1.33333333, octave), rate, thresh); |
| | | optimize_picture(&net, im, layer, 1/pow(1.33333333, octave), rate, thresh, norm); |
| | | } |
| | | fprintf(stderr, "done\n"); |
| | | if(0){ |
| | |
| | | im = g; |
| | | } |
| | | char buff[256]; |
| | | sprintf(buff, "%s_%s_%d_%06d",imbase, cfgbase, max_layer, e); |
| | | if (prefix){ |
| | | sprintf(buff, "%s/%s_%s_%d_%06d",prefix, imbase, cfgbase, max_layer, e); |
| | | }else{ |
| | | sprintf(buff, "%s_%s_%d_%06d",imbase, cfgbase, max_layer, e); |
| | | } |
| | | printf("%d %s\n", e, buff); |
| | | save_image(im, buff); |
| | | //show_image(im, buff); |