Реализация mobilenetssd с SNPE

Мне удалось преобразовать модель 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, но вместо этого я получил сообщение о том, что прямое распространение не работает.

0 ответов

Другие вопросы по тегам