כיצד להשתמש ב- Google Vision API

לאחרונה סקרתי כיצד מחשבים יכולים לראות, לשמוע, להרגיש, להריח ולטעום. אחת הדרכים בהן הקוד שלך יכול "לראות" היא באמצעות ממשק ה- API של Google Vision. ממשק ה- API של Google Vision מחבר את הקוד שלך ליכולות זיהוי התמונות של Google. אתה יכול לחשוב על חיפוש תמונות של גוגל כמעין ממשק API / REST ל- images.google.com, אבל זה עושה הרבה יותר מאשר להראות לך תמונות דומות.

Google Vision יכול לזהות אם אתה חתול או בן אדם, כמו גם את חלקי הפנים שלך. הוא מנסה לזהות אם אתה מתייצב או עושה משהו שלא יהיה בסדר עבור חיפוש בטוח של גוגל - או לא. זה אפילו מנסה לזהות אם אתה שמח או עצוב.

הגדרת ממשק ה- API של Google Vision

כדי להשתמש ב- Google Vision API, עליך להירשם לחשבון Google Compute Engine. GCE חופשי לנסות אך תצטרך כרטיס אשראי כדי להירשם. משם אתה בוחר פרויקט (אך הפרויקט הראשון שלי נבחר אם זה עתה נרשמת). ואז הוסף לעצמך מפתח API מהתפריט השמאלי.

הנה, אני משתמש במפתח API פשוט שבו אוכל להשתמש בכלי שורת הפקודה Curl (אם אתה מעדיף, אתה יכול להשתמש בכלי אחר המסוגל לקרוא לממשקי API של REST):

שמור את המפתח שהוא מייצר בקובץ טקסט או במאגר איפשהו (אני מתייחס אליו YOUR_KEYכרגע) והפעל את ה- API בפרויקט שלך (עבור לכתובת URL זו ולחץ על הפעל את ה- API):

בחר את הפרויקט שלך מהמסך הבא:

עכשיו אתה מוכן לצאת לדרך! תקע טקסט זה בקובץ בשם google_vision.json:

{"בקשות": [{"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}, {" סוג ":" 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}, {" type ":" WEB_DETECTION "," maxResults ": 50}]}}{"type": "WEB_DETECTION", "maxResults": 50}]}]}{"type": "WEB_DETECTION", "maxResults": 50}]}}}

בקשת JSON זו מספרת ל- Google Vision API איזו תמונה לנתח ואילו מתכונות הזיהוי שלה להפעיל. פשוט עשיתי את רובם עד 50 תוצאות.

השתמש כעת בתלתל:

