Обнаружение объектов медленное и не использует GPU

Мне нужно использовать Tensorflow Object Detection API, чтобы сделать некоторую классификацию, связанную с распознаванием.

Моя проблема в том, что использование API для обнаружения с предварительно обученной моделью кокоса занимает слишком много времени и наверняка не использует GPU. Я проверил свою установку tensorflow-gpu на разных скриптах, и она работает нормально, но когда я использую эту модель для обнаружения, я вижу только увеличение использования ЦП.

Я проверял разные версии tensorflow (1.12, 1.14), разные комбинации CUDA Toolkit (9.0, 10.0) и CuDNN (7.4.2, 7.5.1, 7.6.1), но все одинаково, также пробовал на обеих Windows 7 и Ubuntu 16.04, без разницы. Однако мой проект требует гораздо более быстрого времени обнаружения.

Информация о системе: Система: Windows 7, Ubuntu 16.04 Tensorflow: 1.12, 1.14 GPU: GTX 970


person Makintosz    schedule 28.07.2019    source источник


Ответы (1)


Запустите следующий код Python, если он обнаружит GPU, вы можете использовать GPU для обучения, иначе возникнут проблемы.

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

Еще одна вещь: то, что ваш ЦП использует нагрузку, не означает, что ГП не работает. ЦП всегда загружен, ГП тоже должен пикать, когда вы тренируетесь.

Вставьте вывод приведенного выше кода в комментарий, если вы не уверены в выводе.

Редактировать: после беседы с OP в комментариях я вижу предложенный код, и он использует предварительно обученную модель, поэтому здесь не происходит обучения. Вы используете модель, а не обучаете новую модель. Так что GPU не используется.

person Pranit Kothari    schedule 28.07.2019
comment
Спасибо за Ваш ответ. [имя: /device:CPU:0 device_type: CPU memory_limit: 268435456 населенный пункт { } воплощение: 12868789687935921631, имя: /device:GPU:0 device_type: GPU memory_limit: 3546435584 населенный пункт { bus_id: 1 ссылки { } } воплощение: 569592231756379_физический_device_device_des679: 56959223175679: устройство: 0, имя: GeForce GTX 970, идентификатор шины pci: 0000:01:00.0, вычислительная мощность: 5.2] - person Makintosz; 28.07.2019
comment
Я также проверил использование графического процессора с помощью программного обеспечения GPU-Z для мониторинга работы графического процессора и не заметил даже небольшого всплеска использования видеопамяти. - person Makintosz; 28.07.2019
comment
Да, вывод правильный, предполагается, что вы можете использовать графический процессор, не уверен, что не так, если возможно, можете ли вы вставить свой код, также попробуйте использовать Google Colab, если вы все еще сталкиваетесь с той же проблемой. - person Pranit Kothari; 28.07.2019
comment
Сейчас я использую только примерный код из поставляемого с библиотекой Jupyter Notebook object_detection_tutorial.ipynb. Я просто хотел использовать его, чтобы проверить, сколько времени требуется для обнаружения, так как это имеет решающее значение для моего проекта. Я вижу, как некоторые люди в Интернете сообщают о примерно 10 обнаружениях в секунду, когда я получаю 1 обнаружение за 5 секунд. - person Makintosz; 28.07.2019
comment
@Makintosz Ах!, вы не тренируетесь, вы используете предварительно обученную модель. Посмотрите на мой ответ. Я отредактировал его, здесь вы не обучающая модель, поэтому графический процессор не потребуется. Пожалуйста, примите ответ, если я решил вашу проблему. - person Pranit Kothari; 28.07.2019
comment
Да, я использую его для обнаружения, я думал, что объяснил это достаточно хорошо в предложении: Моя проблема в том, что обнаружение предварительно обученной модели кокоса занимает слишком много времени. Означает ли это, что при фактическом использовании любой предварительно обученной модели для обнаружения объекта будет использоваться только ЦП? Так почему же другие получают результаты в десятки раз быстрее, чем я на той же модели? Так может быть, обучение моей собственной модели может помочь? - person Makintosz; 28.07.2019
comment
Да, вы упомянули о предварительно обученной модели, но обычно люди загружают предварительно обученную модель, а затем обучают ее для использования там. Но не требуется, если модель соответствует вашим ожиданиям. Да, если вам не нужно обучать его, будет использоваться ЦП. - person Pranit Kothari; 28.07.2019
comment
Итак, чтобы мне было совершенно ясно, API обнаружения объектов tf не использует GPU при фактическом обнаружении объектов, только при обучении? - person Makintosz; 28.07.2019
comment
Ваша модель уже обучена, нет необходимости обучать ее снова с использованием графического процессора. Например, в вашем телефоне на Android есть много предварительно обученных моделей, они работают без GPU, так как уже обучены. - person Pranit Kothari; 28.07.2019