模型不存在,使用 Clarifai 中的人口统计

Model does not exist, using Demographics in Clarifai

我正在尝试使用人口统计模型 https://www.clarifai.com/blog/socially-responsible-pixels-a-look-inside-clarifais-new-demographics-recognition-model

但我很困惑,因为人口统计是模型还是工作流程?

我试图在我的仪表板的模型模式下搜索人口统计数据,但它不存在。

App Workflows 中有一个 Demographics 工作流,但当我访问它时收到错误通知。这可能就是为什么当我 运行 服务器使用人口统计检测图像时,它会导致 'Model does not exist' 错误。

A model with ID '6c276d1ee3cac072fad9d6d850b4a429' not found. Check the url of your request.

这是截图

这是代码,我用的是nodejs。

const { ClarifaiStub, grpc } = require("clarifai-nodejs-grpc");

const stub = ClarifaiStub.grpc();

const metadata = new grpc.Metadata();
metadata.set("authorization", "Key {MY_SECRET_KEY}");

const inputs = [
  {
    data: {
      image: {
        url:
          "https://www.gannett-cdn.com/-mm-/b2b05a4ab25f4fca0316459e1c7404c537a89702/c=0-0-1365-768/local/-/media/2020/08/19/USATODAY/usatsports/GettyImages-1147443912.jpg?width=660&height=372&fit=crop&format=pjpg&auto=webp",
      },
    },
  },
];

stub.PostModelOutputs(
  {
    workflow_id: "Demographics", 
    inputs,
  },
  metadata,
  (err: any, response: any) => {
    if (err) {
      console.log("Error: " + err);
      return;
    }
    console.log(response); // Model doesn't exist
  }
);

响应输出

{
  outputs: [],
  status: {
    stack_trace: [],
    code: 21200,
    description: 'Model does not exist',
    details: "Model '' does not exist.",
    percent_completed: 0,
    time_remaining: 0,
    req_id: 'a9575417a32a4e2597443f4b400be39b',
    internal_details: ''
  }
}

简而言之,是的,它是一个工作流程。 App Details 页面下的 App Workflows 中的“Demographics”是一个工作流。对于工作流程,应使用 stub.PostWorkflowResultsservice_pb2.PostWorkflowResultsRequest。这是来自 Clarifai 网站的示例:https://docs.clarifai.com/api-guide/workflows/workflow-predict

更长的版本:人口统计模型(多元文化外貌、性别外貌和年龄外貌)仅适用于面部图像。面部检测器 (model_id: '6c276d1ee3cac072fad9d6d850b4a429') 将在查询图像中的面部周围绘制边界框,Cropper 将提取边界框内的部分并将它们作为输入传递到三个人口统计模型中。

使用我的社区计划帐户(在 'Billing' 下),“人口统计”工作流程在我自动生成的第一个应用程序中可见。下面是 Python API 调用,使用应用 API_KEY 作为授权元数据。我能够使用带有人脸的查询图像检索有意义的结果。

channel = ClarifaiChannel.get_grpc_channel()
stub = service_pb2_grpc.V2Stub(channel)
metadata = (('authorization', f'Key {API_KEY}'),)

# Call Workflow Predict API
post_workflow_results_response = stub.PostWorkflowResults(
    service_pb2.PostWorkflowResultsRequest(
        workflow_id="Demographics",
        inputs=[
            resources_pb2.Input(
                data=resources_pb2.Data(
                    image=resources_pb2.Image(
                        url=f"{QUERY_IMAGE_URL}"
                    )
                )
            )
        ]
    ),
    metadata=metadata
)

# Display Results
results = post_workflow_results_response.results[0]

for output in results.outputs:
    model = output.model
    
    # Want appearance models results
    if 'detector' not in model.name and 'Cropper' not in model.name:
        print("Predicted concepts for the model `%s`" % model.name)
        for concept in output.data.regions[0].data.concepts:
            print("\t%s %.2f" % (concept.name, concept.value))