mirror of
https://github.com/pjreddie/darknet.git
synced 2023-08-10 21:13:14 +03:00
Minor fix
This commit is contained in:
@ -952,6 +952,8 @@ LIB_API int network_height(network *net);
|
||||
LIB_API void optimize_picture(network *net, image orig, int max_layer, float scale, float rate, float thresh, int norm);
|
||||
|
||||
// image.h
|
||||
LIB_API void make_image_red(image im);
|
||||
LIB_API image make_attention_image(int img_size, float *original_delta_cpu, float *original_input_cpu, int w, int h, int c);
|
||||
LIB_API image resize_image(image im, int w, int h);
|
||||
LIB_API image quantize_image(image im);
|
||||
LIB_API void copy_image_from_bytes(image im, char *pdata);
|
||||
|
53
src/image.c
53
src/image.c
@ -1310,6 +1310,59 @@ image quantize_image(image im)
|
||||
for (i = 0; i < size; ++i) im.data[i] = (int)(im.data[i] * 255) / 255. + (0.5/255);
|
||||
}
|
||||
|
||||
void make_image_red(image im)
|
||||
{
|
||||
int r, c, k;
|
||||
for (r = 0; r < im.h; ++r) {
|
||||
for (c = 0; c < im.w; ++c) {
|
||||
float val = 0;
|
||||
for (k = 0; k < im.c; ++k) {
|
||||
val += get_pixel(im, c, r, k);
|
||||
set_pixel(im, c, r, k, 0);
|
||||
}
|
||||
for (k = 0; k < im.c; ++k) {
|
||||
//set_pixel(im, c, r, k, val);
|
||||
}
|
||||
set_pixel(im, c, r, 0, val);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
image make_attention_image(int img_size, float *original_delta_cpu, float *original_input_cpu, int w, int h, int c)
|
||||
{
|
||||
image attention_img;
|
||||
attention_img.w = w;
|
||||
attention_img.h = h;
|
||||
attention_img.c = c;
|
||||
attention_img.data = original_delta_cpu;
|
||||
make_image_red(attention_img);
|
||||
|
||||
int k;
|
||||
float min_val = 999999, mean_val = 0, max_val = -999999;
|
||||
for (k = 0; k < img_size; ++k) {
|
||||
if (original_delta_cpu[k] < min_val) min_val = original_delta_cpu[k];
|
||||
if (original_delta_cpu[k] > max_val) max_val = original_delta_cpu[k];
|
||||
mean_val += original_delta_cpu[k];
|
||||
}
|
||||
mean_val = mean_val / img_size;
|
||||
float range = max_val - min_val;
|
||||
|
||||
for (k = 0; k < img_size; ++k) {
|
||||
float val = original_delta_cpu[k];
|
||||
val = fabs(mean_val - val) / range;
|
||||
original_delta_cpu[k] = val * 4;
|
||||
}
|
||||
|
||||
image resized = resize_image(attention_img, w / 4, h / 4);
|
||||
attention_img = resize_image(resized, w, h);
|
||||
free_image(resized);
|
||||
for (k = 0; k < img_size; ++k) attention_img.data[k] += original_input_cpu[k];
|
||||
|
||||
//normalize_image(attention_img);
|
||||
//show_image(attention_img, "delta");
|
||||
return attention_img;
|
||||
}
|
||||
|
||||
image resize_image(image im, int w, int h)
|
||||
{
|
||||
if (im.w == w && im.h == h) return copy_image(im);
|
||||
|
@ -235,36 +235,9 @@ void backward_network_gpu(network net, network_state state)
|
||||
cuda_pull_array(original_input, original_input_cpu, img_size);
|
||||
cuda_pull_array(original_delta, original_delta_cpu, img_size);
|
||||
|
||||
image attention_img;
|
||||
attention_img.w = net.w;
|
||||
attention_img.h = net.h;
|
||||
attention_img.c = net.c;
|
||||
attention_img.data = original_delta_cpu;
|
||||
int k;
|
||||
float min_val = 999999, mean_val = 0, max_val = -999999;
|
||||
for (k = 0; k < img_size; ++k) {
|
||||
if (original_delta_cpu[k] < min_val) min_val = original_delta_cpu[k];
|
||||
if (original_delta_cpu[k] > max_val) max_val = original_delta_cpu[k];
|
||||
mean_val += original_delta_cpu[k];
|
||||
}
|
||||
mean_val = mean_val / img_size;
|
||||
float range = max_val - min_val;
|
||||
image attention_img = make_attention_image(img_size, original_delta_cpu, original_input_cpu, net.w, net.h, net.c);
|
||||
show_image(attention_img, "attention_img");
|
||||
|
||||
for (k = 0; k < img_size; ++k) {
|
||||
float val = original_delta_cpu[k];
|
||||
val = fabs(mean_val - val) / range;
|
||||
original_delta_cpu[k] = val * 4;
|
||||
}
|
||||
|
||||
image resized = resize_image(attention_img, net.w/4, net.w/4);
|
||||
attention_img = resize_image(resized, net.w, net.w);
|
||||
|
||||
for (k = 0; k < img_size; ++k) attention_img.data[k] += original_input_cpu[k];
|
||||
|
||||
//normalize_image(attention_img);
|
||||
show_image(attention_img, "delta");
|
||||
|
||||
free_image(resized);
|
||||
free_image(attention_img);
|
||||
|
||||
free(original_input_cpu);
|
||||
@ -376,7 +349,7 @@ void forward_backward_network_gpu(network net, float *x, float *y)
|
||||
float train_network_datum_gpu(network net, float *x, float *y)
|
||||
{
|
||||
*net.seen += net.batch;
|
||||
if (net.adversarial_lr && rand_int(0, 1) == 1) {// && get_current_iteration(net) > net.burn_in) {
|
||||
if (net.adversarial_lr && rand_int(0, 1) == 1 && get_current_iteration(net) > net.burn_in) {
|
||||
net.adversarial = 1;
|
||||
float lr_old = net.learning_rate;
|
||||
net.learning_rate = net.adversarial_lr;
|
||||
|
Reference in New Issue
Block a user