|
|
@ -257,7 +257,13 @@ void delta_yolo_class(float *output, float *delta, int index, int class_id, int |
|
|
|
{ |
|
|
|
{ |
|
|
|
int n; |
|
|
|
int n; |
|
|
|
if (delta[index + stride*class_id]){ |
|
|
|
if (delta[index + stride*class_id]){ |
|
|
|
delta[index + stride*class_id] = (1 - label_smooth_eps) - output[index + stride*class_id]; |
|
|
|
if (label_smooth_eps > 0) { |
|
|
|
|
|
|
|
float out_val = output[index + stride*class_id] * (1 - label_smooth_eps) + 0.5*label_smooth_eps; |
|
|
|
|
|
|
|
delta[index + stride*class_id] = 1 - out_val; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else { |
|
|
|
|
|
|
|
delta[index + stride*class_id] = 1 - output[index + stride*class_id]; |
|
|
|
|
|
|
|
} |
|
|
|
if (classes_multipliers) delta[index + stride*class_id] *= classes_multipliers[class_id]; |
|
|
|
if (classes_multipliers) delta[index + stride*class_id] *= classes_multipliers[class_id]; |
|
|
|
if(avg_cat) *avg_cat += output[index + stride*class_id]; |
|
|
|
if(avg_cat) *avg_cat += output[index + stride*class_id]; |
|
|
|
return; |
|
|
|
return; |
|
|
@ -285,7 +291,13 @@ void delta_yolo_class(float *output, float *delta, int index, int class_id, int |
|
|
|
else { |
|
|
|
else { |
|
|
|
// default
|
|
|
|
// default
|
|
|
|
for (n = 0; n < classes; ++n) { |
|
|
|
for (n = 0; n < classes; ++n) { |
|
|
|
delta[index + stride*n] = ((n == class_id) ? (1 - label_smooth_eps) : (0 + label_smooth_eps/classes)) - output[index + stride*n]; |
|
|
|
if (label_smooth_eps > 0) { |
|
|
|
|
|
|
|
float out_val = output[index + stride*class_id] * (1 - label_smooth_eps) + 0.5*label_smooth_eps; |
|
|
|
|
|
|
|
delta[index + stride*n] = ((n == class_id) ? 1 : 0) - out_val; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else { |
|
|
|
|
|
|
|
delta[index + stride*n] = ((n == class_id) ? 1 : 0) - output[index + stride*n]; |
|
|
|
|
|
|
|
} |
|
|
|
if (classes_multipliers && n == class_id) delta[index + stride*class_id] *= classes_multipliers[class_id]; |
|
|
|
if (classes_multipliers && n == class_id) delta[index + stride*class_id] *= classes_multipliers[class_id]; |
|
|
|
if (n == class_id && avg_cat) *avg_cat += output[index + stride*n]; |
|
|
|
if (n == class_id && avg_cat) *avg_cat += output[index + stride*n]; |
|
|
|
} |
|
|
|
} |
|
|
|