mirror of
https://github.com/pjreddie/darknet.git
synced 2023-08-10 21:13:14 +03:00
Fix mAP chart
This commit is contained in:
@ -222,7 +222,7 @@ void train_detector(char *datacfg, char *cfgfile, char *weightfile, int *gpus, i
|
|||||||
|
|
||||||
i = get_current_batch(net);
|
i = get_current_batch(net);
|
||||||
if (net.cudnn_half) {
|
if (net.cudnn_half) {
|
||||||
if (i < net.burn_in) printf("\n Tensor Cores are disabled until the first %d iterations are reached.", 2*net.burn_in);
|
if (i < net.burn_in*3) printf("\n Tensor Cores are disabled until the first %d iterations are reached.", 3*net.burn_in);
|
||||||
else printf("\n Tensor Cores are used.");
|
else printf("\n Tensor Cores are used.");
|
||||||
}
|
}
|
||||||
printf("\n %d: %f, %f avg loss, %f rate, %lf seconds, %d images\n", get_current_batch(net), loss, avg_loss, get_current_rate(net), (what_time_is_it_now()-time), i*imgs);
|
printf("\n %d: %f, %f avg loss, %f rate, %lf seconds, %d images\n", get_current_batch(net), loss, avg_loss, get_current_rate(net), (what_time_is_it_now()-time), i*imgs);
|
||||||
@ -232,6 +232,19 @@ void train_detector(char *datacfg, char *cfgfile, char *weightfile, int *gpus, i
|
|||||||
int draw_precision = 0;
|
int draw_precision = 0;
|
||||||
int calc_map_for_each = 4 * train_images_num / (net.batch * net.subdivisions);
|
int calc_map_for_each = 4 * train_images_num / (net.batch * net.subdivisions);
|
||||||
if (calc_map && (i >= (iter_map + calc_map_for_each) || i == net.max_batches) && i >= net.burn_in && i >= 1000) {
|
if (calc_map && (i >= (iter_map + calc_map_for_each) || i == net.max_batches) && i >= net.burn_in && i >= 1000) {
|
||||||
|
if (l.random) {
|
||||||
|
printf("Resizing to initial size: %d x %d \n", init_w, init_h);
|
||||||
|
args.w = init_w;
|
||||||
|
args.h = init_h;
|
||||||
|
pthread_join(load_thread, 0);
|
||||||
|
train = buffer;
|
||||||
|
load_thread = load_data(args);
|
||||||
|
int k;
|
||||||
|
for (k = 0; k < ngpus; ++k) {
|
||||||
|
resize_network(nets + k, init_w, init_h);
|
||||||
|
}
|
||||||
|
net = nets[0];
|
||||||
|
}
|
||||||
iter_map = i;
|
iter_map = i;
|
||||||
mean_average_precision = validate_detector_map(datacfg, cfgfile, weightfile, 0.25, 0.5, &net);
|
mean_average_precision = validate_detector_map(datacfg, cfgfile, weightfile, 0.25, 0.5, &net);
|
||||||
printf("\n mean_average_precision = %f \n", mean_average_precision);
|
printf("\n mean_average_precision = %f \n", mean_average_precision);
|
||||||
|
22
src/image.c
22
src/image.c
@ -737,6 +737,7 @@ void draw_train_loss(IplImage* img, int img_size, float avg_loss, float max_img_
|
|||||||
if (draw_precision) {
|
if (draw_precision) {
|
||||||
static float old_precision = 0;
|
static float old_precision = 0;
|
||||||
static int iteration_old = 0;
|
static int iteration_old = 0;
|
||||||
|
static int text_iteration_old = 0;
|
||||||
if(iteration_old == 0) cvPutText(img, "mAP%", cvPoint(0, 12), &font, CV_RGB(255, 0, 0));
|
if(iteration_old == 0) cvPutText(img, "mAP%", cvPoint(0, 12), &font, CV_RGB(255, 0, 0));
|
||||||
|
|
||||||
cvLine(img,
|
cvLine(img,
|
||||||
@ -744,16 +745,19 @@ void draw_train_loss(IplImage* img, int img_size, float avg_loss, float max_img_
|
|||||||
cvPoint(img_offset + draw_size * (float)current_batch / max_batches, draw_size * (1 - precision)),
|
cvPoint(img_offset + draw_size * (float)current_batch / max_batches, draw_size * (1 - precision)),
|
||||||
CV_RGB(255, 0, 0), 1, 8, 0);
|
CV_RGB(255, 0, 0), 1, 8, 0);
|
||||||
|
|
||||||
|
if (((int)(old_precision*10) != (int)(precision*10)) || (current_batch - text_iteration_old) >= max_batches/10) {
|
||||||
|
text_iteration_old = current_batch;
|
||||||
|
sprintf(char_buff, "%2.0f%% ", precision * 100);
|
||||||
|
CvFont font3;
|
||||||
|
cvInitFont(&font3, CV_FONT_HERSHEY_COMPLEX_SMALL, 0.7, 0.7, 0, 5, CV_AA);
|
||||||
|
cvPutText(img, char_buff, cvPoint(pt1.x - 30, draw_size * (1 - precision) + 15), &font3, CV_RGB(255, 255, 255));
|
||||||
|
|
||||||
|
CvFont font2;
|
||||||
|
cvInitFont(&font2, CV_FONT_HERSHEY_COMPLEX_SMALL, 0.7, 0.7, 0, 1, CV_AA);
|
||||||
|
cvPutText(img, char_buff, cvPoint(pt1.x - 30, draw_size * (1 - precision) + 15), &font2, CV_RGB(200, 0, 0));
|
||||||
|
}
|
||||||
old_precision = precision;
|
old_precision = precision;
|
||||||
iteration_old = current_batch;
|
iteration_old = current_batch;
|
||||||
sprintf(char_buff, "%2.0f%% ", precision * 100);
|
|
||||||
CvFont font3;
|
|
||||||
cvInitFont(&font3, CV_FONT_HERSHEY_COMPLEX_SMALL, 0.7, 0.7, 0, 5, CV_AA);
|
|
||||||
cvPutText(img, char_buff, cvPoint(pt1.x - 30, draw_size * (1 - precision) + 15), &font3, CV_RGB(255, 255, 255));
|
|
||||||
|
|
||||||
CvFont font2;
|
|
||||||
cvInitFont(&font2, CV_FONT_HERSHEY_COMPLEX_SMALL, 0.7, 0.7, 0, 1, CV_AA);
|
|
||||||
cvPutText(img, char_buff, cvPoint(pt1.x - 30, draw_size * (1 - precision) + 15), &font2, CV_RGB(200, 0, 0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sprintf(char_buff, "current avg loss = %2.4f iteration = %d", avg_loss, current_batch);
|
sprintf(char_buff, "current avg loss = %2.4f iteration = %d", avg_loss, current_batch);
|
||||||
@ -763,8 +767,6 @@ void draw_train_loss(IplImage* img, int img_size, float avg_loss, float max_img_
|
|||||||
pt1.y += 15;
|
pt1.y += 15;
|
||||||
cvPutText(img, char_buff, pt1, &font, CV_RGB(0, 0, 0));
|
cvPutText(img, char_buff, pt1, &font, CV_RGB(0, 0, 0));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
cvShowImage("average loss", img);
|
cvShowImage("average loss", img);
|
||||||
int k = cvWaitKey(20);
|
int k = cvWaitKey(20);
|
||||||
if (k == 's' || current_batch == (max_batches - 1) || current_batch % 100 == 0) {
|
if (k == 's' || current_batch == (max_batches - 1) || current_batch % 100 == 0) {
|
||||||
|
Reference in New Issue
Block a user