Как использовать вес глубокой нейронной сети, обученной в tensorflow-python api, в проекте на c ?

#python #c #tensorflow #deep-learning

Вопрос:

Я обучил некоторые модели классификации с помощью tensorflow 2.4, и теперь я хочу использовать эти обученные модели в проекте на c . Я проделал аналогичную работу с помощью библиотеки tkDNN(которая используется для увеличения кадра в секунду (кадров в секунду)), но в этом случае я не хочу использовать tkDNN, потому что мне плевать на fps. В приведенном ниже коде я использовал вес обученного йоло-крошечного, который является фиксированной точкой по tkDNN. Существует ли какая-либо библиотека для подачи весов, подобных этому коду, для использования dnn в c ?

 int main()
{

int n_classes=3;

const char * net = "/home/tkDNN/build/yolo_tiny_3l_fp16.rt";

// instantiate detector
tk::dnn::Yolo3Detection yolo;
tk::dnn::DetectionNN *detNN;
detNN = amp;yolo;
int n_batch = 2;
detNN->init(net, n_classes, n_batch);


bool g;
g = true;
cv::VideoCapture cap(0);
if(!cap.isOpened())
    g = false;
else
    std::cout<<"camera startedn";

...
 

Комментарии:

1. Вы, вероятно, захотите использовать что-то вроде ONNX для экспорта вашей модели из python. В ONNX есть среда выполнения C , которая затем может загрузить вашу модель и выполнить вывод.

2. Спасибо, что поделились своими знаниями @Wacov. Не могли бы вы, пожалуйста, предоставить ссылку на пример по этому поводу? Я искал, но не нашел четкой концепции или примера по этому поводу.

3.На самом деле я сам этого не делал, но вот с чего бы я начал: github.com/onnx/tensorflow-onnx github.com/microsoft/onnxruntime Я думаю, суть этого в том, что вы экспортируете файл .onnx, затем загружаете его и используете в C с помощью onnxruntime.

4. Большое вам спасибо @Wacov. Кажется, это помогает. Я хочу проверить это сейчас.