4 image get_image_from_stream(CvCapture *cap);
5 image ipl_to_image(IplImage* src);
18 assert(net.
batch == steps + 1);
20 int output_size = out_im.
w*out_im.
h*out_im.
c;
21 printf(
"%d %d %d\n", out_im.
w, out_im.
h, out_im.
c);
22 float *feats = calloc(net.
batch*batch*output_size,
sizeof(
float));
23 for(b = 0; b < batch; ++b){
24 int input_size = net.
w*net.
h*net.
c;
25 float *input = calloc(input_size*net.
batch,
sizeof(
float));
26 char *filename = files[rand()%n];
27 CvCapture *cap = cvCaptureFromFile(filename);
28 int frames = cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_COUNT);
29 int index = rand() % (frames - steps - 2);
30 if (frames < (steps + 4)){
36 printf(
"frames: %d, index: %d\n", frames, index);
37 cvSetCaptureProperty(cap, CV_CAP_PROP_POS_FRAMES, index);
40 for(i = 0; i < net.
batch; ++i){
41 IplImage* src = cvQueryFrame(cap);
47 memcpy(input + i*input_size, re.
data, input_size*
sizeof(
float));
55 for(i = 0; i < net.
batch; ++i){
56 memcpy(feats + (b + i*batch)*output_size, output + i*output_size, output_size*
sizeof(
float));
59 cvReleaseCapture(&cap);
65 p.
y = feats + output_size*batch;
71 void train_vid_rnn(
char *cfgfile,
char *weightfile)
73 char *train_videos =
"data/vid/train.txt";
74 char *backup_directory =
"/home/pjreddie/backup/";
85 int i = *net.
seen/imgs;
95 load_weights(&extractor,
"/home/pjreddie/trained/yolo-coco.conv");
100 float_pair p = get_rnn_vid_data(extractor, paths, N, batch, steps);
108 if (avg_loss < 0) avg_loss = loss;
109 avg_loss = avg_loss*.9 + loss*.1;
111 fprintf(stderr,
"%d: %f, %f avg, %f rate, %lf seconds\n", i, loss, avg_loss,
get_current_rate(net),
sec(clock()-time));
114 sprintf(buff,
"%s/%s_%d.weights", backup_directory, base, i);
119 sprintf(buff,
"%s/%s.backup", backup_directory, base);
124 sprintf(buff,
"%s/%s_final.weights", backup_directory, base);
129 image save_reconstruction(
network net,
image *init,
float *feat,
char *name,
int i)
141 sprintf(buff,
"%s%d", name, i);
147 void generate_vid_rnn(
char *cfgfile,
char *weightfile)
150 load_weights(&extractor,
"/home/pjreddie/trained/yolo-coco.conv");
160 CvCapture *cap = cvCaptureFromFile(
"/extra/vid/ILSVRC2015/Data/VID/snippets/val/ILSVRC2015_val_00007030.mp4");
164 for(i = 0; i < 25; ++i){
165 image im = get_image_from_stream(cap);
171 printf(
"%f\n",
mse_array(feat, 14*14*512));
172 axpy_cpu(14*14*512, -1, feat, 1, next, 1);
173 printf(
"%f\n",
mse_array(next, 14*14*512));
179 free_image(save_reconstruction(extractor, 0, feat,
"feat", i));
180 free_image(save_reconstruction(extractor, 0, next,
"next", i));
184 for(i = 0; i < 30; ++i){
186 image new = save_reconstruction(extractor, &last, next,
"new", i);
195 fprintf(stderr,
"usage: %s %s [train/test/valid] [cfg] [weights (optional)]\n", argv[0], argv[1]);
200 char *weights = (argc > 4) ? argv[4] : 0;
202 if(0==strcmp(argv[2],
"train")) train_vid_rnn(cfg, weights);
203 else if(0==strcmp(argv[2],
"generate")) generate_vid_rnn(cfg, weights);
image resize_image(image im, int w, int h)
image copy_image(image p)
float variance_array(float *a, int n)
void set_batch_network(network *net, int b)
char * basecfg(char *cfgfile)
float mse_array(float *a, int n)
void ** list_to_array(list *l)
void reconstruct_picture(network *net, float *features, image recon, image update, float rate, float momentum, float lambda, int smooth_size, int iters)
void save_image(image p, const char *name)
void save_weights(network *net, char *filename)
network * parse_network_cfg(char *filename)
image make_random_image(int w, int h, int c)
image get_network_image(network *net)
float mean_array(float *a, int n)
void run_vid_rnn(int argc, char **argv)
void axpy_cpu(int N, float ALPHA, float *X, int INCX, float *Y, int INCY)
float get_current_rate(network *net)
float sec(clock_t clocks)
void copy_cpu(int N, float *X, int INCX, float *Y, int INCY)
size_t get_current_batch(network *net)
list * get_paths(char *filename)
float train_network_datum(network *net)
void load_weights(network *net, char *filename)