5 void train_segmenter(
char *datacfg,
char *cfgfile,
char *weightfile,
int *gpus,
int ngpus,
int clear,
int display)
12 printf(
"%d\n", ngpus);
17 for(i = 0; i < ngpus; ++i){
29 int div = net->
w/pred.
w;
30 assert(pred.
w * div == net->
w);
31 assert(pred.
h * div == net->
h);
38 char *backup_directory =
option_find_str(options,
"backup",
"/backup/");
39 char *train_list =
option_find_str(options,
"train",
"data/train.list");
43 printf(
"%d\n", plist->
size);
73 int epoch = (*net->
seen)/N;
77 pthread_join(load_thread, 0);
89 loss = train_networks(nets, ngpus, train, 4);
105 if(avg_loss == -1) avg_loss = loss;
106 avg_loss = avg_loss*.9 + loss*.1;
107 printf(
"%ld, %.3f: %f, %f avg, %f rate, %lf seconds, %ld images\n",
get_current_batch(net), (
float)(*net->
seen)/N, loss, avg_loss,
get_current_rate(net),
what_time_is_it_now()-time, *net->
seen);
109 if(*net->
seen/N > epoch){
110 epoch = *net->
seen/N;
112 sprintf(buff,
"%s/%s_%d.weights",backup_directory,base, epoch);
117 sprintf(buff,
"%s/%s.backup",backup_directory,base);
122 sprintf(buff,
"%s/%s.weights", backup_directory, base);
142 strncpy(input, filename, 256);
144 printf(
"Enter Image Path: ");
146 input = fgets(input, 256, stdin);
153 float *X = sized.
data;
158 printf(
"Predicted: %f\n", predictions[0]);
159 printf(
"%s: Predicted in %f seconds.\n", input,
sec(clock()-time));
170 void demo_segmenter(
char *datacfg,
char *cfg,
char *weights,
int cam_index,
const char *filename)
173 printf(
"Classifier Demo\n");
181 cap = cvCaptureFromFile(filename);
183 cap = cvCaptureFromCAM(cam_index);
186 if(!cap)
error(
"Couldn't connect to webcam.\n");
187 cvNamedWindow(
"Segmenter", CV_WINDOW_NORMAL);
188 cvResizeWindow(
"Segmenter", 512, 512);
192 struct timeval tval_before, tval_after, tval_result;
193 gettimeofday(&tval_before, NULL);
195 image in = get_image_from_stream(cap);
202 printf(
"\nFPS:%.0f\n",fps);
212 gettimeofday(&tval_after, NULL);
213 timersub(&tval_after, &tval_before, &tval_result);
214 float curr = 1000000.f/((
long int)tval_result.tv_usec);
215 fps = .9*fps + .1*curr;
224 fprintf(stderr,
"usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]);
233 printf(
"%s\n", gpu_list);
234 int len = strlen(gpu_list);
237 for(i = 0; i < len; ++i){
238 if (gpu_list[i] ==
',') ++ngpus;
240 gpus = calloc(ngpus,
sizeof(
int));
241 for(i = 0; i < ngpus; ++i){
242 gpus[i] = atoi(gpu_list);
243 gpu_list = strchr(gpu_list,
',')+1;
252 int clear =
find_arg(argc, argv,
"-clear");
253 int display =
find_arg(argc, argv,
"-display");
254 char *
data = argv[3];
256 char *weights = (argc > 5) ? argv[5] : 0;
257 char *filename = (argc > 6) ? argv[6]: 0;
259 else if(0==strcmp(argv[2],
"train"))
train_segmenter(data, cfg, weights, gpus, ngpus, clear, display);
260 else if(0==strcmp(argv[2],
"demo"))
demo_segmenter(data, cfg, weights, cam_index, filename);
void demo_segmenter(char *datacfg, char *cfg, char *weights, int cam_index, const char *filename)
int find_arg(int argc, char *argv[], char *arg)
void set_batch_network(network *net, int b)
void predict_segmenter(char *datafile, char *cfg, char *weights, char *filename)
int show_image(image p, const char *name, int ms)
char * find_char_arg(int argc, char **argv, char *arg, char *def)
char * basecfg(char *cfgfile)
void ** list_to_array(list *l)
char * option_find_str(list *l, char *key, char *def)
float train_network(network *net, data d)
void free_network(network *net)
image float_to_image(int w, int h, int c, float *data)
void save_weights(network *net, char *filename)
image get_network_image(network *net)
image load_image_color(char *filename, int w, int h)
float get_current_rate(network *net)
float sec(clock_t clocks)
int find_int_arg(int argc, char **argv, char *arg, int def)
network * load_network(char *cfg, char *weights, int clear)
void * load_thread(void *ptr)
void cuda_set_device(int n)
void run_segmenter(int argc, char **argv)
list * read_data_cfg(char *filename)
size_t get_current_batch(network *net)
list * get_paths(char *filename)
void train_segmenter(char *datacfg, char *cfgfile, char *weightfile, int *gpus, int ngpus, int clear, int display)
pthread_t load_data(load_args args)
void error(const char *s)
image mask_to_rgb(image mask)
double what_time_is_it_now()