Как я могу выполнить запрос Face-API к изображениям, хранящимся в BLOB-объекте хранилища данных Azure?

У меня есть 200 тыс. Изображений, хранящихся в большом двоичном объекте в учетной записи хранения Azure (также связанной с учетной записью Data Lake Storage). Я хотел бы запустить обнаружение лиц на всех из них, чтобы добавить их в LargeFaceList. Первый шаг - запуск функции распознавания лиц.

Следующий фрагмент (скопированный из руководств) отлично подходит для обнаружения лиц на веб-изображении:

import cognitive_face as CF
KEY = 'mykey'
BASE_URL = 'https://eastus.api.cognitive.microsoft.com/face/v1.0/'
CF.Key.set(KEY)
CF.BaseUrl.set(BASE_URL)
CF.face.detect('https://images.fastcompany.net/image/upload/w_596,c_limit,q_auto:best,f_auto,fl_lossy/fc/3068134-inline-i-1-warren-buffet-gave-bill-gates-30-billion-heres-how-its-paying-off.jpg')

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

В USQL я бы сделал что-то вроде:

"wasb://[blob_name]@[storage_account_name]/FileName.png"

Но неудивительно, что это не работает, потому что KEY, определенный выше, является ключом к службе face api, а не к моему хранилищу Azure, поэтому у него нет возможности (я не думаю) найти эти данные.

Как я могу это сделать? Я не хочу загружать свои 200 тысяч изображений одно за другим в Детектор лиц!


person Hal3    schedule 20.07.2018    source источник


Ответы (1)


Вместо этого вы сможете получить доступ к файлу как:

https://[storage_account_name].blob.core.windows.net/[blob_name]/FileName.png

Если большой двоичный объект не доступен публично, вы можете использовать Shared Access Signature, чтобы предоставить API временный доступ к файлу.

Конечно, вам все равно нужно будет вызывать API по одному изображению за раз, поскольку пакетного механизма нет. Это также означает, что на вас будут распространяться ограничения по ставке / квоте для вашей учетной записи.

person cthrash    schedule 21.07.2018