

今、私はCloud
Storageに画像データがアップロードされたらAutoMLを動かしアップロードした画像を予測させて結果を出力するということをPythonで行おうとしています。

コチラのURLの記事を参考にして作っていました。

[Cloud Functions を使って、AutoML Vision API を呼び出してみた。 -
Qiita](https://qiita.com/pyru89kwmr/items/93915a0bb7e958288c35)

しかし、このようなエラーが出てしまいました。

[code]

    Build failed: {
        "error": {
            "canonicalCode": "INVALID_ARGUMENT",
            "errorMessage": "`pip_download_wheels` had stderr output:\nCommand \"python setup.py egg_info\" failed with error code 1 in /tmp/pip-wheel-ht8988nt/functools32/\n\nerror: `pip_download_wheels` returned code: 1",
            "errorType": "InternalError",
            "errorId": "1CCAE325"
        }
    }
    
[/code]

Cloud Functionsのソースに何を書くとエラーなくAutoMLで予測を行えるのか教えていただきたく思います。

よろしくお願いいたします。

ちなみに以下が実際に使用中のプログラムです。  
PythonやGCPは初めて間もないので不足や間違いが多々あるかもしれませんがお助けいただけますと幸いです。

* * *

**サービスアカウントキー**  
省略

**main.py**

[code]

    # -*- coding: utf-8 -*-
    import json
    from automl_vision1 import get_prediction
    
    
    def hello_gcs(event, context):
        """Triggered by a change to a Cloud Storage bucket.
        Args:
             event (dict): Event payload.
             context (google.cloud.functions.Context): Metadata for the event.
        """
        file = event
        print(f"Processing file: {file['name']}.")
    
         # result = get_prediction(content=image.read())
    
[/code]

**requirements.txt**

[code]

    absl-py==0.8.0
    astor==0.8.0
    attrs==19.1.0
    autopep8==1.4.4
    backports.functools-lru-cache==1.5
    backports.shutil-get-terminal-size==1.0.0
    backports.weakref==1.0.post1
    cachetools==3.1.1
    certifi==2019.9.11
    chardet==3.0.4
    configparser==4.0.2
    contextlib2==0.5.5
    crcmod==1.7
    decorator==4.4.0
    enum34==1.1.6
    funcsigs==1.0.2
    functools32==3.2.3.post2
    future==0.17.1
    futures==3.3.0
    gast==0.3.2
    google-api-core==1.14.2
    google-api-python-client==1.7.11
    google-auth==1.6.3
    google-auth-httplib2==0.0.3
    google-cloud-bigquery==1.20.0
    google-cloud-core==1.0.3
    google-cloud-datastore==1.9.0
    google-cloud-language==1.3.0
    google-cloud-logging==1.12.1
    google-cloud-spanner==1.10.0
    google-cloud-storage==1.19.0
    google-cloud-translate==1.6.0
    google-cloud-videointelligence==1.11.0
    google-cloud-vision==0.39.0
    google-pasta==0.1.7
    google-resumable-media==0.4.1
    googleapis-common-protos==1.6.0
    grpc-google-iam-v1==0.12.3
    grpcio==1.23.0
    h5py==2.10.0
    httplib2==0.13.1
    idna==2.8
    importlib-metadata==0.23
    ipaddr==2.2.0
    ipython==5.8.0
    ipython-genutils==0.2.0
    jedi==0.14.1
    jsonschema==3.0.2
    Keras-Applications==1.0.8
    Keras-Preprocessing==1.1.0
    Markdown==3.1.1
    mccabe==0.6.1
    meld3==1.0.2
    mercurial==4.0
    mock==3.0.5
    more-itertools==5.0.0
    numpy==1.16.5
    oauth2==1.9.0.post1
    oauth2client==4.1.3
    parso==0.5.1
    pathlib2==2.3.4
    pexpect==4.7.0
    pickleshare==0.7.5
    pluggy==0.13.0
    prompt-toolkit==1.0.16
    protobuf==3.9.1
    ptyprocess==0.6.0
    pyasn1==0.4.7
    pyasn1-modules==0.2.6
    pycodestyle==2.5.0
    pydocstyle==3.0.0
    pyflakes==2.1.1
    Pygments==2.4.2
    pyrsistent==0.15.4
    python-jsonrpc-server==0.2.0
    python-language-server==0.28.3
    pytz==2019.2
    requests==2.22.0
    rope==0.14.0
    rsa==4.0
    scandir==1.10.0
    simplegeneric==0.8.1
    six==1.12.0
    snowballstemmer==1.9.1
    supervisor==3.3.1
    tensorboard==1.14.0
    tensorflow==1.14.0
    tensorflow-estimator==1.14.0
    termcolor==1.1.0
    traitlets==4.3.2
    uritemplate==3.0.0
    urllib3==1.25.3
    virtualenv==16.7.5
    wcwidth==0.1.7
    Werkzeug==0.15.6
    wrapt==1.11.2
    yapf==0.28.0
    zipp==0.6.0
    click==6.7
    Flask==1.0.2
    itsdangerous==0.24
    Jinja2==2.10
    MarkupSafe==1.0
    pip==18.0
    setuptools==40.2.0
    
[/code]

**automl_vision1.py**

[code]

    # -*- coding: utf-8 -*-
    from google.cloud import automl_v1beta1
    from google.cloud.automl_v1beta1.gapic import enums
    from google.cloud.automl_v1beta1.proto import service_pb2
    
        try:
    
            client = automl_v1beta1.AutoMlClient.from_service_account_json('*****')
            prediction_client = automl_v1beta1.PredictionServiceClient.from_service_account_json('*****')
    
            project_id = '*********'
            compute_region = 'us-central1'
            model_id = '*********'
    
            def get_prediction(content):
                payload = {
                    'image': {
                        'image_bytes': content
                    }
                }
    
                ### 閾値
                params = {
                    "score_threshold": bytes(b'0.1')
                }
    
                model_full_id = client.model_path(
                    project_id, compute_region, model_id
                )
    
                ### predict
                request = prediction_client.predict(
                    model_full_id, payload, params
                )
    
                ### 結果をパース -> ["person", 0.8235]
                result_list = [[result.display_name, result.classification.score]for result in request.payload]
    
                return result_list
            end
        except:
            pass
    
[/code]


CC BY-SA 4.0
2019-10-01T04:54:59.270
59385
2019-10-02T00:59:07.353
2019-10-02T00:59:07.353
36031
36031
question
python google-cloud-storage
Cloud Functionsのソースの部分にPython でCloud Storageにある画像をAutoMLの中のモデルで予測するにはどんなコードを書けば良いでしょうか？