@@ -85,15 +85,13 @@ int main(int argc, char **argv) {
8585 numpy::signal_from_buffer (&raw_features[0 ], raw_features.size (), &signal);
8686
8787 EI_IMPULSE_ERROR res = run_classifier (&signal, &result, false );
88- printf (" run_classifier returned: %d (DSP %d ms., Classification %d ms., Anomaly %d ms.)\n " , res,
89- result.timing .dsp , result.timing .classification , result.timing .anomaly );
90- if (res != 0 ) {
91- return 1 ;
92- }
93-
94- printf (" Begin output\n " );
88+ // print the predictions
89+ printf (" Predictions (DSP: %d ms., Classification: %d ms., Anomaly: %d ms.): \n " ,
90+ result.timing .dsp , result.timing .classification , result.timing .anomaly );
9591
9692#if EI_CLASSIFIER_OBJECT_DETECTION == 1
93+ printf (" #Object detection results:\n " );
94+ bool bb_found = result.bounding_boxes [0 ].value > 0 ;
9795 for (size_t ix = 0 ; ix < result.bounding_boxes_count ; ix++) {
9896 auto bb = result.bounding_boxes [ix];
9997 if (bb.value == 0 ) {
@@ -102,29 +100,44 @@ int main(int argc, char **argv) {
102100
103101 printf (" %s (%f) [ x: %u, y: %u, width: %u, height: %u ]\n " , bb.label , bb.value , bb.x , bb.y , bb.width , bb.height );
104102 }
105- #else
106- // print the predictions
107- printf (" [" );
103+
104+ if (!bb_found) {
105+ printf (" No objects found\n " );
106+ }
107+
108+ #elif (EI_CLASSIFIER_LABEL_COUNT == 1) && (!EI_CLASSIFIER_HAS_ANOMALY) // regression
109+ printf (" #Regression results:\n " );
110+ printf (" %s: " , result.classification [0 ].label );
111+ printf (" %.5f" , result.classification [0 ].value );
112+ printf (" \n " );
113+
114+ #elif EI_CLASSIFIER_LABEL_COUNT > 1 // if there is only one label, this is an anomaly only
115+ printf (" #Classification results:\n " );
108116 for (size_t ix = 0 ; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
117+ printf (" %s: " , result.classification [ix].label );
109118 printf (" %.5f" , result.classification [ix].value );
110- #if EI_CLASSIFIER_HAS_ANOMALY
111- printf (" , " );
112- #else
113- if (ix != EI_CLASSIFIER_LABEL_COUNT - 1 ) {
114- printf (" , " );
115- }
116- #endif
119+ printf (" \n " );
117120 }
118- #if EI_CLASSIFIER_HAS_ANOMALY
119- printf (" %.3f" , result.anomaly );
120121#endif
121- printf (" ]\n " );
122+ #if EI_CLASSIFIER_HAS_ANOMALY == 3 // visual AD
123+ printf (" #Visual anomaly grid results:\n " );
124+ for (uint32_t i = 0 ; i < result.visual_ad_count ; i++) {
125+ ei_impulse_result_bounding_box_t bb = result.visual_ad_grid_cells [i];
126+ if (bb.value == 0 ) {
127+ continue ;
128+ }
129+
130+ printf (" %s (%f) [ x: %u, y: %u, width: %u, height: %u ]\n " , bb.label , bb.value , bb.x , bb.y , bb.width , bb.height );
131+ }
132+ printf (" Visual anomaly values: Mean %.3f Max %.3f\n " , result.visual_ad_result .mean_value , result.visual_ad_result .max_value );
133+ #elif (EI_CLASSIFIER_HAS_ANOMALY > 0) // except for visual AD
134+ printf (" Anomaly prediction: %.3f\n " , result.anomaly );
122135#endif
123136
124- printf (" End output\n " );
137+ // Add a debug.bmp file for object detection / visual AD results
138+ #if (EI_CLASSIFIER_OBJECT_DETECTION == 1) || (EI_CLASSIFIER_HAS_ANOMALY == 3)
125139
126- // Add a debug.bmp file for object detection results
127- #if EI_CLASSIFIER_OBJECT_DETECTION == 1
140+ #if (EI_CLASSIFIER_OBJECT_DETECTION == 1)
128141 for (size_t ix = 0 ; ix < result.bounding_boxes_count ; ix++) {
129142 auto bb = result.bounding_boxes [ix];
130143 if (bb.value == 0 ) {
@@ -137,6 +150,22 @@ int main(int argc, char **argv) {
137150 }
138151 }
139152 }
153+ #endif
154+
155+ #if (EI_CLASSIFIER_HAS_ANOMALY == 3)
156+ for (size_t ix = 0 ; ix < result.visual_ad_count ; ix++) {
157+ auto bb = result.visual_ad_grid_cells [ix];
158+ if (bb.value == 0 ) {
159+ continue ;
160+ }
161+
162+ for (size_t x = bb.x ; x < bb.x + bb.width ; x++) {
163+ for (size_t y = bb.y ; y < bb.y + bb.height ; y++) {
164+ raw_features[(y * EI_CLASSIFIER_INPUT_WIDTH) + x] = (float )0xff0000 ;
165+ }
166+ }
167+ }
168+ #endif
140169
141170 create_bitmap_file (" debug.bmp" , raw_features.data (), EI_CLASSIFIER_INPUT_WIDTH, EI_CLASSIFIER_INPUT_HEIGHT);
142171#endif
0 commit comments