私的AI研究会 > AIカメラ作成
$ raspistill -o image.jpg
Vision AI オフィシャルページ から
「クイックスタート」(「Raspberry Pi + AI 電子工作入門」275ページ)を呼び出す。
1.「使ってみる」を押す。
2. 左メニューから「Vision API」を選択。
3. 左メニューから「クライアントライブラリの使用」を選択。
※Microsoft Edge or IE11 では不具合があるようなので。Google Chromeを使用する。
1. Google Cloud Console を開く。
検索窓に「cloud vision」と入力して「Cloud Vision API」を選択」する。
2. 「有効にする」を選択。
3. 左メニューより「認証情報」を選択。
4. メニュー中央の「+認証情報の作成」から「サービスアカウント」を選ぶ。
5. サービスアカウント名を入力
cloudvision
6. 「作成」を押す。
7. ロールの右▼を押し「オーナー」を選ぶ。
8. 「続行」を押す。
9. 「+キーを作成」を押す。
10. 「作成」を押す。
11. キーが作成されて、自動的に秘密鍵がダウンロードされる。
※Microsoft Edge or IE11 ではダウンロードできないので注意。
12. ダウンロードされた秘密鍵をラズパイのホームディレクトリ(/home/pi/)に転送する。
$ export GOOGLE_APPLICATION_CREDENTIALS=/home/pi/raspberryai-mizutu-ec573de141fd.json
$ pip install --upgrade google-cloud-vision Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting google-cloud-vision Downloading https://files.pythonhosted.org/packages/0d/7f/e10d602c2dc3f749f1b78377a3357790f1da71b28e7da9e5bc20b3a9bd40/google_cloud_vision-1.0.0-py2.py3-none-any.whl (435kB) 100% |████████████████████████████████| 440kB 231kB/s Requirement already satisfied, skipping upgrade: enum34; python_version < "3.4" in /usr/lib/python2.7/dist-packages (from google-cloud-vision) (1.1.6) Collecting google-api-core[grpc]<2.0.0dev,>=1.14.0 (from google-cloud-vision) Downloading https://files.pythonhosted.org/packages/4c/b9/c0dd70bcdf06a43d1e21f387448e7997e0ce91f10d0fbee359af4cde1571/google_api_core-1.17.0-py2.py3-none-any.whl (70kB) 100% |████████████████████████████████| 71kB 353kB/s Collecting futures>=3.2.0; python_version < "3.2" (from google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision) Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/d8/a6/f46ae3f1da0cd4361c344888f59ec2f5785e69c872e175a748ef6071cdb5/futures-3.3.0-py2-none-any.whl Requirement already satisfied, skipping upgrade: requests<3.0.0dev,>=2.18.0 in /usr/lib/python2.7/dist-packages (from google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision) (2.21.0) Collecting googleapis-common-protos<2.0dev,>=1.6.0 (from google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision) Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/05/46/168fd780f594a4d61122f7f3dc0561686084319ad73b4febbf02ae8b32cf/googleapis-common-protos-1.51.0.tar.gz Collecting google-auth<2.0dev,>=1.14.0 (from google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision) Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/d2/f8/1623d69e5de22e499b68a0cb5e5d02cd6a2843e55acc19f314f48fe04299/google_auth-1.14.1-py2.py3-none-any.whl (89kB) 100% |████████████████████████████████| 92kB 328kB/s Collecting protobuf>=3.4.0 (from google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision) Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/27/9c/ef816295b4b40298fd0a17bf8f0ba6cf3e0c44cb2ce72257168e09996b8b/protobuf-3.11.3-py2.py3-none-any.whl (434kB) 100% |████████████████████████████████| 440kB 237kB/s Requirement already satisfied, skipping upgrade: setuptools>=34.0.0 in /usr/lib/python2.7/dist-packages (from google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision) (40.8.0) Requirement already satisfied, skipping upgrade: six>=1.10.0 in /usr/lib/python2.7/dist-packages (from google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision) (1.12.0) Requirement already satisfied, skipping upgrade: pytz in /usr/lib/python2.7/dist-packages (from google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision) (2019.1) Collecting grpcio<2.0dev,>=1.8.2; extra == "grpc" (from google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision) Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/a4/16/3138c5bec5255a1b1bf9b1024ecc22b643c4207c7b328535c4303fdc0a37/grpcio-1.28.1-cp27-cp27mu-linux_armv7l.whl (19.8MB) 100% |████████████████████████████████| 19.8MB 17kB/s Collecting rsa<4.1,>=3.1.4 (from google-auth<2.0dev,>=1.14.0->google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision) Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/02/e5/38518af393f7c214357079ce67a317307936896e961e35450b70fad2a9cf/rsa-4.0-py2.py3-none-any.whl Collecting pyasn1-modules>=0.2.1 (from google-auth<2.0dev,>=1.14.0->google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision) Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/95/de/214830a981892a3e286c3794f41ae67a4495df1108c3da8a9f62159b9a9d/pyasn1_modules-0.2.8-py2.py3-none-any.whl (155kB) 100% |████████████████████████████████| 163kB 152kB/s Collecting cachetools<5.0,>=2.0.0 (from google-auth<2.0dev,>=1.14.0->google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision) Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/2f/a6/30b0a0bef12283e83e58c1d6e7b5aabc7acfc4110df81a4471655d33e704/cachetools-3.1.1-py2.py3-none-any.whl Collecting pyasn1>=0.1.3 (from rsa<4.1,>=3.1.4->google-auth<2.0dev,>=1.14.0->google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision) Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Cache entry deserialization failed, entry ignored Downloading https://files.pythonhosted.org/packages/62/1e/a94a8d635fa3ce4cfc7f506003548d0a2447ae76fd5ca53932970fe3053f/pyasn1-0.4.8-py2.py3-none-any.whl (77kB) 100% |████████████████████████████████| 81kB 151kB/s Building wheels for collected packages: googleapis-common-protos Running setup.py bdist_wheel for googleapis-common-protos ... done Stored in directory: /home/pi/.cache/pip/wheels/2c/f9/7f/6eb87e636072bf467e25348bbeb96849333e6a080dca78f706 Successfully built googleapis-common-protos Installing collected packages: futures, protobuf, googleapis-common-protos, pyasn1, rsa, pyasn1-modules, cachetools, google-auth, grpcio, google-api-core, google-cloud-vision The scripts pyrsa-decrypt, pyrsa-encrypt, pyrsa-keygen, pyrsa-priv2pub, pyrsa-sign and pyrsa-verify are installed in '/home/pi/.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. Successfully installed cachetools-3.1.1 futures-3.3.0 google-api-core-1.17.0 google-auth-1.14.1 google-cloud-vision-1.0.0 googleapis-common-protos-1.51.0 grpcio-1.28.1 protobuf-3.11.3 pyasn1-0.4.8 pyasn1-modules-0.2.8 rsa-4.0
$ cd ~/Programs $ git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git Cloning into 'python-docs-samples'... remote: Enumerating objects: 78, done. remote: Counting objects: 100% (78/78), done. remote: Compressing objects: 100% (67/67), done. remote: Total 29487 (delta 25), reused 25 (delta 7), pack-reused 29409 Receiving objects: 100% (29487/29487), 39.48 MiB | 196.00 KiB/s, done. Resolving deltas: 100% (15567/15567), done. $ ls aibot googlesamples hello_nihongo.py image.jpg python-docs-samples switch_led2.py talk2text exercise hello.py hello_today.py led.py switch_led.py switch_speaker.py
$ ls ~/Programs/python-docs-samples AUTHORING_GUIDE.md automl compute dns iap ml_engine run testing CONTRIBUTING.md bigquery container_registry document iot monitoring scheduler texttospeech ISSUE_TEMPLATE.md bigquery_storage datacatalog endpoints jobs notebooks scripts third_party LICENSE bigtable dataflow error_reporting kms noxfile-template.py secretmanager trace MAC_SETUP.md blog datalabeling favicon.ico kubernetes_engine opencensus spanner translate README.md cdn dataproc firestore language profiler speech video appengine cloud-sql datastore functions logging pubsub storage vision asset codelabs dialogflow healthcare media-translation pytest.ini tables auth composer dlp iam memorystore renovate.json tasks $ ls ~/Programs/python-docs-samples/vision/cloud-client/quickstart README.rst README.rst.in quickstart.py quickstart_test.py requirements-test.txt requirements.txt resources
$ cd ~/Programs/python-docs-samples/vision/cloud-client/quickstart $ pip install -r requirements.txt Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Requirement already satisfied: google-cloud-vision==1.0.0 in /home/pi/.local/lib/python2.7/site-packages (from -r requirements.txt (line 1)) (1.0.0) Requirement already satisfied: enum34; python_version < "3.4" in /usr/lib/python2.7/dist-packages (from google-cloud-vision==1.0.0->-r requirements.txt (line 1)) (1.1.6) : : Requirement already satisfied: pyasn1>=0.1.3 in /home/pi/.local/lib/python2.7/site-packages (from rsa<4.1,>=3.1.4->google-auth<2.0dev,>=1.14.0->google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision==1.0.0->-r requirements.txt (line 1)) (0.4.8)すでに 2. でインストール済み。
クイックスタート: クライアント ライブラリの使用 → 「ラベル検出」→ 「Python」
$ vi ~/Programs/python-docs-samples/vision/cloud-lient/quickstart/quickstart.py 1 #!/usr/bin/env python 2 3 # Copyright 2016 Google Inc. All Rights Reserved. 4 # 5 # Licensed under the Apache License, Version 2.0 (the "License"); 6 # you may not use this file except in compliance with the License. 7 # You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an "AS IS" BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 17 18 def run_quickstart(): 19 # [START vision_quickstart] 20 import io 21 import os 22 23 # Imports the Google Cloud client library 24 # [START vision_python_migration_import] 25 from google.cloud import vision 26 from google.cloud.vision import types 27 # [END vision_python_migration_import] 28 29 # Instantiates a client 30 # [START vision_python_migration_client] 31 client = vision.ImageAnnotatorClient() 32 # [END vision_python_migration_client] 33 34 # The name of the image file to annotate 35 file_name = os.path.abspath('image.jpg') #'resources/wakeupcat.jpg') 36
$ cp image.jpg ~/Programs//python-docs-samples/vision/cloud-client/quickstart $ cd /python-docs-samples/vision/cloud-client/quickstart $ source ~/env/bin/activate (env)$ python quickstart.py Traceback (most recent call last): File "quickstart.py", line 54, in <module> run_quickstart() File "quickstart.py", line 25, in run_quickstart from google.cloud import vision ModuleNotFoundError: No module named 'google.cloud'上記エラー発生。
(env) $ pip install -r requirements.txt Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple Collecting google-cloud-vision==1.0.0 Using cached google_cloud_vision-1.0.0-py2.py3-none-any.whl (435 kB) Collecting google-api-core[grpc]<2.0.0dev,>=1.14.0 Using cached google_api_core-1.17.0-py2.py3-none-any.whl (70 kB) Collecting pytz Downloading pytz-2020.1-py2.py3-none-any.whl (510 kB) |████████████████████████████████| 510 kB 122 kB/s Requirement already satisfied: setuptools>=34.0.0 in /home/pi/env/lib/python3.7/site-packages (from google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision==1.0.0->-r requirements.txt (line 1)) (46.1.3) Requirement already satisfied: requests<3.0.0dev,>=2.18.0 in /home/pi/env/lib/python3.7/site-packages (from google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision==1.0.0->-r requirements.txt (line 1)) (2.23.0) Requirement already satisfied: six>=1.10.0 in /home/pi/env/lib/python3.7/site-packages (from google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision==1.0.0->-r requirements.txt (line 1)) (1.14.0) Requirement already satisfied: googleapis-common-protos<2.0dev,>=1.6.0 in /home/pi/env/lib/python3.7/site-packages (from google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision==1.0.0->-r requirements.txt (line 1)) (1.51.0) Collecting google-auth<2.0dev,>=1.14.0 Using cached google_auth-1.14.1-py2.py3-none-any.whl (89 kB) Requirement already satisfied: protobuf>=3.4.0 in /home/pi/env/lib/python3.7/site-packages (from google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision==1.0.0->-r requirements.txt (line 1)) (3.11.3) Requirement already satisfied: grpcio<2.0dev,>=1.8.2; extra == "grpc" in /home/pi/env/lib/python3.7/site-packages (from google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision==1.0.0->-r requirements.txt (line 1)) (1.28.1) Requirement already satisfied: chardet<4,>=3.0.2 in /home/pi/env/lib/python3.7/site-packages (from requests<3.0.0dev,>=2.18.0->google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision==1.0.0->-r requirements.txt (line 1)) (3.0.4) Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /home/pi/env/lib/python3.7/site-packages (from requests<3.0.0dev,>=2.18.0->google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision==1.0.0->-r requirements.txt (line 1)) (1.25.8) Requirement already satisfied: idna<3,>=2.5 in /home/pi/env/lib/python3.7/site-packages (from requests<3.0.0dev,>=2.18.0->google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision==1.0.0->-r requirements.txt (line 1)) (2.9) Requirement already satisfied: certifi>=2017.4.17 in /home/pi/env/lib/python3.7/site-packages (from requests<3.0.0dev,>=2.18.0->google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision==1.0.0->-r requirements.txt (line 1)) (2019.11.28) Requirement already satisfied: rsa<4.1,>=3.1.4 in /home/pi/env/lib/python3.7/site-packages (from google-auth<2.0dev,>=1.14.0->google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision==1.0.0->-r requirements.txt (line 1)) (4.0) Requirement already satisfied: cachetools<5.0,>=2.0.0 in /home/pi/env/lib/python3.7/site-packages (from google-auth<2.0dev,>=1.14.0->google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision==1.0.0->-r requirements.txt (line 1)) (4.0.0) Requirement already satisfied: pyasn1-modules>=0.2.1 in /home/pi/env/lib/python3.7/site-packages (from google-auth<2.0dev,>=1.14.0->google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision==1.0.0->-r requirements.txt (line 1)) (0.2.8) Requirement already satisfied: pyasn1>=0.1.3 in /home/pi/env/lib/python3.7/site-packages (from rsa<4.1,>=3.1.4->google-auth<2.0dev,>=1.14.0->google-api-core[grpc]<2.0.0dev,>=1.14.0->google-cloud-vision==1.0.0->-r requirements.txt (line 1)) (0.4.8) Installing collected packages: pytz, google-auth, google-api-core, google-cloud-vision Attempting uninstall: google-auth Found existing installation: google-auth 1.13.1 Uninstalling google-auth-1.13.1: Successfully uninstalled google-auth-1.13.1 Successfully installed google-api-core-1.17.0 google-auth-1.14.1 google-cloud-vision-1.0.0 pytz-2020.1 WARNING: You are using pip version 20.0.2; however, version 20.1 is available. You should consider upgrading via the '/home/pi/env/bin/python -m pip install --upgrade pip' command.
(env) $ export GOOGLE_APPLICATION_CREDENTIALS=/home/pi/raspberryai-mizutu-ec573de141fd.json (env) $ python quickstart.py Traceback (most recent call last): File "/home/pi/env/lib/python3.7/site-packages/google/api_core/grpc_helpers.py", line 57, in error_remapped_callable return callable_(*args, **kwargs) File "/home/pi/env/lib/python3.7/site-packages/grpc/_channel.py", line 826, in __call__ return _end_unary_response_blocking(state, call, False, None) File "/home/pi/env/lib/python3.7/site-packages/grpc/_channel.py", line 729, in _end_unary_response_blocking raise _InactiveRpcError(state) grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with: status = StatusCode.PERMISSION_DENIED details = "This API method requires billing to be enabled. Please enable billing on project #1063710001909 by visiting https://console.developers.google.com/billing/enable?project=1063710001909 then retry. If you enabled billing for this project recently, wait a few minutes for the action to propagate to our systems and retry." debug_error_string = "{"created":"@1588400137.358626125","description":"Error received from peer ipv4:172.217.161.234:443","file":"src/core/lib/surface/call.cc","file_line":1056,"grpc_message":"This API method requires billing to be enabled. Please enable billing on project #1063710001909 by visiting https://console.developers.google.com/billing/enable?project=1063710001909 then retry. If you enabled billing for this project recently, wait a few minutes for the action to propagate to our systems and retry.","grpc_status":7}" > The above exception was the direct cause of the following exception: Traceback (most recent call last): File "quickstart.py", line 54, in <module> run_quickstart() File "quickstart.py", line 44, in run_quickstart response = client.label_detection(image=image) File "/home/pi/env/lib/python3.7/site-packages/google/cloud/vision_helpers/decorators.py", line 101, in inner response = self.annotate_image(request, retry=retry, timeout=timeout) File "/home/pi/env/lib/python3.7/site-packages/google/cloud/vision_helpers/__init__.py", line 72, in annotate_image r = self.batch_annotate_images([request], retry=retry, timeout=timeout) File "/home/pi/env/lib/python3.7/site-packages/google/cloud/vision_v1/gapic/image_annotator_client.py", line 274, in batch_annotate_images request, retry=retry, timeout=timeout, metadata=metadata File "/home/pi/env/lib/python3.7/site-packages/google/api_core/gapic_v1/method.py", line 143, in __call__ return wrapped_func(*args, **kwargs) File "/home/pi/env/lib/python3.7/site-packages/google/api_core/grpc_helpers.py", line 59, in error_remapped_callable six.raise_from(exceptions.from_grpc_error(exc), exc) File "<string>", line 3, in raise_from google.api_core.exceptions.PermissionDenied: 403 This API method requires billing to be enabled. Please enable billing on project #1063710001909 by visiting https://console.developers.google.com/billing/enable?project=1063710001909 then retry. If you enabled billing for this project recently, wait a few minutes for the action to propagate to our systems and retry.