ssd_mobilenet_v1_coco_2017_11_17 モデルを dlc ファイルに変換することができました。
モデルは Android で実行されましたが、出力は実質的に空白です (スコアは 1.0、ボックスとクラスは 0.0 のみ)。
正確に何が間違っているのかわかりません。
float[] loadRgbBitmapAsFloat(Bitmap image) {
final int[] pixels = new int[image.getWidth() * image.getHeight()];
image.getPixels(pixels, 0, image.getWidth(), 0, 0,
image.getWidth(), image.getHeight());
final float[] pixelsBatched = new float[pixels.length * 3];
for (int y = 0; y < image.getHeight(); y++) {
for (int x = 0; x < image.getWidth(); x++) {
final int idx = y * image.getWidth() + x;
final int batchIdx = idx * 3;
final float[] rgb = extractColorChannels(pixels[idx]);
pixelsBatched[batchIdx] = rgb[0];
pixelsBatched[batchIdx + 1] = rgb[1];
pixelsBatched[batchIdx + 2] = rgb[2];
}
}
return pixelsBatched;
}
private float[] extractColorChannels(int pixel) {
float b = ((pixel) & 0xFF);
float g = ((pixel >> 8) & 0xFF);
float r = ((pixel >> 16) & 0xFF);
return new float[] {r,g,b};
}
これは、既にトリミングされた画像 (この場合は 300x300) を前処理した方法です。モデルは量子化されておらず、FloatTensor を使用しています。UserBufferTensor を使用しようとしましたが、代わりに前方伝播が機能しないというエラーが表示されました。