From 118bdd6f624a81c7b43689943485f8d70cbd944e Mon Sep 17 00:00:00 2001
From: Joseph Redmon <pjreddie@gmail.com>
Date: Fri, 14 Feb 2014 18:26:31 +0000
Subject: [PATCH] Training on VOC
---
src/tests.c | 81 ++++++++++++++++++++++++++++++++--------
1 files changed, 64 insertions(+), 17 deletions(-)
diff --git a/src/tests.c b/src/tests.c
index 00cd1a1..09ec7b2 100644
--- a/src/tests.c
+++ b/src/tests.c
@@ -19,7 +19,7 @@
void test_convolve()
{
- image dog = load_image("dog.jpg");
+ image dog = load_image("dog.jpg",300,400);
printf("dog channels %d\n", dog.c);
image kernel = make_random_image(3,3,dog.c);
image edge = make_image(dog.h, dog.w, 1);
@@ -35,7 +35,7 @@
void test_convolve_matrix()
{
- image dog = load_image("dog.jpg");
+ image dog = load_image("dog.jpg",300,400);
printf("dog channels %d\n", dog.c);
int size = 11;
@@ -64,7 +64,7 @@
void test_color()
{
- image dog = load_image("test_color.png");
+ image dog = load_image("test_color.png", 300, 400);
show_image_layers(dog, "Test Color");
}
@@ -124,13 +124,13 @@
void test_load()
{
- image dog = load_image("dog.jpg");
+ image dog = load_image("dog.jpg", 300, 400);
show_image(dog, "Test Load");
show_image_layers(dog, "Test Load");
}
void test_upsample()
{
- image dog = load_image("dog.jpg");
+ image dog = load_image("dog.jpg", 300, 400);
int n = 3;
image up = make_image(n*dog.h, n*dog.w, dog.c);
upsample_image(dog, n, up);
@@ -141,7 +141,7 @@
void test_rotate()
{
int i;
- image dog = load_image("dog.jpg");
+ image dog = load_image("dog.jpg",300,400);
clock_t start = clock(), end;
for(i = 0; i < 1001; ++i){
rotate_image(dog);
@@ -184,24 +184,39 @@
void test_data()
{
char *labels[] = {"cat","dog"};
- data train = load_data_image_pathfile_random("train_paths.txt", 101,labels, 2);
+ data train = load_data_image_pathfile_random("train_paths.txt", 101,labels, 2, 300, 400);
free_data(train);
}
void test_full()
{
network net = parse_network_cfg("full.cfg");
- srand(0);
- int i = 0;
+ srand(2222222);
+ int i = 800;
char *labels[] = {"cat","dog"};
float lr = .00001;
float momentum = .9;
float decay = 0.01;
while(i++ < 1000 || 1){
- data train = load_data_image_pathfile_random("train_paths.txt", 1000, labels, 2);
- train_network(net, train, lr, momentum, decay);
+ visualize_network(net);
+ cvWaitKey(100);
+ data train = load_data_image_pathfile_random("train_paths.txt", 1000, labels, 2, 256, 256);
+ image im = float_to_image(256, 256, 3,train.X.vals[0]);
+ show_image(im, "input");
+ cvWaitKey(100);
+ //scale_data_rows(train, 1./255.);
+ normalize_data_rows(train);
+ clock_t start = clock(), end;
+ float loss = train_network_sgd(net, train, 100, lr, momentum, decay);
+ end = clock();
+ printf("%d: %f, Time: %lf seconds, LR: %f, Momentum: %f, Decay: %f\n", i, loss, (float)(end-start)/CLOCKS_PER_SEC, lr, momentum, decay);
free_data(train);
- printf("Round %d\n", i);
+ if(i%100==0){
+ char buff[256];
+ sprintf(buff, "backup_%d.cfg", i);
+ //save_network(net, buff);
+ }
+ //lr *= .99;
}
}
@@ -218,7 +233,7 @@
int count = 0;
float lr = .0005;
float momentum = .9;
- float decay = 0.01;
+ float decay = 0.001;
clock_t start = clock(), end;
while(++count <= 100){
//visualize_network(net);
@@ -227,7 +242,7 @@
end = clock();
printf("Time: %lf seconds\n", (float)(end-start)/CLOCKS_PER_SEC);
start=end;
- cvWaitKey(100);
+ //cvWaitKey(100);
//lr /= 2;
if(count%5 == 0){
float train_acc = network_accuracy(net, train);
@@ -235,7 +250,7 @@
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;
+ //lr *= .5;
}
}
}
@@ -345,7 +360,38 @@
int i;
for(i = 0; i < 1000; ++i){
im2col_cpu(test.data, c, h, w, size, stride, matrix);
- image render = float_to_image(mh, mw, mc, matrix);
+ //image render = float_to_image(mh, mw, mc, matrix);
+ }
+}
+
+void train_VOC()
+{
+ network net = parse_network_cfg("cfg/voc_backup_ramp_80.cfg");
+ srand(2222222);
+ int i = 0;
+ char *labels[] = {"aeroplane","bicycle","bird","boat","bottle","bus","car","cat","chair","cow","diningtable","dog","horse","motorbike","person","pottedplant","sheep","sofa","train","tvmonitor"};
+ float lr = .00001;
+ float momentum = .9;
+ float decay = 0.01;
+ while(i++ < 1000 || 1){
+ visualize_network(net);
+ cvWaitKey(100);
+ data train = load_data_image_pathfile_random("images/VOC2012/train_paths.txt", 1000, labels, 20, 300, 400);
+ image im = float_to_image(300, 400, 3,train.X.vals[0]);
+ show_image(im, "input");
+ cvWaitKey(100);
+ normalize_data_rows(train);
+ clock_t start = clock(), end;
+ float loss = train_network_sgd(net, train, 1000, lr, momentum, decay);
+ end = clock();
+ printf("%d: %f, Time: %lf seconds, LR: %f, Momentum: %f, Decay: %f\n", i, loss, (float)(end-start)/CLOCKS_PER_SEC, lr, momentum, decay);
+ free_data(train);
+ if(i%10==0){
+ char buff[256];
+ sprintf(buff, "cfg/voc_backup_ramp_%d.cfg", i);
+ save_network(net, buff);
+ }
+ //lr *= .99;
}
}
@@ -358,8 +404,9 @@
// test_im2row();
//test_split();
//test_ensemble();
- test_nist();
+ //test_nist();
//test_full();
+ train_VOC();
//test_random_preprocess();
//test_random_classify();
//test_parser();
--
Gitblit v1.10.0