Ruby에서 Cloud Vision API를 사용하는 샘플 코드

12227 단어 webdevapiruby

Vision AI는 Google에서 제공하는 사전 훈련된 기계 학습 모델 세트입니다. Cloud Vision API를 사용하면 애플리케이션 내에서 비전 감지 기능을 쉽게 통합할 수 있습니다.
API에 익숙하지 않은 분들은 응용 프로그램에서 사용하기에는 너무 복잡하다고 생각하고 documentation을 끝까지 읽지 못하고 포기할 수도 있습니다. 괜찮아요. Ruby 애플리케이션에서 Cloud Vision API를 쉽게 사용할 수 있도록 샘플 코드를 준비했습니다.

시작하기 전에 API 키를 생성하고 Cloud Vision API를 활성화해야 합니다. 아직 해보지 않으셨다면 official guide 을 따라해보세요.

샘플 코드는 다음과 같습니다.
*사용된 이미지 파일은 컴퓨터에 있어야 합니다.

require 'base64'
require 'json'
require 'net/https'
# Step 1 - Set path to the image file, API key, and API URL.
IMAGE_FILE = './sample.jpg'
API_KEY = 'XXXXXXXXXX' # Don't forget to protect your API key.
API_URL = "https://vision.googleapis.com/v1/images:annotate?key=#{API_KEY}"
# Step 2 - Convert the image to base64 format.
base64_image = Base64.strict_encode64(File.new(IMAGE_FILE, 'rb').read)
# Step 3 - Set request JSON body.
body = {
  requests: [{
    image: {
      content: base64_image
    },
    features: [
      {
        type: 'LABEL_DETECTION', # Details are below.
        maxResults: 3 # The number of results you would like to get
      }
    ]
  }]
}
# Step 4 - Send request.
uri = URI.parse(API_URL)
https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = true
request = Net::HTTP::Post.new(uri.request_uri)
request["Content-Type"] = "application/json"
response = https.request(request, body.to_json)
# Step 5 - Print the response in the console.
puts response.body


Cloud Vision API와 함께 사용할 수 있는 주요 기능은 다음과 같습니다.
  • TEXT_DETECTION
  • 자르기_힌트
  • 얼굴 감지
  • 이미지 속성
  • LABEL_DETECTION
  • LANDMARK_DETECTION
  • 로고 감지
  • OBJECT_LOCALIZATION
  • SAFE_SEARCH_DETECTION

  • 자세한 내용 보기here .

    시도해 봅시다. 다음은 LABEL_DETECTION, FACE_DETECTION 및 OBJECT_LOCALIZATION의 결과를 예로 든 것입니다.

    LABEL_DETECTION





    {
      "responses": [
        {
          "labelAnnotations": [
            {
              "mid": "/m/01yrx",
              "description": "Cat",
              "score": 0.99598557,
              "topicality": 0.99598557
            },
            {
              "mid": "/m/04rky",
              "description": "Mammal",
              "score": 0.9890478,
              "topicality": 0.9890478
            },
            {
              "mid": "/m/09686",
              "description": "Vertebrate",
              "score": 0.9851104,
              "topicality": 0.9851104
            }
          ]
        }
      ]
    }
    


    얼굴 인식





    {
      "responses": [
        {
          "faceAnnotations": [
            {
              "boundingPoly": {
                "vertices": [
                  {
                    "x": 85,
                    "y": 32
                  },
                  {
                    "x": 228,
                    "y": 32
                  },
                  {
                    "x": 228,
                    "y": 198
                  },
                  {
                    "x": 85,
                    "y": 198
                  }
                ]
              },
              "fdBoundingPoly": {
                "vertices": [
                  {
                    "x": 96,
                    "y": 53
                  },
                  {
                    "x": 220,
                    "y": 53
                  },
                  {
                    "x": 220,
                    "y": 183
                  },
                  {
                    "x": 96,
                    "y": 183
                  }
                ]
              },
              "landmarks": [
                {
                  "type": "LEFT_EYE",
                  "position": {
                    "x": 137.98528,
                    "y": 107.89613,
                    "z": -0.0003142357
                  }
                },
                {
                  "type": "RIGHT_EYE",
                  "position": {
                    "x": 182.86436,
                    "y": 108.30501,
                    "z": 3.7897882
                  }
                },
                {
                  "type": "LEFT_OF_LEFT_EYEBROW",
                  "position": {
                    "x": 124.37836,
                    "y": 98.03804,
                    "z": 3.9364848
                  }
                },
                {
                  "type": "RIGHT_OF_LEFT_EYEBROW",
                  "position": {
                    "x": 151.22585,
                    "y": 97.4466,
                    "z": -5.1410694
                  }
                },
                                     .
                                     .
                                     .
    ],
              "rollAngle": 0.5700898,
              "panAngle": 5.027816,
              "tiltAngle": 7.44839,
              "detectionConfidence": 0.89301175,
              "landmarkingConfidence": 0.7306799,
              "joyLikelihood": "LIKELY", # The face seems happy!
              "sorrowLikelihood": "VERY_UNLIKELY",
              "angerLikelihood": "VERY_UNLIKELY",
              "surpriseLikelihood": "VERY_UNLIKELY",
              "underExposedLikelihood": "VERY_UNLIKELY",
              "blurredLikelihood": "VERY_UNLIKELY",
              "headwearLikelihood": "VERY_UNLIKELY"
            }
          ]
        }
      ]
    }
    


    OBJECT_LOCALIZATION





    {
      "responses": [
        {
          "localizedObjectAnnotations": [
            {
              "mid": "/m/0199g",
              "name": "Bicycle",
              "score": 0.86724836,
              "boundingPoly": {
                "normalizedVertices": [
                  {
                    "x": 0.6728187,
                    "y": 0.673309
                  },
                  {
                    "x": 0.9256048,
                    "y": 0.673309
                  },
                  {
                    "x": 0.9256048,
                    "y": 0.92176706
                  },
                  {
                    "x": 0.6728187,
                    "y": 0.92176706
                  }
                ]
              }
            },
            {
              "mid": "/m/02dgv",
              "name": "Door",
              "score": 0.84919137,
              "boundingPoly": {
                "normalizedVertices": [
                  {
                    "x": 0.40092757,
                    "y": 0.31736398
                  },
                  {
                    "x": 0.51375383,
                    "y": 0.31736398
                  },
                  {
                    "x": 0.51375383,
                    "y": 0.7087951
                  },
                  {
                    "x": 0.40092757,
                    "y": 0.7087951
                  }
                ]
              }
            },
            {
              "mid": "/m/0d4v4",
              "name": "Window",
              "score": 0.8491046,
              "boundingPoly": {
                "normalizedVertices": [
                  {
                    "x": 0.11334894,
                    "y": 0.2133823
                  },
                  {
                    "x": 0.28181157,
                    "y": 0.2133823
                  },
                  {
                    "x": 0.28181157,
                    "y": 0.5806629
                  },
                  {
                    "x": 0.11334894,
                    "y": 0.5806629
                  }
                ]
              }
            }
          ]
        }
      ]
    }
    


    짜잔! 이제 Vision AI로 Ruby 애플리케이션을 구축할 준비가 되었습니다. 앞으로 혁신적인 제품과 서비스를 보게 되어 기쁩니다.

    좋은 웹페이지 즐겨찾기