Changed class to class_id

This commit is contained in:
AlexeyAB
2018-03-01 15:14:58 +03:00
parent 17b22d7ce7
commit 35a66b73a2
9 changed files with 86 additions and 86 deletions

View File

@ -148,21 +148,21 @@ void validate_compare(char *filename, char *weightfile)
typedef struct {
network net;
char *filename;
int class;
int class_id;
int classes;
float elo;
float *elos;
} sortable_bbox;
int total_compares = 0;
int current_class = 0;
int current_class_id = 0;
int elo_comparator(const void*a, const void *b)
{
sortable_bbox box1 = *(sortable_bbox*)a;
sortable_bbox box2 = *(sortable_bbox*)b;
if(box1.elos[current_class] == box2.elos[current_class]) return 0;
if(box1.elos[current_class] > box2.elos[current_class]) return -1;
if(box1.elos[current_class_id] == box2.elos[current_class_id]) return 0;
if(box1.elos[current_class_id] > box2.elos[current_class_id]) return -1;
return 1;
}
@ -172,7 +172,7 @@ int bbox_comparator(const void *a, const void *b)
sortable_bbox box1 = *(sortable_bbox*)a;
sortable_bbox box2 = *(sortable_bbox*)b;
network net = box1.net;
int class = box1.class;
int class_id = box1.class_id;
image im1 = load_image_color(box1.filename, net.w, net.h);
image im2 = load_image_color(box2.filename, net.w, net.h);
@ -184,24 +184,24 @@ int bbox_comparator(const void *a, const void *b)
free_image(im1);
free_image(im2);
free(X);
if (predictions[class*2] > predictions[class*2+1]){
if (predictions[class_id*2] > predictions[class_id*2+1]){
return 1;
}
return -1;
}
void bbox_update(sortable_bbox *a, sortable_bbox *b, int class, int result)
void bbox_update(sortable_bbox *a, sortable_bbox *b, int class_id, int result)
{
int k = 32;
float EA = 1./(1+pow(10, (b->elos[class] - a->elos[class])/400.));
float EB = 1./(1+pow(10, (a->elos[class] - b->elos[class])/400.));
float EA = 1./(1+pow(10, (b->elos[class_id] - a->elos[class_id])/400.));
float EB = 1./(1+pow(10, (a->elos[class_id] - b->elos[class_id])/400.));
float SA = result ? 1 : 0;
float SB = result ? 0 : 1;
a->elos[class] += k*(SA - EA);
b->elos[class] += k*(SB - EB);
a->elos[class_id] += k*(SA - EA);
b->elos[class_id] += k*(SB - EB);
}
void bbox_fight(network net, sortable_bbox *a, sortable_bbox *b, int classes, int class)
void bbox_fight(network net, sortable_bbox *a, sortable_bbox *b, int classes, int class_id)
{
image im1 = load_image_color(a->filename, net.w, net.h);
image im2 = load_image_color(b->filename, net.w, net.h);
@ -213,7 +213,7 @@ void bbox_fight(network net, sortable_bbox *a, sortable_bbox *b, int classes, in
int i;
for(i = 0; i < classes; ++i){
if(class < 0 || class == i){
if(class_id < 0 || class_id == i){
int result = predictions[i*2] > predictions[i*2+1];
bbox_update(a, b, i, result);
}
@ -244,7 +244,7 @@ void SortMaster3000(char *filename, char *weightfile)
for(i = 0; i < N; ++i){
boxes[i].filename = paths[i];
boxes[i].net = net;
boxes[i].class = 7;
boxes[i].class_id = 7;
boxes[i].elo = 1500;
}
clock_t time=clock();
@ -297,12 +297,12 @@ void BattleRoyaleWithCheese(char *filename, char *weightfile)
printf("Round: %f secs, %d remaining\n", sec(clock()-round_time), N);
}
int class;
int class_id;
for (class = 0; class < classes; ++class){
for (class_id = 0; class_id < classes; ++class_id){
N = total;
current_class = class;
current_class_id = class_id;
qsort(boxes, N, sizeof(sortable_bbox), elo_comparator);
N /= 2;
@ -312,7 +312,7 @@ void BattleRoyaleWithCheese(char *filename, char *weightfile)
sorta_shuffle(boxes, N, sizeof(sortable_bbox), 10);
for(i = 0; i < N/2; ++i){
bbox_fight(net, boxes+i*2, boxes+i*2+1, classes, class);
bbox_fight(net, boxes+i*2, boxes+i*2+1, classes, class_id);
}
qsort(boxes, N, sizeof(sortable_bbox), elo_comparator);
if(round <= 20) N = (N*9/10)/2*2;
@ -320,10 +320,10 @@ void BattleRoyaleWithCheese(char *filename, char *weightfile)
printf("Round: %f secs, %d remaining\n", sec(clock()-round_time), N);
}
char buff[256];
sprintf(buff, "results/battle_%d.log", class);
sprintf(buff, "results/battle_%d.log", class_id);
FILE *outfp = fopen(buff, "w");
for(i = 0; i < N; ++i){
fprintf(outfp, "%s %f\n", boxes[i].filename, boxes[i].elos[class]);
fprintf(outfp, "%s %f\n", boxes[i].filename, boxes[i].elos[class_id]);
}
fclose(outfp);
}