この記事はWHITEPLUS Advent Calendar 2016 最終日になります。
こんにちは、ホワイトプラスではもっぱらCTO兼CFO(Chief Factory Officer)を担当している @exmeat です。
前回の記事を書いてすぐにAmazon Rekognitionが公開された事にタイムリーさを感じました。
先に書いておくと半分以上ネタ記事です。
今回も前回同様マシンビジョン系のAPIにクリスマスというところも相まって「愛」について聞き、
現状のAPI比較をしてみたいと思います。
###やってみた
「愛」と聞いてパッと思いついた、下記についての画像
(肖像権・著作権に引っかかる可能性があるので面白さは0ですが画像引用は避けています)
を、Vision APIとAmazon 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では精度の違いもありますが、
出来ること出来ないこと、向いていること向いていないことがありますので、
比較記事などを参考に当たりをつけて触ってみるのが良いのではないでしょうか。
#ホワイトプラスではエンジニアを募集しています
ホワイトプラスでは、技術的な壁なんてオレがぶっ壊してやるぜ!という技術で事業に貢献したいエンジニアを募集しております。