google vision API 사용하기

 ▣ 간단 사용법.

아래 사이트를 참고해서 설치 후 예제를 실행해 봤다.

http://statkclee.github.io/deep-learning/gc-vision.html

그러면 아래와 같이 detection 결과를 볼 수 있다.



















모든 python 예제코드들은 구글에서 아래 github를 통해 제공한다.

https://github.com/GoogleCloudPlatform/python-docs-samples


 ▣ Google Cloud Vision API 사용법

먼저 아래의  Google Cloud Vision API 사용 예제를 익혀보자.
https://github.com/GoogleCloudPlatform/python-docs-samples/tree/master/vision/api/label


위 예제를 해보기 위해서 아래와 같이 사이트에서 Google Cloud SDK 을 설치하고 간단하게
gcloud 사용법을 익힌다.

https://cloud.google.com/sdk/docs/quickstart-linux


이제 아래 예제를 따라해보자.
https://cloud.google.com/storage/docs/quickstart-gsutil

 로컬 터미널에서 접속을 해 본다.

1. 내 터미널에서 bucket 생성해보기

$ gsutil mb gs://my-data-vision00

아래와 같은 응답이 나오면서 내 cloud에 my-data-vision00 이라는 bucket이 생성된 걸 확인할 수 있었다.
   Creating gs://my-data-vision00/...


2. 내 bucket에 object 를 upload 해보자.


아래와 같이 내 bucket에 잘 저장된 걸 확인할 수 있다.

3. 다른 유용한 기능들.

다른 것도 매우 간단해서 더 이상 정리하지 않아도 된다.

 ● Give someone access to your bucket

 → 누군가에게 내 bucket에 있는 데이타를 공유할 때 좋은 듯.

  1. Use the gsutil acl ch command to give a specific email address read and write permission for your bucket:
    gsutil acl ch -u user@gmail.com:W gs://my-awesome-bucket
    If successful, the command returns:
    Updated ACL on gs://my-awesome-bucket/
    Now someone else can put things into and take things out of your bucket.
  2. To remove this permission, use the command:
    gsutil acl ch -d user@gmail.com gs://my-awesome-bucket
    If successful, the command returns:
    Updated ACL on gs://my-awesome-bucket/
    You have removed the user's access to this bucket.


이렇게 기본 예제를 통해 gsutil Tool 사용법을 배워봤다.

api/label 사용법

간단한 사용법을 먼저 익히다 보니 많이 돌아 온 것 같다.

자 이제 다시 Google Cloud Vision API Python Samples를 보자.

아래 코드는 vision/api/label/label.py 에 있는 예제로 python label.py /path/to/image_file.jpg 를 터미널에서 치면 사진에 label을 붙여준다.
나는 아래 고양이 사진을 넣으니 cat 이라고 label 결과가 나왔다.



내가 넣은 사진 path를 아래와 같이 읽는다.
base64.b64encode 는 사진에 대해 encoding을 수행한다.

with open(photo_file, 'rb') as image:
image_content = base64.b64encode(image.read())
cloud-client 사용법

1. crop_hints 사용법

먼저, 아래와 같이 환경을 set-up 하는게 중요하다.

Install Dependencies

  1. Install pip and virtualenv if you do not already have them.
  2. Create a virtualenv. Samples are compatible with Python 2.7 and 3.4+.
    $ virtualenv env
    $ source env/bin/activate
  3. Install the dependencies needed to run the samples.
    $ pip install -r requirements.txt

자 이제 아래와 같이 명령어를 입력하면 된다.
 python crop_hints.py /path/to/image_file.jpg crop

그러면 아래같이 위 고양이 사진이 crop되어 나온다.


아래 코드를 보면 crop 인 경우 crop_to_hint 함수가 실행된다.


option에서 draw를 선택하면 아래와 같이 bounding box 가 그려진다.




2. detect 사용법

아래와 같이 다양한 예제가 존재한다.
Example Usage:
python detect.py text ./resources/wakeupcat.jpg
python detect.py labels ./resources/landmark.jpg
python detect.py web ./resources/landmark.jpg
python detect.py web-uri http://wheresgus.com/dog.JPG
python detect.py faces-uri gs://your-bucket/file.jpg

예제에서 사용하는 000007.jpg 는 아래와 같다.



1) 먼저 text 로 python detect.py text /path/to/image/000007.jpg 
아래과 같이 bbox가 text로 출력된다.

코드는 아래와 같다.

def detect_text(path):
"""Detects text in the file."""
vision_client = vision.Client()

with io.open(path, 'rb') as image_file:
content = image_file.read()

image = vision_client.image(content=content)

texts = image.detect_text()
print('Texts:')

for text in texts:
print('\n"{}"'.format(text.description))

vertices = (['({},{})'.format(bound.x_coordinate, bound.y_coordinate)
for bound in text.bounds.vertices])

print('bounds: {}'.format(','.join(vertices)))


2) python detect.py labels /path/to/image/000007.jpg 


  코드는 아래와 같다.
def detect_labels(path):
"""Detects labels in the file."""
vision_client = vision.Client()

with io.open(path, 'rb') as image_file:
content = image_file.read()

image = vision_client.image(content=content)

labels = image.detect_labels()
print('Labels:')

for label in labels:
print(label.description)


이 외에도 detect.py에는 web이나 bucket에 있는 사진에 대해 landmark나 표정인식 등 다양한 예제가 있다.

3. document_text 사용법
 python doctext.py 

아래와 같이 문자 영역에 bbox를 쳐준다.

아래는 배경이 흰색이라 잘되는 경우고 

아래 사진은 배경이 복잡해서 어려운 경우이다.



이상으로 Google Cloud Vision API 사용법을 배워봤다.

datalab 뿐 아니라 내 PC의 터미널에서 직접 명령어를 넣어 내 PC에 저장되어 있는 이미지나 웹에 있는 이미지에 대해 vision api를 사용할 수 있는 점이 인상적이였다.


댓글

이 블로그의 인기 게시물

Convolutional Sequence to Sequence Learning

FPN