LoginSignup
3
1

More than 5 years have passed since last update.

機械学習で「愛」を理解出来るのか聞いてみる

Posted at

この記事はWHITEPLUS Advent Calendar 2016 最終日になります。

こんにちは、ホワイトプラスではもっぱらCTO兼CFO(Chief Factory Officer)を担当している @exmeat です。

前回の記事を書いてすぐにAmazon Rekognitionが公開された事にタイムリーさを感じました。

先に書いておくと半分以上ネタ記事です。
今回も前回同様マシンビジョン系のAPIにクリスマスというところも相まって「愛」について聞き、
現状のAPI比較をしてみたいと思います。

やってみた

「愛」と聞いてパッと思いついた、下記についての画像
(肖像権・著作権に引っかかる可能性があるので面白さは0ですが画像引用は避けています)
を、Vision APIAmazon Rekognitionに投げてみます。

  • 福原愛
  • はるな愛
  • サウザー

CLOUD VISION API

レスポンスのみ貼り付けておきます。

  • 福原愛
{
  "faceAnnotations": [
    {
      "boundingPoly": {
        "vertices": [
          {
            "x": 1580,
            "y": 205
          },
          {
            "x": 2661,
            "y": 205
          },
          {
            "x": 2661,
            "y": 1461
          },
          {
            "x": 1580,
            "y": 1461
          }
        ]
      },
      "fdBoundingPoly": {
        "vertices": [
          {
            "x": 1738,
            "y": 577
          },
          {
            "x": 2498,
            "y": 577
          },
          {
            "x": 2498,
            "y": 1337
          },
          {
            "x": 1738,
            "y": 1337
          }
        ]
      },
      "landmarks": [
        {
          "type": "LEFT_EYE",
          "position": {
            "x": 1941.1484,
            "y": 797.7868,
            "z": -0.0036025709
          }
        },
        {
          "type": "RIGHT_EYE",
          "position": {
            "x": 2260.7415,
            "y": 793.29224,
            "z": -16.114992
          }
        },
        {
          "type": "LEFT_OF_LEFT_EYEBROW",
          "position": {
            "x": 1828.5488,
            "y": 729.85229,
            "z": 29.334526
          }
        },
        {
          "type": "RIGHT_OF_LEFT_EYEBROW",
          "position": {
            "x": 2017.5198,
            "y": 732.75134,
            "z": -74.88121
          }
        },
        {
          "type": "LEFT_OF_RIGHT_EYEBROW",
          "position": {
            "x": 2163.4014,
            "y": 731.84668,
            "z": -83.2394
          }
        },
        {
          "type": "RIGHT_OF_RIGHT_EYEBROW",
          "position": {
            "x": 2375.2419,
            "y": 720.80652,
            "z": 2.4601972
          }
        },
        {
          "type": "MIDPOINT_BETWEEN_EYES",
          "position": {
            "x": 2099.7351,
            "y": 795.73883,
            "z": -78.151955
          }
        },
        {
          "type": "NOSE_TIP",
          "position": {
            "x": 2100.7107,
            "y": 999.17029,
            "z": -156.33537
          }
        },
        {
          "type": "UPPER_LIP",
          "position": {
            "x": 2103.8123,
            "y": 1101.3175,
            "z": -70.267624
          }
        },
        {
          "type": "LOWER_LIP",
          "position": {
            "x": 2111.2642,
            "y": 1220.255,
            "z": -35.288116
          }
        },
        {
          "type": "MOUTH_LEFT",
          "position": {
            "x": 1942.1431,
            "y": 1116.9434,
            "z": 40.240108
          }
        },
        {
          "type": "MOUTH_RIGHT",
          "position": {
            "x": 2271.5227,
            "y": 1125.2175,
            "z": 23.959728
          }
        },
        {
          "type": "MOUTH_CENTER",
          "position": {
            "x": 2110.1687,
            "y": 1164.4414,
            "z": -40.225014
          }
        },
        {
          "type": "NOSE_BOTTOM_RIGHT",
          "position": {
            "x": 2212.9504,
            "y": 1015.2073,
            "z": -28.940802
          }
        },
        {
          "type": "NOSE_BOTTOM_LEFT",
          "position": {
            "x": 1996.1442,
            "y": 1014.1853,
            "z": -19.189373
          }
        },
        {
          "type": "NOSE_BOTTOM_CENTER",
          "position": {
            "x": 2104.563,
            "y": 1050.8895,
            "z": -76.416748
          }
        },
        {
          "type": "LEFT_EYE_TOP_BOUNDARY",
          "position": {
            "x": 1937.0562,
            "y": 785.5993,
            "z": -24.048376
          }
        },
        {
          "type": "LEFT_EYE_RIGHT_CORNER",
          "position": {
            "x": 2002.2816,
            "y": 812.31824,
            "z": -1.5893399
          }
        },
        {
          "type": "LEFT_EYE_BOTTOM_BOUNDARY",
          "position": {
            "x": 1936.24,
            "y": 820.49957,
            "z": -1.2786045
          }
        },
        {
          "type": "LEFT_EYE_LEFT_CORNER",
          "position": {
            "x": 1870.6619,
            "y": 805.92731,
            "z": 34.403152
          }
        },
        {
          "type": "LEFT_EYE_PUPIL",
          "position": {
            "x": 1932.8733,
            "y": 806.97382,
            "z": -9.1371622
          }
        },
        {
          "type": "RIGHT_EYE_TOP_BOUNDARY",
          "position": {
            "x": 2262.7659,
            "y": 779.20911,
            "z": -40.541359
          }
        },
        {
          "type": "RIGHT_EYE_RIGHT_CORNER",
          "position": {
            "x": 2334.4758,
            "y": 797.52869,
            "z": 10.991424
          }
        },
        {
          "type": "RIGHT_EYE_BOTTOM_BOUNDARY",
          "position": {
            "x": 2266.9077,
            "y": 817.40955,
            "z": -17.654884
          }
        },
        {
          "type": "RIGHT_EYE_LEFT_CORNER",
          "position": {
            "x": 2201.7039,
            "y": 809.96033,
            "z": -11.452857
          }
        },
        {
          "type": "RIGHT_EYE_PUPIL",
          "position": {
            "x": 2267.4387,
            "y": 800.78418,
            "z": -26.40888
          }
        },
        {
          "type": "LEFT_EYEBROW_UPPER_MIDPOINT",
          "position": {
            "x": 1920.0057,
            "y": 693.499,
            "z": -48.721539
          }
        },
        {
          "type": "RIGHT_EYEBROW_UPPER_MIDPOINT",
          "position": {
            "x": 2273.0793,
            "y": 686.56189,
            "z": -66.581139
          }
        },
        {
          "type": "LEFT_EAR_TRAGION",
          "position": {
            "x": 1754.2598,
            "y": 932.76819,
            "z": 426.99564
          }
        },
        {
          "type": "RIGHT_EAR_TRAGION",
          "position": {
            "x": 2500.9272,
            "y": 922.20941,
            "z": 393.62369
          }
        },
        {
          "type": "FOREHEAD_GLABELLA",
          "position": {
            "x": 2095.6697,
            "y": 728.34705,
            "z": -91.921135
          }
        },
        {
          "type": "CHIN_GNATHION",
          "position": {
            "x": 2114.0188,
            "y": 1356.9807,
            "z": 21.088684
          }
        },
        {
          "type": "CHIN_LEFT_GONION",
          "position": {
            "x": 1788.7964,
            "y": 1151.7496,
            "z": 311.80249
          }
        },
        {
          "type": "CHIN_RIGHT_GONION",
          "position": {
            "x": 2457.8264,
            "y": 1138.7776,
            "z": 277.99213
          }
        }
      ],
      "rollAngle": -1,
      "panAngle": -3,
      "tiltAngle": -5,
      "detectionConfidence": 100,
      "landmarkingConfidence": 0.82842672,
      "joyLikelihood": "VERY_LIKELY",
      "sorrowLikelihood": "VERY_UNLIKELY",
      "angerLikelihood": "VERY_UNLIKELY",
      "surpriseLikelihood": "VERY_UNLIKELY",
      "underExposedLikelihood": "VERY_UNLIKELY",
      "blurredLikelihood": "VERY_UNLIKELY",
      "headwearLikelihood": "VERY_UNLIKELY",
      "types": [
        {
          "type": "joyLikelihood",
          "value": "VERY_LIKELY",
          "friendlyType": "Joy"
        },
        {
          "type": "sorrowLikelihood",
          "value": "VERY_UNLIKELY",
          "friendlyType": "Sorrow"
        },
        {
          "type": "angerLikelihood",
          "value": "VERY_UNLIKELY",
          "friendlyType": "Anger"
        },
        {
          "type": "surpriseLikelihood",
          "value": "VERY_UNLIKELY",
          "friendlyType": "Surprise"
        },
        {
          "type": "underExposedLikelihood",
          "value": "VERY_UNLIKELY",
          "friendlyType": "Exposed"
        },
        {
          "type": "blurredLikelihood",
          "value": "VERY_UNLIKELY",
          "friendlyType": "Blurred"
        },
        {
          "type": "headwearLikelihood",
          "value": "VERY_UNLIKELY",
          "friendlyType": "Headwear"
        }
      ],
      "showHeader": false,
      "num": 1
    }
  ],
  "labelAnnotations": [
    {
      "mid": "/m/01g5v",
      "description": "Blue",
      "score": 92
    },
    {
      "mid": "/m/01g317",
      "description": "Person",
      "score": 92
    },
    {
      "mid": "/m/09j2d",
      "description": "Clothing",
      "score": 92
    }
  ],
  "textAnnotations": [
    {
      "locale": "en",
      "description": "ANA\n",
      "boundingPoly": {
        "vertices": [
          {
            "x": 2156,
            "y": 1953
          },
          {
            "x": 2382,
            "y": 1953
          },
          {
            "x": 2382,
            "y": 2049
          },
          {
            "x": 2156,
            "y": 2049
          }
        ]
      }
    },
    {
      "description": "ANA",
      "boundingPoly": {
        "vertices": [
          {
            "x": 2164,
            "y": 2049
          },
          {
            "x": 2155,
            "y": 1984
          },
          {
            "x": 2371,
            "y": 1954
          },
          {
            "x": 2380,
            "y": 2019
          }
        ]
      }
    }
  ],
  "safeSearchAnnotation": {
    "adult": "VERY_UNLIKELY",
    "spoof": "VERY_UNLIKELY",
    "medical": "VERY_UNLIKELY",
    "violence": "VERY_UNLIKELY"
  },
  "imagePropertiesAnnotation": {
    "dominantColors": {
      "colors": [
        {
          "color": {
            "red": 201,
            "green": 204,
            "blue": 204
          },
          "score": 0.29193309,
          "pixelFraction": 0.6479333,
          "percent": 34.857512757875824,
          "percentRounded": 35,
          "rgb": "201, 204, 204",
          "hex": "C9CCCC"
        },
        {
          "color": {
            "red": 102,
            "green": 198,
            "blue": 251
          },
          "score": 0.14994319,
          "pixelFraction": 0.064333335,
          "percent": 17.90357735185689,
          "percentRounded": 18,
          "rgb": "102, 198, 251",
          "hex": "66C6FB"
        },
        {
          "color": {
            "red": 74,
            "green": 161,
            "blue": 225
          },
          "score": 0.13106726,
          "pixelFraction": 0.043066666,
          "percent": 15.649745931815495,
          "percentRounded": 16,
          "rgb": "74, 161, 225",
          "hex": "4AA1E1"
        },
        {
          "color": {
            "red": 24,
            "green": 18,
            "blue": 15
          },
          "score": 0.011742229,
          "pixelFraction": 0.0184,
          "percent": 1.4020503711086656,
          "percentRounded": 1,
          "rgb": "24, 18, 15",
          "hex": "18120F"
        },
        {
          "color": {
            "red": 82,
            "green": 43,
            "blue": 27
          },
          "score": 0.0061179046,
          "pixelFraction": 0.0048,
          "percent": 0.7304925167817296,
          "percentRounded": 1,
          "rgb": "82, 43, 27",
          "hex": "522B1B"
        },
        {
          "color": {
            "red": 46,
            "green": 129,
            "blue": 191
          },
          "score": 0.084801279,
          "pixelFraction": 0.027866667,
          "percent": 10.125476576247957,
          "percentRounded": 10,
          "rgb": "46, 129, 191",
          "hex": "2E81BF"
        },
        {
          "color": {
            "red": 76,
            "green": 172,
            "blue": 229
          },
          "score": 0.063272148,
          "pixelFraction": 0.022533333,
          "percent": 7.5548465784684,
          "percentRounded": 8,
          "rgb": "76, 172, 229",
          "hex": "4CACE5"
        },
        {
          "color": {
            "red": 68,
            "green": 161,
            "blue": 233
          },
          "score": 0.039856847,
          "pixelFraction": 0.012133333,
          "percent": 4.759003348305616,
          "percentRounded": 5,
          "rgb": "68, 161, 233",
          "hex": "44A1E9"
        },
        {
          "color": {
            "red": 40,
            "green": 124,
            "blue": 197
          },
          "score": 0.030778587,
          "pixelFraction": 0.0090666665,
          "percent": 3.6750372800215656,
          "percentRounded": 4,
          "rgb": "40, 124, 197",
          "hex": "287CC5"
        },
        {
          "color": {
            "red": 30,
            "green": 92,
            "blue": 151
          },
          "score": 0.027991541,
          "pixelFraction": 0.0094666667,
          "percent": 3.3422572875178496,
          "percentRounded": 3,
          "rgb": "30, 92, 151",
          "hex": "1E5C97"
        }
      ]
    }
  }
}
  • はるな愛
{
  "faceAnnotations": [
    {
      "boundingPoly": {
        "vertices": [
          {
            "x": 332,
            "y": 65
          },
          {
            "x": 678,
            "y": 65
          },
          {
            "x": 678,
            "y": 467
          },
          {
            "x": 332,
            "y": 467
          }
        ]
      },
      "fdBoundingPoly": {
        "vertices": [
          {
            "x": 394,
            "y": 198
          },
          {
            "x": 617,
            "y": 198
          },
          {
            "x": 617,
            "y": 421
          },
          {
            "x": 394,
            "y": 421
          }
        ]
      },
      "landmarks": [
        {
          "type": "LEFT_EYE",
          "position": {
            "x": 455.93561,
            "y": 279.58887,
            "z": 0.002033276
          }
        },
        {
          "type": "RIGHT_EYE",
          "position": {
            "x": 545.47552,
            "y": 242.06419,
            "z": 11.393199
          }
        },
        {
          "type": "LEFT_OF_LEFT_EYEBROW",
          "position": {
            "x": 414.9986,
            "y": 271.03482,
            "z": 0.26976675
          }
        },
        {
          "type": "RIGHT_OF_LEFT_EYEBROW",
          "position": {
            "x": 473.77066,
            "y": 250.72954,
            "z": -21.04141
          }
        },
        {
          "type": "LEFT_OF_RIGHT_EYEBROW",
          "position": {
            "x": 519.90735,
            "y": 229.9841,
            "z": -15.321186
          }
        },
        {
          "type": "RIGHT_OF_RIGHT_EYEBROW",
          "position": {
            "x": 571.49,
            "y": 201.96915,
            "z": 21.275755
          }
        },
        {
          "type": "MIDPOINT_BETWEEN_EYES",
          "position": {
            "x": 505.37823,
            "y": 259.68524,
            "z": -16.119781
          }
        },
        {
          "type": "NOSE_TIP",
          "position": {
            "x": 530.76257,
            "y": 314.26019,
            "z": -36.198784
          }
        },
        {
          "type": "UPPER_LIP",
          "position": {
            "x": 545.10815,
            "y": 352.22119,
            "z": -5.6128697
          }
        },
        {
          "type": "LOWER_LIP",
          "position": {
            "x": 557.03436,
            "y": 382.84143,
            "z": 7.7308455
          }
        },
        {
          "type": "MOUTH_LEFT",
          "position": {
            "x": 508.21664,
            "y": 378.66656,
            "z": 19.871212
          }
        },
        {
          "type": "MOUTH_RIGHT",
          "position": {
            "x": 583.08344,
            "y": 345.17834,
            "z": 29.17272
          }
        },
        {
          "type": "MOUTH_CENTER",
          "position": {
            "x": 549.69641,
            "y": 365.62262,
            "z": 4.8223834
          }
        },
        {
          "type": "NOSE_BOTTOM_RIGHT",
          "position": {
            "x": 555.90625,
            "y": 313.37332,
            "z": 7.7044029
          }
        },
        {
          "type": "NOSE_BOTTOM_LEFT",
          "position": {
            "x": 507.62653,
            "y": 335.07816,
            "z": 1.3251806
          }
        },
        {
          "type": "NOSE_BOTTOM_CENTER",
          "position": {
            "x": 536.84375,
            "y": 331.72986,
            "z": -9.713788
          }
        },
        {
          "type": "LEFT_EYE_TOP_BOUNDARY",
          "position": {
            "x": 453.51547,
            "y": 276.64584,
            "z": -7.8527741
          }
        },
        {
          "type": "LEFT_EYE_RIGHT_CORNER",
          "position": {
            "x": 477.39417,
            "y": 275.62308,
            "z": 3.2729957
          }
        },
        {
          "type": "LEFT_EYE_BOTTOM_BOUNDARY",
          "position": {
            "x": 458.83878,
            "y": 286.57977,
            "z": 0.38121957
          }
        },
        {
          "type": "LEFT_EYE_LEFT_CORNER",
          "position": {
            "x": 435.01022,
            "y": 290.35278,
            "z": 7.351604
          }
        },
        {
          "type": "LEFT_EYE_PUPIL",
          "position": {
            "x": 454.0975,
            "y": 283.56311,
            "z": -2.3079543
          }
        },
        {
          "type": "RIGHT_EYE_TOP_BOUNDARY",
          "position": {
            "x": 549.12769,
            "y": 234.07819,
            "z": 3.9848974
          }
        },
        {
          "type": "RIGHT_EYE_RIGHT_CORNER",
          "position": {
            "x": 568.11676,
            "y": 230.92166,
            "z": 23.879211
          }
        },
        {
          "type": "RIGHT_EYE_BOTTOM_BOUNDARY",
          "position": {
            "x": 550.10034,
            "y": 247.83447,
            "z": 12.136777
          }
        },
        {
          "type": "RIGHT_EYE_LEFT_CORNER",
          "position": {
            "x": 531.30109,
            "y": 252.43697,
            "z": 10.274594
          }
        },
        {
          "type": "RIGHT_EYE_PUPIL",
          "position": {
            "x": 552.35,
            "y": 239.8916,
            "z": 9.7783632
          }
        },
        {
          "type": "LEFT_EYEBROW_UPPER_MIDPOINT",
          "position": {
            "x": 438.66718,
            "y": 251.10107,
            "z": -18.554796
          }
        },
        {
          "type": "RIGHT_EYEBROW_UPPER_MIDPOINT",
          "position": {
            "x": 542.4787,
            "y": 204.82683,
            "z": -5.6810017
          }
        },
        {
          "type": "LEFT_EAR_TRAGION",
          "position": {
            "x": 392.41971,
            "y": 342.67896,
            "z": 128.55269
          }
        },
        {
          "type": "RIGHT_EAR_TRAGION",
          "position": {
            "x": 609.35809,
            "y": 245.82707,
            "z": 155.3658
          }
        },
        {
          "type": "FOREHEAD_GLABELLA",
          "position": {
            "x": 496.95645,
            "y": 239.5983,
            "z": -22.191193
          }
        },
        {
          "type": "CHIN_GNATHION",
          "position": {
            "x": 573.07184,
            "y": 424.93011,
            "z": 30.667599
          }
        },
        {
          "type": "CHIN_LEFT_GONION",
          "position": {
            "x": 436.07254,
            "y": 404.28085,
            "z": 98.859352
          }
        },
        {
          "type": "CHIN_RIGHT_GONION",
          "position": {
            "x": 632.12384,
            "y": 316.19232,
            "z": 123.08565
          }
        }
      ],
      "rollAngle": -23,
      "panAngle": 7,
      "tiltAngle": -9,
      "detectionConfidence": 78,
      "landmarkingConfidence": 0.48125312,
      "joyLikelihood": "VERY_UNLIKELY",
      "sorrowLikelihood": "VERY_UNLIKELY",
      "angerLikelihood": "POSSIBLE",
      "surpriseLikelihood": "POSSIBLE",
      "underExposedLikelihood": "VERY_UNLIKELY",
      "blurredLikelihood": "VERY_UNLIKELY",
      "headwearLikelihood": "UNLIKELY",
      "types": [
        {
          "type": "joyLikelihood",
          "value": "VERY_UNLIKELY",
          "friendlyType": "Joy"
        },
        {
          "type": "sorrowLikelihood",
          "value": "VERY_UNLIKELY",
          "friendlyType": "Sorrow"
        },
        {
          "type": "angerLikelihood",
          "value": "POSSIBLE",
          "friendlyType": "Anger"
        },
        {
          "type": "surpriseLikelihood",
          "value": "POSSIBLE",
          "friendlyType": "Surprise"
        },
        {
          "type": "underExposedLikelihood",
          "value": "VERY_UNLIKELY",
          "friendlyType": "Exposed"
        },
        {
          "type": "blurredLikelihood",
          "value": "VERY_UNLIKELY",
          "friendlyType": "Blurred"
        },
        {
          "type": "headwearLikelihood",
          "value": "UNLIKELY",
          "friendlyType": "Headwear"
        }
      ],
      "showHeader": false,
      "num": 1
    }
  ],
  "labelAnnotations": [
    {
      "mid": "/m/03q69",
      "description": "Hair",
      "score": 95
    },
    {
      "mid": "/m/09j2d",
      "description": "Clothing",
      "score": 91
    },
    {
      "mid": "/m/05r655",
      "description": "Girl",
      "score": 81
    },
    {
      "mid": "/m/01f43",
      "description": "Beauty",
      "score": 81
    },
    {
      "mid": "/m/0ds4x",
      "description": "Hairstyle",
      "score": 75
    },
    {
      "mid": "/m/06z04",
      "description": "Skin",
      "score": 75
    },
    {
      "mid": "/m/01f5gx",
      "description": "Eating",
      "score": 69
    },
    {
      "mid": "/m/013y0j",
      "description": "Organ",
      "score": 67
    },
    {
      "mid": "/m/05wgwh",
      "description": "Sweetness",
      "score": 59
    },
    {
      "mid": "/m/02qbl1m",
      "description": "Photo Shoot",
      "score": 58
    },
    {
      "mid": "/m/0k65p",
      "description": "Hand",
      "score": 55
    },
    {
      "mid": "/m/02p0tk3",
      "description": "Human Body",
      "score": 54
    },
    {
      "mid": "/m/0d1pc",
      "description": "Model",
      "score": 54
    }
  ],
  "safeSearchAnnotation": {
    "adult": "VERY_UNLIKELY",
    "spoof": "VERY_UNLIKELY",
    "medical": "VERY_UNLIKELY",
    "violence": "VERY_UNLIKELY"
  },
  "imagePropertiesAnnotation": {
    "dominantColors": {
      "colors": [
        {
          "color": {
            "red": 233,
            "green": 228,
            "blue": 218
          },
          "score": 0.58901525,
          "pixelFraction": 0.58285117,
          "percent": 67.84972536109886,
          "percentRounded": 68,
          "rgb": "233, 228, 218",
          "hex": "E9E4DA"
        },
        {
          "color": {
            "red": 76,
            "green": 41,
            "blue": 20
          },
          "score": 0.040524818,
          "pixelFraction": 0.022448508,
          "percent": 4.66812662593798,
          "percentRounded": 5,
          "rgb": "76, 41, 20",
          "hex": "4C2914"
        },
        {
          "color": {
            "red": 17,
            "green": 81,
            "blue": 142
          },
          "score": 0.039375115,
          "pixelFraction": 0.009546401,
          "percent": 4.535690270857477,
          "percentRounded": 5,
          "rgb": "17, 81, 142",
          "hex": "11518E"
        },
        {
          "color": {
            "red": 214,
            "green": 206,
            "blue": 197
          },
          "score": 0.0743363,
          "pixelFraction": 0.077875495,
          "percent": 8.562932011285367,
          "percentRounded": 9,
          "rgb": "214, 206, 197",
          "hex": "D6CEC5"
        },
        {
          "color": {
            "red": 244,
            "green": 229,
            "blue": 210
          },
          "score": 0.025588477,
          "pixelFraction": 0.022737792,
          "percent": 2.947582659122654,
          "percentRounded": 3,
          "rgb": "244, 229, 210",
          "hex": "F4E5D2"
        },
        {
          "color": {
            "red": 213,
            "green": 193,
            "blue": 174
          },
          "score": 0.02267614,
          "pixelFraction": 0.018629948,
          "percent": 2.6121053253711657,
          "percentRounded": 3,
          "rgb": "213, 193, 174",
          "hex": "D5C1AE"
        },
        {
          "color": {
            "red": 6,
            "green": 60,
            "blue": 112
          },
          "score": 0.022346493,
          "pixelFraction": 0.0064221243,
          "percent": 2.574132694923804,
          "percentRounded": 3,
          "rgb": "6, 60, 112",
          "hex": "063C70"
        },
        {
          "color": {
            "red": 52,
            "green": 19,
            "blue": 4
          },
          "score": 0.021636037,
          "pixelFraction": 0.0096042585,
          "percent": 2.492293991288975,
          "percentRounded": 2,
          "rgb": "52, 19, 4",
          "hex": "341304"
        },
        {
          "color": {
            "red": 110,
            "green": 72,
            "blue": 49
          },
          "score": 0.020390969,
          "pixelFraction": 0.025977783,
          "percent": 2.348872370446573,
          "percentRounded": 2,
          "rgb": "110, 72, 49",
          "hex": "6E4831"
        },
        {
          "color": {
            "red": 50,
            "green": 118,
            "blue": 178
          },
          "score": 0.012227769,
          "pixelFraction": 0.0030664199,
          "percent": 1.4085386896671326,
          "percentRounded": 1,
          "rgb": "50, 118, 178",
          "hex": "3276B2"
        }
      ]
    }
  }
}
  • サウザー
{
  "labelAnnotations": [
    {
      "mid": "/m/01g6gs",
      "description": "Black And White",
      "score": 90
    },
    {
      "mid": "/m/0215n",
      "description": "Cartoon",
      "score": 85
    },
    {
      "mid": "/m/06wkj0",
      "description": "Comics Artist",
      "score": 80
    },
    {
      "mid": "/m/0919rx",
      "description": "Line Art",
      "score": 71
    },
    {
      "mid": "/m/07glzq",
      "description": "Sketch",
      "score": 70
    },
    {
      "mid": "/m/02csf",
      "description": "Drawing",
      "score": 68
    },
    {
      "mid": "/m/01mwkf",
      "description": "Monochrome",
      "score": 56
    },
    {
      "mid": "/m/01kr8f",
      "description": "Illustration",
      "score": 54
    },
    {
      "mid": "/m/01nxfc",
      "description": "Mangaka",
      "score": 52
    }
  ],
  "textAnnotations": [
    {
      "locale": "ja",
      "description": "愛などいらぬ\"\n",
      "boundingPoly": {
        "vertices": [
          {
            "x": 230,
            "y": 30
          },
          {
            "x": 247,
            "y": 30
          },
          {
            "x": 247,
            "y": 166
          },
          {
            "x": 230,
            "y": 166
          }
        ]
      }
    },
    {
      "description": "愛",
      "boundingPoly": {
        "vertices": [
          {
            "x": 231,
            "y": 30
          },
          {
            "x": 247,
            "y": 30
          },
          {
            "x": 247,
            "y": 49
          },
          {
            "x": 231,
            "y": 49
          }
        ]
      }
    },
    {
      "description": "など",
      "boundingPoly": {
        "vertices": [
          {
            "x": 232,
            "y": 51
          },
          {
            "x": 246,
            "y": 51
          },
          {
            "x": 246,
            "y": 89
          },
          {
            "x": 232,
            "y": 89
          }
        ]
      }
    },
    {
      "description": "いら",
      "boundingPoly": {
        "vertices": [
          {
            "x": 231,
            "y": 94
          },
          {
            "x": 245,
            "y": 94
          },
          {
            "x": 245,
            "y": 130
          },
          {
            "x": 231,
            "y": 130
          }
        ]
      }
    },
    {
      "description": "ぬ",
      "boundingPoly": {
        "vertices": [
          {
            "x": 230,
            "y": 134
          },
          {
            "x": 245,
            "y": 134
          },
          {
            "x": 245,
            "y": 150
          },
          {
            "x": 230,
            "y": 150
          }
        ]
      }
    },
    {
      "description": "\"",
      "boundingPoly": {
        "vertices": [
          {
            "x": 233,
            "y": 155
          },
          {
            "x": 245,
            "y": 155
          },
          {
            "x": 245,
            "y": 166
          },
          {
            "x": 233,
            "y": 166
          }
        ]
      }
    }
  ],
  "safeSearchAnnotation": {
    "adult": "VERY_UNLIKELY",
    "spoof": "VERY_UNLIKELY",
    "medical": "VERY_UNLIKELY",
    "violence": "POSSIBLE"
  },
  "imagePropertiesAnnotation": {
    "dominantColors": {
      "colors": [
        {
          "color": {
            "red": 240,
            "green": 240,
            "blue": 240
          },
          "score": 0.40391716,
          "pixelFraction": 0.53670746,
          "percent": 40.391716040391714,
          "percentRounded": 40,
          "rgb": "240, 240, 240",
          "hex": "F0F0F0"
        },
        {
          "color": {
            "red": 196,
            "green": 196,
            "blue": 196
          },
          "score": 0.2243086,
          "pixelFraction": 0.12782721,
          "percent": 22.430860022430856,
          "percentRounded": 22,
          "rgb": "196, 196, 196",
          "hex": "C4C4C4"
        },
        {
          "color": {
            "red": 157,
            "green": 157,
            "blue": 157
          },
          "score": 0.15291624,
          "pixelFraction": 0.10613645,
          "percent": 15.291624015291621,
          "percentRounded": 15,
          "rgb": "157, 157, 157",
          "hex": "9D9D9D"
        },
        {
          "color": {
            "red": 120,
            "green": 120,
            "blue": 120
          },
          "score": 0.10407639,
          "pixelFraction": 0.092232108,
          "percent": 10.407639010407637,
          "percentRounded": 10,
          "rgb": "120, 120, 120",
          "hex": "787878"
        },
        {
          "color": {
            "red": 87,
            "green": 87,
            "blue": 87
          },
          "score": 0.06353841,
          "pixelFraction": 0.0504264,
          "percent": 6.35384100635384,
          "percentRounded": 6,
          "rgb": "87, 87, 87",
          "hex": "575757"
        },
        {
          "color": {
            "red": 55,
            "green": 55,
            "blue": 55
          },
          "score": 0.031561021,
          "pixelFraction": 0.041342232,
          "percent": 3.156102103156102,
          "percentRounded": 3,
          "rgb": "55, 55, 55",
          "hex": "373737"
        },
        {
          "color": {
            "red": 18,
            "green": 18,
            "blue": 18
          },
          "score": 0.019682178,
          "pixelFraction": 0.045328144,
          "percent": 1.9682178019682177,
          "percentRounded": 2,
          "rgb": "18, 18, 18",
          "hex": "121212"
        }
      ]
    }
  }
}

