void test_captcha(char *cfgfile, char *weightfile) { setbuf(stdout, NULL); srand(time(0)); //char *base = basecfg(cfgfile); //printf("%s\n", base); network net = parse_network_cfg(cfgfile); set_batch_network(&net, 1); if(weightfile){ load_weights(&net, weightfile); } char filename[256]; while(1){ //printf("Enter filename: "); fgets(filename, 256, stdin); strtok(filename, "\n"); image im = load_image_color(filename, 200, 60); translate_image(im, -128); scale_image(im, 1/128.); float *X = im.data; float *predictions = network_predict(net, X); print_letters(predictions, 10); free_image(im); } }
void augment_image::shift(const cv::Mat &input, std::vector<cv::Mat> &results) const { cv::Mat temp; if(random_){ translate_image(input, temp, shift_hor_distribution_(gen_), 0.f); }else{ translate_image(input, temp, horizontal_shift_range_, 0.f); } results.emplace_back(temp.clone()); if(random_){ translate_image(input, temp, 0.f, shift_ver_distribution_(gen_)); }else{ translate_image(input, temp, 0.f, vertical_shift_range_); } results.emplace_back(temp); }
void reconstruct_picture(network net, float *features, image recon, image update, float rate, float momentum, float lambda, int smooth_size) { scale_image(recon, 2); translate_image(recon, -1); image delta = make_image(recon.w, recon.h, recon.c); network_state state = {0}; #ifdef GPU state.input = cuda_make_array(recon.data, recon.w*recon.h*recon.c); state.delta = cuda_make_array(delta.data, delta.w*delta.h*delta.c); state.truth = cuda_make_array(features, get_network_output_size(net)); forward_network_gpu(net, state); backward_network_gpu(net, state); cuda_pull_array(state.delta, delta.data, delta.w*delta.h*delta.c); cuda_free(state.input); cuda_free(state.delta); cuda_free(state.truth); #else state.input = recon.data; state.delta = delta.data; state.truth = features; forward_network(net, state); backward_network(net, state); #endif axpy_cpu(recon.w*recon.h*recon.c, 1, delta.data, 1, update.data, 1); smooth(recon, update, lambda, smooth_size); axpy_cpu(recon.w*recon.h*recon.c, rate, update.data, 1, recon.data, 1); scal_cpu(recon.w*recon.h*recon.c, momentum, update.data, 1); translate_image(recon, 1); scale_image(recon, .5); constrain_image(recon); free_image(delta); }
/* Emit required "SSBO" and sampler state. The sampler state is used by the * hw for imageLoad(), and "SSBO" state for imageStore(). Returns max sampler * used. */ void fd6_emit_images(struct fd_context *ctx, struct fd_ringbuffer *ring, enum pipe_shader_type shader) { struct fd_shaderimg_stateobj *so = &ctx->shaderimg[shader]; unsigned enabled_mask = so->enabled_mask; while (enabled_mask) { unsigned index = u_bit_scan(&enabled_mask); unsigned slot = get_image_slot(index); struct fd6_image img; translate_image(&img, &so->si[index]); emit_image_tex(ring, slot, &img, shader); emit_image_ssbo(ring, slot, &img, shader); } }
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); net->n = max_layer + 1; int dx = rand()%16 - 8; int dy = rand()%16 - 8; int flip = rand()%2; image crop = crop_image(orig, dx, dy, orig.w, orig.h); image im = resize_image(crop, (int)(orig.w * scale), (int)(orig.h * scale)); if(flip) flip_image(im); resize_network(net, im.w, im.h); layer last = net->layers[net->n-1]; //net->layers[net->n - 1].activation = LINEAR; image delta = make_image(im.w, im.h, im.c); network_state state = {0}; #ifdef GPU state.input = cuda_make_array(im.data, 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); cuda_pull_array(last.delta_gpu, last.delta, last.outputs); calculate_loss(last.delta, last.delta, last.outputs, thresh); cuda_push_array(last.delta_gpu, last.delta, last.outputs); backward_network_gpu(*net, state); cuda_pull_array(state.delta, delta.data, im.w*im.h*im.c); cuda_free(state.input); cuda_free(state.delta); #else state.input = im.data; state.delta = delta.data; forward_network(*net, state); copy_cpu(last.outputs, last.output, 1, last.delta, 1); calculate_loss(last.output, last.delta, last.outputs, thresh); backward_network(*net, state); #endif if(flip) flip_image(delta); //normalize_array(delta.data, delta.w*delta.h*delta.c); image resized = resize_image(delta, orig.w, orig.h); image out = crop_image(resized, -dx, -dy, orig.w, orig.h); /* image g = grayscale_image(out); free_image(out); out = g; */ //rate = rate / abs_mean(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); /* normalize_array(orig.data, orig.w*orig.h*orig.c); scale_image(orig, sqrt(var)); translate_image(orig, mean); */ translate_image(orig, 1); scale_image(orig, .5); //normalize_image(orig); constrain_image(orig); free_image(crop); free_image(im); free_image(delta); free_image(resized); free_image(out); }