Google Vision API를 사용하는 방법

최근에 저는 컴퓨터가 어떻게보고, 듣고, 느끼고, 냄새를 맡고, 맛볼 수 있는지에 대해 다루었습니다. 코드에서 '볼 수있는'방법 중 하나는 Google Vision API를 사용하는 것입니다. Google Vision API는 코드를 Google의 이미지 인식 기능에 연결합니다. Google 이미지 검색을 images.google.com에 대한 일종의 API / REST 인터페이스라고 생각할 수 있지만 유사한 이미지를 표시하는 것 이상을 수행합니다.

Google Vision은 얼굴 부분뿐 아니라 고양이인지 사람인지 감지 할 수 있습니다. Google 세이프 서치에 적합하지 않은 자세를 취하고 있는지 또는 행동하지 않는지 감지합니다. 심지어 당신이 행복한 지 슬픈 지 감지하려고 시도합니다.

Google Vision API 설정

Google Vision API를 사용하려면 Google Compute Engine 계정에 가입해야합니다. GCE는 무료로 사용해 볼 수 있지만 가입하려면 신용 카드가 필요합니다. 거기에서 프로젝트를 선택합니다 (하지만 방금 등록한 경우 My First Project가 선택됨). 그런 다음 왼쪽 메뉴에서 API 키를 가져옵니다.

여기에서는 명령 줄 도구 Curl과 함께 사용할 수있는 간단한 API 키를 사용하고 있습니다 (원하는 경우 REST API를 호출 할 수있는 다른 도구를 사용할 수 있음).

생성 한 키를 텍스트 파일이나 버퍼 어딘가에 저장하고 (지금은 참조 YOUR_KEY) 프로젝트에서 API를 활성화합니다 (이 URL로 이동하여 API 활성화를 클릭합니다).

다음 화면에서 프로젝트를 선택하십시오.

이제 갈 준비가되었습니다! 이 텍스트를 google_vision.json이라는 파일에 붙입니다.

{ "requests": [{ "image": { "source": { "imageUri": "//upload.wikimedia.org/wikipedia/commons/9/9b/Gustav_chocolate.jpg"}}, "features": [ { "type": "TYPE_UNSPECIFIED", "maxResults": 50}, { "type": "LANDMARK_DETECTION", "maxResults": 50}, { "type": "FACE_DETECTION", "maxResults": 50}, { " type ":"LOGO_DETECTION ","maxResults ": 50}, {"type ":"LABEL_DETECTION ","maxResults ": 50}, {"type ":"TEXT_DETECTION ","maxResults": 50}, { "type": "SAFE_SEARCH_DETECTION", "maxResults": 50}, { "type": "IMAGE_PROPERTIES", "maxResults": 50}, { "type": "CROP_HINTS", "maxResults ": 50}, {"유형 ":"WEB_DETECTION ","maxResults ": 50}]}]}{ "유형": "WEB_DETECTION", "maxResults": 50}]}]}{ "유형": "WEB_DETECTION", "maxResults": 50}]}]}

이 JSON 요청은 Google Vision API에 파싱 할 이미지와 사용 설정할 감지 기능을 알려줍니다. 대부분의 결과를 50 개까지했습니다.

이제 Curl을 사용하십시오.

curl -v -s -H "Content-Type : application / json"//vision.googleapis.com/v1/images:annotate?key=YOUR_KEY --data-binary @ google_vision.json> 결과 

Google Vision API 응답보기