Amazon Rekognition

同じくレスポンスのみ貼り付けておきます。

  • 福原愛
{
    "Labels": [
        {
            "Confidence": 99.3040542602539,
            "Name": "Human"
        },
        {
            "Confidence": 99.30632781982422,
            "Name": "People"
        },
        {
            "Confidence": 99.30633544921875,
            "Name": "Person"
        },
        {
            "Confidence": 82.9092025756836,
            "Name": "Female"
        },
        {
            "Confidence": 82.9092025756836,
            "Name": "Girl"
        },
        {
            "Confidence": 82.9092025756836,
            "Name": "Woman"
        },
        {
            "Confidence": 57.46223449707031,
            "Name": "Clinic"
        },
        {
            "Confidence": 57.46223449707031,
            "Name": "Doctor"
        },
        {
            "Confidence": 57.46223449707031,
            "Name": "Lab Coat"
        }
    ]
}
  • はるな愛
{
    "Labels": [
        {
            "Confidence": 99.24339294433594,
            "Name": "People"
        },
        {
            "Confidence": 99.24339294433594,
            "Name": "Person"
        },
        {
            "Confidence": 99.2348403930664,
            "Name": "Human"
        },
        {
            "Confidence": 55.84818649291992,
            "Name": "Female"
        },
        {
            "Confidence": 55.84818649291992,
            "Name": "Girl"
        },
        {
            "Confidence": 55.84818649291992,
            "Name": "Woman"
        },
        {
            "Confidence": 51.18348693847656,
            "Name": "Leisure Activities"
        },
        {
            "Confidence": 51.078861236572266,
            "Name": "Face"
        },
        {
            "Confidence": 51.078861236572266,
            "Name": "Selfie"
        },
        {
            "Confidence": 50.503326416015625,
            "Name": "Cream"
        },
        {
            "Confidence": 50.503326416015625,
            "Name": "Creme"
        },
        {
            "Confidence": 50.503326416015625,
            "Name": "Dessert"
        },
        {
            "Confidence": 50.503326416015625,
            "Name": "Food"
        }
    ]
}
  • サウザー
{
    "Labels": [
        {
            "Confidence": 92.06636047363281,
            "Name": "Comics"
        },
        {
            "Confidence": 92.06636047363281,
            "Name": "Manga"
        },
        {
            "Confidence": 89.36186218261719,
            "Name": "Art"
        },
        {
            "Confidence": 89.36186218261719,
            "Name": "Drawing"
        },
        {
            "Confidence": 89.09469604492188,
            "Name": "Sketch"
        }
    ]
}

