Несоответствие размера байта с Tiny Yolov3 на Raspberry Pi3 и NCS2 - PullRequest
0 голосов
/ 20 июня 2019

У меня есть переподготовка крошечной модели yolov3, которую я перевел на ИК-модели, совместимые с Openvino. Я использую вывод этих моделей на ноутбуке, работающем на Intel i7-8750 с NCS2 и Raspberry Pi3, на котором работает NCS2, и я использую API C ++ для этого .. Однако я получаю несоответствие в размерах байтов выходных узлов между две платформы.

Я использую следующий фрагмент кода для чтения больших двоичных объектов и их размеров для создания выходных буферов.

InferenceEngine::InputsDataMap output_info(network.getOutputsInfo());
for (auto &item : output_info) {
        auto output_name = item.first;
        std::cout<<"Output name :"<<item.first<<std::endl;
        auto output = async_infer_request.GetBlob(output_name);
        std::cout<<"output buffer size : "<<output->byteSize()<<std::endl;
        output_buffer = output->buffer().as<PrecisionTrait<Precision::FP32>::value_type *>();
    }

где network - плагин MYRIAD, загруженный с моделями.

На ноутбуке с NCS2 я получаю следующие результаты:

[ INFO ] InferenceEngine: 
API version ............ 1.6
Build ..................custom_releases/2019/R1_c9b66a26e4d65bb986bb740e73f58c6e9e84c7c2
[ INFO ] Loading plugin

API version ............ 1.6
Build .................. 22443
Description ....... myriadPlugin
[ INFO ] Loading network files
[ INFO ] Batch size is forced to  1.
[ INFO ] Successfully loaded network files
inputs
inputDims=416 416 3 1 
detector/yolo-v3-tiny/Conv_12/BiasAdd/YoloRegion
outputDims=1 18 26 26 
detector/yolo-v3-tiny/Conv_9/BiasAdd/YoloRegion
outputDims=1 18 13 13 

Output data size : 3042
[ INFO ] Loading model to the plugin
[ INFO ] Loaded model to the plugin
[ INFO ] Creating an inference request from the network
[ INFO ] Created an inference request from the network
Input name :inputs
Input buffer size : 519168
Output name :detector/yolo-v3-tiny/Conv_12/BiasAdd/YoloRegion
output buffer size : 48672
Output name :detector/yolo-v3-tiny/Conv_9/BiasAdd/YoloRegion
output buffer size : 12168

Однако на Raspberry Pi3 я получаю следующее:

[ INFO ] InferenceEngine: 
API version ............ 1.6
Build .................. 22443
[ INFO ] Loading plugin

API version ............ 1.6
Build .................. 22443
Description ....... myriadPlugin
[ INFO ] Loading network files
[ INFO ] Batch size is forced to  1.
[ INFO ] Successfully loaded network files
inputs
inputDims=416 416 3 1 
detector/yolo-v3-tiny/Conv_12/BiasAdd/YoloRegion
outputDims=1 18 26 26 
detector/yolo-v3-tiny/Conv_9/BiasAdd/YoloRegion
outputDims=1 18 13 13 

Output data size : 3042
[ INFO ] Loading model to the plugin
[ INFO ] Loaded model to the plugin
[ INFO ] Creating an inference request from the network
[ INFO ] Created an inference request from the network
Input name :inputs
Input buffer size : 519168
Output name :detector/yolo-v3-tiny/Conv_12/BiasAdd/YoloRegion
terminate called after throwing an instance of 'InferenceEngine::details::InferenceEngineException'
what():  The output blob size is not equal to the network output size: got 12168 expecting 11492 /opt/intel/openvino/deployment_tools/inference_engine/include/details/ie_exception_conversion.hpp:71
Aborted

При использовании базовой математики размер выходного большого двоичного объекта на моем ноутбуке соответствует размерам узла 1x18x13x13x4 = 12168 байт, а на Raspberry Pi3 размер сетевого двоичного объекта ожидается в 1x17x13x13x4 = 11492 байт.

Однако та же модель работает нормально, если я использую Python API для запуска вывода из моей модели на том же комбо Raspberry Pi3 и NCS2. Есть ли что-то, что мне не хватает в C ++ API для Raspberry Pi 3.

...