Как загрузить сеть обнаружения объектов Yolo с помощью OpenCV C ++ - PullRequest
1 голос
/ 01 июля 2019

Я следовал этому руководству для реализации детектора объектов Yolo: https://github.com/thtrieu/darkflow/ и я успешно выполнил.

Созданный файл .pb можно использовать для переноса графика на мобильные устройства (JAVA / C ++ / Objective-C ++). Название входного и выходного тензоров - соответственно «input» и «output».

Я хочу загрузить сеть с OpenCV (c ++). Метод readNetFromTensorflow () нуждается в двух файлах: .pb и .pbtxt. Последнее не генерируется реализацией, указанной выше. Аналогично, для использования метода readNetFromDarknet () необходимо иметь два файла: .cfg и .weights. Последний не генерируется реализацией, указанной выше.

Итак, как я могу перенести сеть yolo с python на c ++, используя opencv?

Я также пытался сгенерировать файл .pbtxt непосредственно из файла .pb, но метод readNetFromTensorflow () не выполнен (генерируется исключение общего характера без полезной информации)

Вышло исключение ссылки:

[Исключение, выданное в 0x00007FFFB80C9129 в Object_detection_inference_cpp.exe: исключение Microsoft C ++: cv :: Исключение в расположении памяти 0x000000CBC18FDC90.]

Заранее спасибо.

1 Ответ

0 голосов
/ 02 июля 2019

Это код, который я использовал для преобразования файла .pb в файл .pbtxt:

import tensorflow as tf
from google.protobuf import text_format
from tensorflow.python.platform import gfile

def graphdef_to_pbtxt(filename): 
    with gfile.FastGFile(filename,'rb') as f:
    graph_def = tf.GraphDef()
    graph_def.ParseFromString(f.read())
    tf.import_graph_def(graph_def, name='')
    tf.train.write_graph(graph_def, 'pbtxt/', 'tiny-yolov2-trial3-test.pbtxt', as_text=True)
  return

graphdef_to_pbtxt('tiny-yolov2-trial3-test.pb')

Для использования tf_text_xxx.py Необходимо иметь файл .config.У меня есть только файл .cfg из учебника выше.По этой причине я не могу использовать те три функции, о которых вы сообщили.Я что-то не так делаю?

...