* vision.googleapis.com (74.125.196.95) 포트 443 (# 0)에 연결 * TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256을 사용한 TLS 1.2 연결 * 서버 인증서 : * .googleapis.com * 서버 인증서 : Google Internet Authority G3 * 서버 인증서 : GlobalSign> POST / v1 / images : annotate? key = YOUR_KEY HTTP / 1.1> 호스트 : vision.googleapis.com> User-Agent : curl / 7.43.0> 수락 : * / *> 콘텐츠 유형 : application / json> 콘텐츠 길이 : 2252 > 예상 : 100-continue> * 100-continue 대기 완료} [2252 bytes data] * 우리는 완전히 업로드되었으며 괜찮습니다. <HTTP / 1.1 200 OK <Content-Type : application / json; charset = UTF-8 <Vary : X-Origin <Vary : Referer <Date : Tue, 24 Apr 2018 18:26:10 GMT <Server : ESF <Cache-Control : private <X-XSS-Protection : 1; mode = block <X-Frame-Options : SAMEORIGIN <X-Content-Type-Options : nosniff <Alt-Svc : hq = ": 443"; ma = 2592000; quic = 51303433; quic = 51303432; quic = 51303431; quic = 51303339; quic = 51303335, quic = ": 443"; ma = 2592000; v = "43,42,41,39,35"<Accept-Ranges : none <Vary : Origin, Accept-Encoding <Transfer-Encoding : chunked <{[905 bytes data] * connection # 0 to host vision.googleapis. com은 그대로 두었다

다음과 같은 내용이 표시되어야합니다.

결과를 보면 다음과 같이 표시됩니다.

{ "responses": [{ "labelAnnotations": [{ "mid": "/ m / 01yrx", "description": "cat", "score": 0.99524164, "topicality": 0.99524164}, { "mid": "/ m / 035qhg", "description": "fauna", "score": 0.93651986, "topicality": 0.93651986}, { "mid": "/ m / 04rky", "description": "mammal", "score ": 0.92701304,"topicality ": 0.92701304}, {"mid ":"/ m / 07k6w8 ","description ":"중소형 고양이 ","score ": 0.92587274,"topicality ": 0.92587274}, {" mid ":"/ m / 0307l ","description ":"포유류와 같은 고양이 ","점수 ": 0.9215815,"topicality ": 0.9215815}, {"mid ":"/ m / 09686 ","description ":"vertebrate ","score ": 0.90370363,"topicality ": 0.90370363}, {"mid ":"/ m / 01l7qd ","description ":"whiskers ","score ": 0.86890864,"topicality ": 0.86890864…설명 ":"수염 ","점수 ": 0.86890864,"주제 ": 0.86890864…설명 ":"수염 ","점수 ": 0.86890864,"주제 ": 0.86890864…

Google은 당신이 고양이 사진을 제공했다는 것을 알고 있습니다. 수염도 찾았어요!

이제 더 큰 포유류를 시도해 보겠습니다. 요청의 URL을 내 Twitter 프로필 사진으로 바꾸고 다시 실행합니다. 2014 년 태국 여행에서 코끼리에 흠뻑 젖는 사진이 있습니다.

결과에는 내 얼굴 특징의 위치가 포함됩니다.

… "landmarks": [{ "type": "LEFT_EYE", "position": { "x": 114.420876, "y": 252.82072, "z": -0.00017215312}}, { "type": "RIGHT_EYE", "position": { "x": 193.82027, "y": 259.787, "z": -4.495486}}, { "type": "LEFT_OF_LEFT_EYEBROW", "position": { "x": 95.38249, "y": 234.60289, "z": 11.487803}},…

Google은 얼굴 특징만큼 감정을 판단하는 데 탁월하지 않습니다.

"rollAngle": 5.7688847, "panAngle": -3.3820703, "joyLikelihood": "UNLIKELY", "sorrowLikelihood": "VERY_UNLIKELY", "angerLikelihood": "UNLIKELY", "surpriseLikelihood": "VERY_UNLIKELY": "VERY_UNLIKELY", "underExposedLikelihood" VERY_UNLIKELY ","blurredLikelihood ":"VERY_UNLIKELY ","headwearLikelihood ":"VERY_UNLIKELY "

나는 키스를 기대하지 않았기 때문에 확실히 놀랐습니다. (나는 단지 코끼리와의 셀카를 목표로하고있었습니다). 코끼리 주둥이의 키스는 지저분하고 약간 칙칙하기 때문에 사진은 "yuck"과 결합 된 약간의 기쁨을 보여줄 수 있습니다.

Google Vision은 또한 사진과 저에 대해 몇 가지 다른 점을 발견했습니다.

{ "mid": "/ m / 0jyfg", "description": "glasses", "score": 0.7390568, "topicality": 0.7390568}, { "mid": "/ m / 08g_yr", "description": " temple ","score ": 0.7100323,"topicality ": 0.7100323}, {"mid ":"/ m / 05mqq3 ","description ":"snout ","score ": 0.65698373,"topicality ": 0.65698373}, { "mid": "/ m / 07j7r", "description": "tree", "score": 0.6460454, "topicality": 0.6460454}, { "mid": "/ m / 019nj4", "description": "smile ","score ": 0.60378826,"topicality ": 0.60378826}, {"mid ":"/ m / 01j3sz ","description ":"laughter ","score": 0.51390797, "topicality": 0.51390797}]…

Google은 코끼리 주둥이를 인식했습니다! 또한 내가 웃고 있고 웃고 있음을 알아 차 렸습니다. 낮은 점수는 낮은 신뢰도를 나타내지 만 Google Vision API가 알아 차린 것은 좋습니다.

… "safeSearchAnnotation": { "adult": "VERY_UNLIKELY", "spoof": "POSSIBLE", "medical": "VERY_UNLIKELY", "violence": "UNLIKELY", "racy": "UNLIKELY"}…

구글은 이것이 플라토닉 키스 이상이라고 믿지 않으며 내가 코끼리에게 해를 입지 않는다는 것을 깨닫습니다.

이 외에도 응답에서 일치하는 이미지 및 유사한 이미지와 같은 것을 찾을 수 있습니다. 주제 연관도 찾을 수 있습니다. 예를 들어, 한 번 "Xennials"기사에 대해 트윗을 올렸는데 이제 그 기사와 관련이 있습니다!

Google Vision API는 어떻게 유용합니까?

보안 또는 소매 분야에서 일하든, 이미지에서 무언가가 무엇인지 파악할 수 있으면 근본적으로 도움이 될 수 있습니다. 어떤 고양이 품종을 보유하고 있는지,이 고객이 누구인지, Google이 칼럼니스트가 주제에 영향을 미친다고 생각하는지 여부를 파악하려는 경우 Google Vision API가 도움이 될 수 있습니다. Google의 약관은이 API를 개인 컴퓨팅 애플리케이션에서만 사용할 수 있도록 허용합니다. 검색 애플리케이션의 데이터를 좋아하든 사용자가 제출 한 콘텐츠가 선정적인지 여부를 확인하든 Google Vision은 꼭 필요한 것일 수 있습니다.

공개 URI를 사용하는 API 버전을 사용했지만 다른 순열을 사용하여 원시 바이너리 또는 Google Cloud Storage 파일 위치를 게시 할 수도 있습니다.

저자의 주 : 이 기사에 연구에 기여한 Lucidworks의 동료 인 Roy Kiesler 에게 감사드립니다 .