Azure Cognitive Services: Face Find Similar «BadArgument», «Argument faceListId и faceIds не могут быть предоставлены одновременно».

Я новичок в Azure Cognitive Services. Я использую python 3.5 и службу Azure Face, в частности API «Face — Find Similar». Я получаю сообщение об ошибке при форматировании тела сообщения JSON. В документации сказано, что я должен предоставить либо один идентификатор лица, либо список лиц в списке лиц, например, «extended_family». В моем случае я хочу использовать список лиц. Я не знаю, как отформатировать параметр faceID в JSON, чтобы вызов обрабатывал список лиц. Я пробовал разные варианты установки для faceId значения «{}» или «Null», «», «False», и это приводило к ошибкам.

Ниже мое тело JSON для моего POST:

{'faceId': '97522b8b-02b6-4115-99e0-6dc1f5d45f51', 'faceIds': ['97522b8b-   02b6-4115-99e0-6dc1f5d45f51', '0ca8f3e4-edf1-4c14-b926-3b47eae7e29c', '2fadbb12-b10b-4761-aaaa-c50f1dc765c3', '56f464d5-b388-4fc7-9051-6991cf5f1d0d', '29931480-632e-40b6-aa0c-9e03e36e95f9', '7a8085b2-2013-4742-a51a-a5543a0347e8'], 'faceListId': 'extended_family', 'maxNumOfCandidatesReturned': 20, 'mode': 'matchPerson'}  

Поскольку faceId заполнен, я получаю:

error:  'code': 'BadArgument', 'message': 'Argument faceListId and faceIds cannot be provided at the same time.'

Если я оставлю faceId пустым, например:

{'faceId': '', 'faceIds': ['824e3d83-a94f-4ef2-949e-55a55b2ef256', '51f3c1a5-4e16-4b14-89fa-f1342a2c46ec', '0480d2e0-ff05-44de-b3d8-94408277b1c5', 'c7d767fb-0fbe-46c8-b7af-2c8f675bfd8d', 'ca7e82a7-cd3f-417b-bffa-77c9d47c1439', 'f7130e90-9e1f-428a-a773-93c87932a420'], 'faceListId': 'extended_family', 'maxNumOfCandidatesReturned': 20, 'mode': 'matchPerson'}

Я получаю следующее:

{'error': {'code': 'BadArgument', 'message': 'Request body is invalid.'}}  

Если я удалю термин faceId из JSON:

{'faceIds': ['690feffd-5c86-47d7-ac3c-224b0eafa90f', '936564e0-31aa-43e3-916e-c7b236bea8e0', '614c04cb-4375-44c8-b393-89d64b4c1ebd', 'a29f8e5c-50ba-4bb8-8bf8-98e356a9125a', '073d7865-2aaf-4806-9bef-ddca478137ea', '7e416e83-5973-4aa1-b1fc-3a25b5174bb3'], 'faceListId': 'andersen_extended_family', 'maxNumOfCandidatesReturned': 20, 'mode': 'matchPerson'}
{'error': {'code': 'BadArgument', 'message': 'Face ID is invalid.'}}

Мой код выглядит следующим образом:

facelist = list()  #This is populated upstream using the Face Detect API
facelistid = 'extended_family'
faceid = ''

payload = {'faceId': faceid, 'faceIds':facelist,'faceListId':facelistid, 'maxNumOfCandidatesReturned':20,'mode': "matchPerson"}
req = requests.post(serviceurlpersongroup, data = json.dumps(payload)  , headers = {'Ocp-Apim-Subscription-Key': key})
jinfo = req.json()

person Pauland5    schedule 09.04.2017    source источник


Ответы (1)


Как поясняется в сообщении об ошибке, faceListId и faceIds (не faceId) не должны указываться одновременно. Таким образом, payload, который вы используете, должен быть

payload = {'faceId': faceid, 'faceListId': facelistid, 'maxNumOfCandidatesReturned': 20, 'mode': "matchPerson"}

or

payload = {'faceId': faceid, 'faceIds': facelist, 'maxNumOfCandidatesReturned': 20, 'mode': "matchPerson"}

Не стесняйтесь обновлять, если у вас есть дополнительные вопросы.

person Xuan Hu    schedule 10.04.2017