From cd8d53df21f3ad2810add2a8cff766c745f55a17 Mon Sep 17 00:00:00 2001
From: Joseph Redmon <pjreddie@gmail.com>
Date: Fri, 09 May 2014 22:14:52 +0000
Subject: [PATCH] So there WAS this huge bug. Gone now

---
 src/tests.c |   63 ++++++++++++++-----------------
 1 files changed, 28 insertions(+), 35 deletions(-)

diff --git a/src/tests.c b/src/tests.c
index 0319947..8105404 100644
--- a/src/tests.c
+++ b/src/tests.c
@@ -52,7 +52,7 @@
 	int i;
 	clock_t start = clock(), end;
 	for(i = 0; i < 1000; ++i){
-		im2col_cpu(dog.data,  dog.c,  dog.h,  dog.w,  size,  stride, matrix);
+		im2col_cpu(dog.data,  1, dog.c,  dog.h,  dog.w,  size,  stride, matrix);
 		gemm(0,0,n,mw,mh,1,filters,mh,matrix,mw,1,edge.data,mw);
 	}
 	end = clock();
@@ -168,7 +168,7 @@
 		float v = ((float)rand()/RAND_MAX);
 		float truth = v*v;
 		input[0] = v;
-		forward_network(net, input);
+		forward_network(net, input, 1);
 		float *out = get_network_output(net);
 		float *delta = get_network_delta(net);
 		float err = pow((out[0]-truth),2.);
@@ -245,7 +245,7 @@
 		normalize_data_rows(test);
 		for(j = 0; j < test.X.rows; ++j){
 			float *x = test.X.vals[j];
-			forward_network(net, x);
+			forward_network(net, x, 0);
 			int class = get_predicted_class_network(net);
 			fprintf(fp, "%d\n", class);
 		}
@@ -302,9 +302,9 @@
 {
 	srand(444444);
 	srand(888888);
-	network net = parse_network_cfg("cfg/nist_basic.cfg");
-	data train = load_categorical_data_csv("mnist/mnist_train.csv", 0, 10);
-	data test = load_categorical_data_csv("mnist/mnist_test.csv",0,10);
+	network net = parse_network_cfg("cfg/nist.cfg");
+	data train = load_categorical_data_csv("data/mnist/mnist_train.csv", 0, 10);
+	data test = load_categorical_data_csv("data/mnist/mnist_test.csv",0,10);
 	normalize_data_rows(train);
 	normalize_data_rows(test);
 	//randomize_data(train);
@@ -317,21 +317,13 @@
 	int batch = 10000;
 	while(++count <= 10000){
 		float loss = train_network_sgd(net, train, batch, lr, momentum, decay);
-		printf("%5f %5f\n",(double)count*batch/train.X.rows, loss);
+		float test_acc = network_accuracy(net, test);
+		printf("%3d %5f %5f\n",count, loss, test_acc);
 		//printf("%5d Training Loss: %lf, Params: %f %f %f, ",count*1000, loss, lr, momentum, decay);
 		//end = clock();
 		//printf("Time: %lf seconds\n", (float)(end-start)/CLOCKS_PER_SEC);
 		//start=end;
-		/*
-		   if(count%5 == 0){
-		   float train_acc = network_accuracy(net, train);
-		   fprintf(stderr, "\nTRAIN: %f\n", train_acc);
-		   float test_acc = network_accuracy(net, test);
-		   fprintf(stderr, "TEST: %f\n\n", test_acc);
-		   printf("%d, %f, %f\n", count, train_acc, test_acc);
 		//lr *= .5;
-		}
-		*/
 	}
 }
 
@@ -387,7 +379,7 @@
 			int index = rand()%m.rows;
 			//image p = float_to_image(1690,1,1,m.vals[index]);
 			//normalize_image(p);
-			forward_network(net, m.vals[index]);
+			forward_network(net, m.vals[index], 1);
 			float *out = get_network_output(net);
 			float *delta = get_network_delta(net);
 			//printf("%f\n", out[0]);
@@ -408,7 +400,7 @@
 	matrix test = csv_to_matrix("test.csv");
 	truth = pop_column(&test, 0);
 	for(i = 0; i < test.rows; ++i){
-		forward_network(net, test.vals[i]);
+		forward_network(net, test.vals[i], 0);
 		float *out = get_network_output(net);
 		if(fabs(out[0]) < .5) fprintf(fp, "0\n");
 		else fprintf(fp, "1\n");
@@ -439,7 +431,7 @@
 	float *matrix = calloc(msize, sizeof(float));
 	int i;
 	for(i = 0; i < 1000; ++i){
-		im2col_cpu(test.data,  c,  h,  w,  size,  stride, matrix);
+		im2col_cpu(test.data, 1, c,  h,  w,  size,  stride, matrix);
 		//image render = float_to_image(mh, mw, mc, matrix);
 	}
 }