Amazon Rekognitionでは

現状、Amazon Rekognitionは比較的単純に画像内に含まれる要素を返してくれるだけとなっています。
驚くべき(※)は、はるな愛さんと福原愛ちゃんの判定結果中、以下の部分の見分けは流石です。

(※)選んだ画像の特性が出ているので判定出来ているわけではない可能性が高い

  • 福原愛
{
    "Labels": [
        {
            "Confidence": 82.9092025756836,
            "Name": "Female"
        },
        {
            "Confidence": 82.9092025756836,
            "Name": "Girl"
        },
        {
            "Confidence": 82.9092025756836,
            "Name": "Woman"
        },
    ]
}
  • はるな愛
{
    "Labels": [
        {
            "Confidence": 55.84818649291992,
            "Name": "Female"
        },
        {
            "Confidence": 55.84818649291992,
            "Name": "Girl"
        },
        {
            "Confidence": 55.84818649291992,
            "Name": "Woman"
        },
    ]
}

上記のように現状は画像認識・判定用途のみとなります。

対してCLOUD VISION APIでは

  • サウザー
  "textAnnotations": [
    {
      "locale": "ja",
      "description": "愛などいらぬ\"\n",
      "boundingPoly": {
        "vertices": [
          {
            "x": 230,
            "y": 30
          },
          {
            "x": 247,
            "y": 30
          },
          {
            "x": 247,
            "y": 166
          },
          {
            "x": 230,
            "y": 166
          }
        ]
      }
    },
    {
      "description": "愛",
      "boundingPoly": {
        "vertices": [
          {
            "x": 231,
            "y": 30
          },
          {
            "x": 247,
            "y": 30
          },
          {
            "x": 247,
            "y": 49
          },
          {
            "x": 231,
            "y": 49
          }
        ]
      }
    },
    {
      "description": "など",
      "boundingPoly": {
        "vertices": [
          {
            "x": 232,
            "y": 51
          },
          {
            "x": 246,
            "y": 51
          },
          {
            "x": 246,
            "y": 89
          },
          {
            "x": 232,
            "y": 89
          }
        ]
      }
    },
    {
      "description": "いら",
      "boundingPoly": {
        "vertices": [
          {
            "x": 231,
            "y": 94
          },
          {
            "x": 245,
            "y": 94
          },
          {
            "x": 245,
            "y": 130
          },
          {
            "x": 231,
            "y": 130
          }
        ]
      }
    },
    {
      "description": "ぬ",
      "boundingPoly": {
        "vertices": [
          {
            "x": 230,
            "y": 134
          },
          {
            "x": 245,
            "y": 134
          },
          {
            "x": 245,
            "y": 150
          },
          {
            "x": 230,
            "y": 150
          }
        ]
      }
    },
    {
      "description": "\"",
      "boundingPoly": {
        "vertices": [
          {
            "x": 233,
            "y": 155
          },
          {
            "x": 245,
            "y": 155
          },
          {
            "x": 245,
            "y": 166
          },
          {
            "x": 233,
            "y": 166
          }
        ]
      }
    }
  ],