תלתל -v -s -H "סוג תוכן: יישום / 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 1.2 חיבור באמצעות TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 * אישור שרת: * .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> קבל: * / *> סוג תוכן: יישום / json> אורך תוכן: 2252 > מצפה: 100-המשך> * הסתיים ההמתנה ל -100 המשך} [נתוני 2252 בתים] * אנחנו נטענו לחלוטין ובסדר <HTTP / 1.1 200 בסדר <סוג תוכן: יישום / json; ערכת = UTF-8 <משתנה: X- מקור <משתנה: רפרר <תאריך: יום שלישי, 24 באפריל 2018 18:26:10 GMT <שרת: ESF <בקרת מטמון: פרטי <הגנה X-XSS: 1; mode = block <X-Frame-Options: SAMEORIGIN <אפשרויות תוכן מסוג X: 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" <טווח קבלה: אין <משתנה: מקור, קבל קידוד <העברת קידוד: מגושם <{[נתוני 905 בתים] * חיבור מספר 0 למארח vision.googleapis. com נשאר שלם

אתה אמור לראות משהו כזה:

אם תסתכל בתוצאות, תראה את זה:

{"תגובות": [{"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", "תיאור": "יונק", "score ": 0.92701304," אקטואליה ": 0.92701304}, {" mid ":" / m / 07k6w8 "," תיאור ":" חתולים קטנים עד בינוניים "," ציון ": 0.92587274," אקטואליה ": 0.92587274}, {" mid ":" / m / 0307l ","תיאור ":" חתול כמו יונק "," ציון ": 0.9215815," אקטואליה ": 0.9215815}, {" mid ":" / m / 09686 "," תיאור ":" חוליות "," ציון ": 0.90370363," אקטואליה ": 0.90370363}, {" mid ":" / m / 01l7qd "," תיאור ":" שפם "," ניקוד ": 0.86890864," אקטואליה ": 0.86890864 ...תיאור ":" שפם "," ניקוד ": 0.86890864," אקטואליה ": 0.86890864 ...תיאור ":" שפם "," ניקוד ": 0.86890864," אקטואליה ": 0.86890864 ...

גוגל יודעת שסיפקת לו תמונת חתול. זה אפילו מצא את הזיפים!

עכשיו אנסה יונק גדול יותר. החלף את כתובת האתר בבקשה בתמונת הפרופיל שלי בטוויטר והפעל אותה שוב. יש לה תמונה שאני מועבר על ידי פיל בטיול שלי 2014 בתאילנד.

התוצאות יכללו מיקומי תווי הפנים שלי.

... "ציוני דרך": [{"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}}, ...

גוגל לא מצליחה לשפוט רגש כמו תכונות פנים:

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

בהחלט הופתעתי, כי לא ציפיתי לנשיקה (רק כיוונתי לסלפי עם הפיל). התמונה עשויה להראות קצת שמחה בשילוב עם "יאק" מכיוון שנשיקות חוטם פילים מבולגנות ומעט רטובות.

Google Vision הבחין גם בכמה דברים אחרים לגבי התמונה ואותי:

{"mid": "/ m / 0jyfg", "description": "משקפיים", "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," אקטואליה ": 0.60378826}, {" mid ":" / m / 01j3sz "," תיאור ":" צחוק ","ניקוד": 0.51390797, "אקטואליה": 0.51390797}] ...

גוגל זיהתה את חוטם הפיל! זה גם שם לב שאני מחייך ושאני צוחק. שימו לב שהציונים הנמוכים מצביעים על ביטחון נמוך יותר, אך טוב ש- Google Vision API הבחין בכך.

... "safeSearchAnnotation": {"adult": "VERY_UNLIKELY", "spoof": "אפשרי", "medical": "VERY_UNLIKELY", "אלימות": "UNLIKELY", "racy": "UNLIKELY"} ...

גוגל לא מאמינה שזו יותר מנשיקה אפלטונית ומבינה שאני לא נפגע מהפיל.

מלבד זאת, בתגובה תמצאו דברים כמו התאמת תמונות ותמונות דומות. תוכלו למצוא גם שיוך נושאים. לדוגמא, צייצתי פעם אחת על מאמר "Xennials", ועכשיו אני משויך אליו!

כיצד שימושי API של Google Vision?

בין אם אתה עובד בתחום האבטחה או הקמעונאות, היכולת להבין מה משהו מתוך תמונה יכולה להיות מועילה מיסודה. בין אם אתה מנסה להבין איזה גזע חתולים יש לך או מי הלקוח הזה ובין אם גוגל חושבת שכותב טור משפיע בנושא, ממשק ה- API של Google Vision יכול לעזור. שים לב שהתנאים של גוגל מאפשרים להשתמש ב- API זה רק ביישומי מחשוב אישיים. בין אם אתה מעריץ נתונים ביישום חיפוש או בודק אם תוכן שנשלח על ידי משתמשים הוא נבון או לא, ייתכן ש- Google Vision הוא בדיוק מה שאתה צריך.

אמנם השתמשתי בגרסת ה- API המשתמשת ב- URIs ציבוריים, אך תוכל גם לפרסם מיקומי קובץ בינאריים גולמיים או Google Cloud Storage באמצעות תמורות שונות.

הערת המחבר: תודה לעמיתי ב- Lucidworks, Roy Kiesler , שמחקריו תרמו למאמר זה.