@@ -130,7 +130,7 @@ class ImageClassifier {
130
130
* @return {object } an object with {label, confidence}.
131
131
*/
132
132
async classifyInternal ( imgToPredict , numberOfClasses ) {
133
-
133
+
134
134
// Wait for the model to be ready
135
135
await this . ready ;
136
136
await tf . nextFrame ( ) ;
@@ -152,14 +152,15 @@ class ImageClassifier {
152
152
153
153
// Process the images
154
154
const imageResize = [ IMAGE_SIZE , IMAGE_SIZE ] ;
155
- const processedImg = imgToTensor ( imgToPredict , imageResize ) ;
156
-
155
+
157
156
if ( this . modelUrl ) {
158
157
await tf . nextFrame ( ) ;
159
158
const predictedClasses = tf . tidy ( ( ) => {
159
+ const processedImg = imgToTensor ( imgToPredict , imageResize ) ;
160
160
const predictions = this . model . predict ( processedImg ) ;
161
161
return Array . from ( predictions . as1D ( ) . dataSync ( ) ) ;
162
162
} ) ;
163
+
163
164
const results = await predictedClasses . map ( ( confidence , index ) => {
164
165
const label = ( this . mapStringToIndex . length > 0 && this . mapStringToIndex [ index ] ) ? this . mapStringToIndex [ index ] : index ;
165
166
return {
@@ -168,15 +169,16 @@ class ImageClassifier {
168
169
} ;
169
170
} ) . sort ( ( a , b ) => b . confidence - a . confidence ) ;
170
171
return results ;
171
- }
172
+ }
172
173
173
- const result = this . model
174
+ const processedImg = imgToTensor ( imgToPredict , imageResize ) ;
175
+ const results = this . model
174
176
. classify ( processedImg , numberOfClasses )
175
177
. then ( classes => classes . map ( c => ( { label : c . className , confidence : c . probability } ) ) ) ;
176
178
177
179
processedImg . dispose ( ) ;
178
-
179
- return result ;
180
+
181
+ return results ;
180
182
}
181
183
182
184
/**
0 commit comments