と、画像内のテキストも出現位置も含めて返してくれOCRの機能も提供されています。
また、人の顔が含まれる画像に関しては、

"landmarks": [
  {
    "type": "LEFT_EYE",
    "position": {
      "x": 1941.1484,
      "y": 797.7868,
      "z": -0.0036025709
    }
  },
  {
    "type": "RIGHT_EYE",
    "position": {
      "x": 2260.7415,
      "y": 793.29224,
      "z": -16.114992
    }
  },
  {
    "type": "LEFT_OF_LEFT_EYEBROW",
    "position": {
      "x": 1828.5488,
      "y": 729.85229,
      "z": 29.334526
    }
  },
  {
    "type": "RIGHT_OF_LEFT_EYEBROW",
    "position": {
      "x": 2017.5198,
      "y": 732.75134,
      "z": -74.88121
    }
  },
  {
    "type": "LEFT_OF_RIGHT_EYEBROW",
    "position": {
      "x": 2163.4014,
      "y": 731.84668,
      "z": -83.2394
    }
  },
  {
    "type": "RIGHT_OF_RIGHT_EYEBROW",
    "position": {
      "x": 2375.2419,
      "y": 720.80652,
      "z": 2.4601972
    }
  },
  {
    "type": "MIDPOINT_BETWEEN_EYES",
    "position": {
      "x": 2099.7351,
      "y": 795.73883,
      "z": -78.151955
    }
  },
  {
    "type": "NOSE_TIP",
    "position": {
      "x": 2100.7107,
      "y": 999.17029,
      "z": -156.33537
    }
  },
  {
    "type": "UPPER_LIP",
    "position": {
      "x": 2103.8123,
      "y": 1101.3175,
      "z": -70.267624
    }
  },
  {
    "type": "LOWER_LIP",
    "position": {
      "x": 2111.2642,
      "y": 1220.255,
      "z": -35.288116
    }
  },
  {
    "type": "MOUTH_LEFT",
    "position": {
      "x": 1942.1431,
      "y": 1116.9434,
      "z": 40.240108
    }
  },
  {
    "type": "MOUTH_RIGHT",
    "position": {
      "x": 2271.5227,
      "y": 1125.2175,
      "z": 23.959728
    }
  },
  {
    "type": "MOUTH_CENTER",
    "position": {
      "x": 2110.1687,
      "y": 1164.4414,
      "z": -40.225014
    }
  },
  {
    "type": "NOSE_BOTTOM_RIGHT",
    "position": {
      "x": 2212.9504,
      "y": 1015.2073,
      "z": -28.940802
    }
  },
  {
    "type": "NOSE_BOTTOM_LEFT",
    "position": {
      "x": 1996.1442,
      "y": 1014.1853,
      "z": -19.189373
    }
  },
  {
    "type": "NOSE_BOTTOM_CENTER",
    "position": {
      "x": 2104.563,
      "y": 1050.8895,
      "z": -76.416748
    }
  },
  {
    "type": "LEFT_EYE_TOP_BOUNDARY",
    "position": {
      "x": 1937.0562,
      "y": 785.5993,
      "z": -24.048376
    }
  },
  {
    "type": "LEFT_EYE_RIGHT_CORNER",
    "position": {
      "x": 2002.2816,
      "y": 812.31824,
      "z": -1.5893399
    }
  },
  {
    "type": "LEFT_EYE_BOTTOM_BOUNDARY",
    "position": {
      "x": 1936.24,
      "y": 820.49957,
      "z": -1.2786045
    }
  },
  {
    "type": "LEFT_EYE_LEFT_CORNER",
    "position": {
      "x": 1870.6619,
      "y": 805.92731,
      "z": 34.403152
    }
  },
  {
    "type": "LEFT_EYE_PUPIL",
    "position": {
      "x": 1932.8733,
      "y": 806.97382,
      "z": -9.1371622
    }
  },
  {
    "type": "RIGHT_EYE_TOP_BOUNDARY",
    "position": {
      "x": 2262.7659,
      "y": 779.20911,
      "z": -40.541359
    }
  },
  {
    "type": "RIGHT_EYE_RIGHT_CORNER",
    "position": {
      "x": 2334.4758,
      "y": 797.52869,
      "z": 10.991424
    }
  },
  {
    "type": "RIGHT_EYE_BOTTOM_BOUNDARY",
    "position": {
      "x": 2266.9077,
      "y": 817.40955,
      "z": -17.654884
    }
  },
  {
    "type": "RIGHT_EYE_LEFT_CORNER",
    "position": {
      "x": 2201.7039,
      "y": 809.96033,
      "z": -11.452857
    }
  },
  {
    "type": "RIGHT_EYE_PUPIL",
    "position": {
      "x": 2267.4387,
      "y": 800.78418,
      "z": -26.40888
    }
  },
  {
    "type": "LEFT_EYEBROW_UPPER_MIDPOINT",
    "position": {
      "x": 1920.0057,
      "y": 693.499,
      "z": -48.721539
    }
  },
  {
    "type": "RIGHT_EYEBROW_UPPER_MIDPOINT",
    "position": {
      "x": 2273.0793,
      "y": 686.56189,
      "z": -66.581139
    }
  },
  {
    "type": "LEFT_EAR_TRAGION",
    "position": {
      "x": 1754.2598,
      "y": 932.76819,
      "z": 426.99564
    }
  },
  {
    "type": "RIGHT_EAR_TRAGION",
    "position": {
      "x": 2500.9272,
      "y": 922.20941,
      "z": 393.62369
    }
  },
  {
    "type": "FOREHEAD_GLABELLA",
    "position": {
      "x": 2095.6697,
      "y": 728.34705,
      "z": -91.921135
    }
  },
  {
    "type": "CHIN_GNATHION",
    "position": {
      "x": 2114.0188,
      "y": 1356.9807,
      "z": 21.088684
    }
  },
  {
    "type": "CHIN_LEFT_GONION",
    "position": {
      "x": 1788.7964,
      "y": 1151.7496,
      "z": 311.80249
    }
  },
  {
    "type": "CHIN_RIGHT_GONION",
    "position": {
      "x": 2457.8264,
      "y": 1138.7776,
      "z": 277.99213
    }
  }
],

と、顔の各パーツの詳細な位置も含めて返してくれます。
これは感情推定も行ってくれる過程での副産物と考えられますが面白いですね。

まとめ

マシンビジョン系のAPIでは精度の違いもありますが、
出来ること出来ないこと、向いていること向いていないことがありますので、
比較記事などを参考に当たりをつけて触ってみるのが良いのではないでしょうか。

ホワイトプラスではエンジニアを募集しています

ホワイトプラスでは、技術的な壁なんてオレがぶっ壊してやるぜ!という技術で事業に貢献したいエンジニアを募集しております。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1