5

Nie mogę dopasować czasów wnioskowania zgłoszonych przez Google w przypadku modeli opublikowanych w ich wersjach model zoo. W szczególności wypróbowuję ich model faster_rcnn_resnet101_coco, w którym raportowany czas wnioskowania to 106ms na GPU Titan X.Interfejs API wykrywania obiektów Tensorflow ma wolny czas wnioskowania z tensorflow obsługujących

Mój system obsługujący używa TF 1.4 działającego w kontenerze zbudowanym na bazie Dockerfile wydanym przez Google. Mój klient jest wzorowany na modelu inception client, który został również wydany przez Google.

Używam Ubuntu 14.04, TF 1.4 z 1 Titanem X. Mój całkowity czas interferencji jest 3 razy gorszy niż raportowany przez Google ~ 330ms. Wykonanie tensor proto trwa ~ 150ms i Predict trwa ~ 180ms. Moje saved_model.pb pochodzi bezpośrednio z pliku tar pobranego z modelu zoo. Czy jest coś, czego mi brakuje? Jakie kroki mogę podjąć, aby zmniejszyć czas wnioskowania?

Odpowiedz

2

Ograniczeniem nielimitowanym może być wąskie gardło: https://github.com/tensorflow/models/issues/2710.

Czy rozmiar obrazu to 600 x 600?

+0

Nie sądzę, że to jest problem, używam TF 1.4, który jest tą samą wersją, na której oparte są eksportowane modele. Z modelu zoo: 'Nasze zamrożone wykresy wnioskowania są generowane przy użyciu wersji Tensorflow wersji 1.4.1 –

0

Pobiegłem podobny model z Titan XP, jednak ja user infer_detections.py skrypt i zalogowany do spędzenia czasu w przód [w zasadzie za pomocą datetime przed i po tf_example = detection_inference.infer_detections_and_add_to_example ( serialized_example_tensor, detected_boxes_tensor, detected_scores_tensor , detected_labels_tensor, FLAGS.discard_image_pixels) Zredukowalem liczbę propozycji wygenerowanych w pierwszym etapie FasterRCN z 300 do 100, a także zmniejszyłem liczbę detekcji na drugim etapie do 100. Mam liczby w zakresie od 80 do 140 ms, i myślę, że obraz 600x600 w przybliżeniu zajmie około 106 lub nieco mniej w tym ustawieniu (ze względu na Titan Xp i mniejszą złożoność modelu). Może możesz powtórzyć powyższy proces na swoim sprzęcie, w ten sposób, jeśli liczby są również ~ 106 ms dla tego przypadku, możemy przypisać różnicę do użycia DockerFile i klienta. Jeśli liczby są nadal wysokie, być może jest to sprzęt.

Byłoby pomocne, gdyby ktoś z zespołu Tensorflow Object Detection mógł skomentować konfigurację używaną do generowania liczb w model zoo.

0

@Vikram Gupta czy sprawdziłeś wykorzystanie GPU? Czy osiąga około 80-100%? Doświadczam bardzo niskiego wykorzystania GPU, wykrywając obiekty strumienia wideo za pomocą interfejsu API i modeli "modelu zoo".

3

udało mi się rozwiązać dwa problemy

  1. optymalizacji flagi kompilatora. Dodano do bazel-bin --config=opt --copt=-msse4.1 --copt=-msse4.2 --copt=-mavx --copt=-mavx2 --copt=-mfma

  2. Nie importuj tf.contrib dla każdego wniosku. W przypadku próbki inception_client dostarczonej przez google, these lines ponownie zaimportuj tf.contrib dla każdego przekazania w przód.