@@ -503,10 +495,11 @@
 	IplImage *sized = cvCreateImage(cvSize(w,h), src->depth, src->nChannels);
 	cvResize(src, sized, CV_INTER_LINEAR);
 	image im = ipl_to_image(sized);
-	normalize_array(im.data, im.h*im.w*im.c);
+	//normalize_array(im.data, im.h*im.w*im.c);
+	translate_image(im, -144);
 	resize_network(net, im.h, im.w, im.c);
-	forward_network(net, im.data);
-	image out = get_network_image_layer(net, 6);
+	forward_network(net, im.data, 0);
+	image out = get_network_image(net);
 	free_image(im);
 	cvReleaseImage(&sized);
 	return copy_image(out);
@@ -557,7 +550,7 @@
 		resize_network(net, im.h, im.w, im.c);
 		//scale_image(im, 1./255);
 		translate_image(im, -144);
-		forward_network(net, im.data);
+		forward_network(net, im.data, 0);
 		image out = get_network_image(net);
 
 		int dh = (im.h - h)/(out.h-1);
@@ -619,7 +612,7 @@
 		image im = load_image(image_path, 0, 0);
 		printf("Processing %dx%d image\n", im.h, im.w);
 		resize_network(net, im.h, im.w, im.c);
-		forward_network(net, im.data);
+		forward_network(net, im.data, 0);
 		image out = get_network_image(net);
 
 		int dh = (im.h - h)/h;
@@ -652,17 +645,14 @@
 	image im = load_image("data/cat.png", 0, 0);
 	printf("Processing %dx%d image\n", im.h, im.w);
 	resize_network(net, im.h, im.w, im.c);
-	forward_network(net, im.data);
+	forward_network(net, im.data, 0);
 
-	image out = get_network_image(net);
 	visualize_network(net);
-	cvWaitKey(1000);
 	cvWaitKey(0);
 }
 
-void features_VOC_image(char *image_file, char *image_dir, char *out_dir)
+void features_VOC_image(char *image_file, char *image_dir, char *out_dir, int flip)
 {
-	int flip = 1;
 	int interval = 4;
 	int i,j;
 	network net = parse_network_cfg("cfg/voc_imagenet.cfg");
@@ -672,8 +662,6 @@
 	if (flip)sprintf(out_path, "%s%d/%s_r.txt",out_dir, interval, image_file);
 	else sprintf(out_path, "%s%d/%s.txt",out_dir, interval, image_file);
 	printf("%s\n", image_file);
-	FILE *fp = fopen(out_path, "w");
-	if(fp == 0) file_error(out_path);
 
 	IplImage* src = 0;
 	if( (src = cvLoadImage(image_path,-1)) == 0 ) file_error(image_path);
@@ -709,12 +697,16 @@
 			ims[j+interval] = features_output_size(net, src, ex_h, ex_w);
 		}
 	}
+	FILE *fp = fopen(out_path, "w");
+	if(fp == 0) file_error(out_path);
 	for(i = 0; i < max_scale+interval; ++i){
 		image out = ims[i];
 		fprintf(fp, "%d, %d, %d\n",out.c, out.h, out.w);
 		for(j = 0; j < out.c*out.h*out.w; ++j){
 			if(j != 0)fprintf(fp, ",");
-			fprintf(fp, "%g", out.data[j]);
+			float o = out.data[j];
+			if(o < 0) o = 0;
+			fprintf(fp, "%g", o);
 		}
 		fprintf(fp, "\n");
 		free_image(out);
@@ -782,15 +774,16 @@
 	//    test_im2row();
 	//test_split();
 	//test_ensemble();
-	//test_nist();
+	test_nist();
 	//test_cifar10();
 	//test_vince();
 	//test_full();
 	//train_VOC();
-	//features_VOC_image(argv[1], argv[2], argv[3]);
+	//features_VOC_image(argv[1], argv[2], argv[3], 0);
+	//features_VOC_image(argv[1], argv[2], argv[3], 1);
 	//features_VOC_image_size(argv[1], atoi(argv[2]), atoi(argv[3]));
 	//visualize_imagenet_features("data/assira/train.list");
-	visualize_imagenet_topk("data/VOC2012.list");
+	//visualize_imagenet_topk("data/VOC2012.list");
 	//visualize_cat();
 	//flip_network();
 	//test_visualize();

--
Gitblit v1.10.0