ניתוח תמונות

במדריך הזה נסביר איך לקבל תובנות מנתוני תמונות לא מובְנים באמצעות שילוב של BigQuery ML עם Gemini. במדריך יוצרים מודל מרוחק שמבוסס על gemini-2.5-flash, ומשתמשים בפונקציה AI.GENERATE_TEXT כדי לחלץ באופן אוטומטי מטא-נתונים, כמו שמות ושנות הפצה, מאוסף של כרזות סרטים.

מטרות

  • יוצרים טבלת אובייקטים ב-BigQuery על נתוני תמונות בקטגוריה של Cloud Storage.
  • יוצרים מודל מרוחק של BigQuery ML שמטרגט את המודל gemini-2.5-flash של Gemini Enterprise Agent Platform.
  • משתמשים במודל המרוחק עם הפונקציה AI.GENERATE_TEXT כדי לזהות את הסרטים שמשויכים לקבוצה של כרזות סרטים.

עלויות

המדריך הזה משתמש ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:

כדי להעריך את העלויות בהתאם לשימוש הצפוי, אתם יכולים להשתמש במחשבון העלויות.

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

לפני שמתחילים

  1. בדף לבחירת הפרויקט במסוף Google Cloud , בוחרים פרויקט ב- Google Cloud או יוצרים אותו.

    התפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • בחירת פרויקט: כדי לבחור פרויקט לא נדרש תפקיד IAM ספציפי – אתם יכולים לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד "יצירת פרויקטים" (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים?

    כניסה לדף לבחירת הפרויקט

  2. מוודאים שהחיוב מופעל בפרויקט ב- Google Cloud .

  3. מפעילים את ממשקי ה-API הבאים, אם הם עדיין לא מופעלים: BigQuery,‏ BigQuery Connection ו-Agent Platform API.

    התפקידים שנדרשים כדי להפעיל ממשקי API

    כדי להפעיל ממשקי API, צריך את ההרשאה serviceusage.services.enable. אם אתם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים?

    הפעלת ממשקי ה-API

התפקידים הנדרשים

כדי להריץ את המדריך הזה, אתם צריכים את התפקידים הבאים בניהול הזהויות והרשאות הגישה (IAM):

  • יצירה ושימוש במערכי נתונים, בחיבורים ובמודלים של BigQuery: אדמין ב-BigQuery‏ (roles/bigquery.admin).
  • נותנים הרשאות לחשבון השירות של החיבור: אדמין IAM של פרויקט (roles/resourcemanager.projectIamAdmin).

התפקידים המוגדרים מראש האלה מכילים את ההרשאות שנדרשות כדי לבצע את המשימות שמפורטות במאמר הזה. כדי לראות את ההרשאות הנדרשות, מרחיבים את הקטע Required Permissions:

ההרשאות הנדרשות

  • יוצרים מערך נתונים: bigquery.datasets.create
  • יצירה, הקצאה ושימוש בחיבור: bigquery.connections.*
  • מגדירים את חיבור ברירת המחדל: bigquery.config.*
  • מגדירים את ההרשאות של חשבון השירות: resourcemanager.projects.getIamPolicy וגם resourcemanager.projects.setIamPolicy
  • יוצרים טבלת אובייקטים: bigquery.tables.create וגם bigquery.tables.update
  • יוצרים מודל ומריצים הסקה:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata

יכול להיות שתוכלו לקבל את ההרשאות האלה גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

הכנת הסביבה

כדי להריץ הסקת מסקנות ב-BigQuery ML על טבלאות אובייקטים באמצעות gemini-2.5-flash, צריך להקצות לפרויקט מקום שמור ב-BigQuery. אם כבר יש הקצאה של הזמנה לפרויקט, אתם יכולים לדלג על השלב הזה.

יצירת בקשה לשמירת מקום

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. לוחצים על Create reservation.

  4. בדף Create reservation, מבצעים את הפעולות הבאות:

    1. בשדה Reservation name, מזינים bqml-tutorial-reservation.
    2. בשדה Location, בוחרים באפשרות us (multiple regions in United States).
    3. משאירים את שאר הגדרות ברירת המחדל כמו שהן ולוחצים על שמירה.

הקצאת ההזמנה

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. בטבלה Slot reservations, מוצאים את ההזמנה שרוצים להקצות לפרויקט.

  4. לוחצים על הצגת הפעולות > יצירת מטלה.

  5. בקטע Create an assignment (יצירת מטלה), לוחצים על Browse (עיון) ובוחרים את הפרויקט.

  6. בקטע סוג העבודה, בוחרים באפשרות QUERY. כך תבטיחו ששאילתות ה-SQL שלכם ישתמשו ב-slots של ההזמנה הזו.

  7. לוחצים על יצירה.

יצירת קבוצת נתונים

כדי ליצור מערך נתונים ב-BigQuery, בוחרים אחת מהאפשרויות הבאות:

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בחלונית הימנית, לוחצים על Explorer:

    כפתור מודגש לחלונית Explorer.

    אם החלונית הימנית לא מוצגת, לוחצים על Expand left pane כדי לפתוח אותה.

  3. ב-Explorer, מרחיבים את הפרויקט ולוחצים על Datasets.

  4. בדף Datasets, לוחצים על Create dataset.

  5. בחלונית Create dataset:

    • בשדה Dataset ID, מזינים bqml_tutorial.

    • בקטע Data location (מיקום הנתונים), בוחרים באפשרות US (ארה"ב).

    משאירים את שאר הגדרות ברירת המחדל כמו שהן.

  6. לוחצים על Create dataset.

BQ

כדי ליצור קבוצת נתונים חדשה, משתמשים בפקודה bq mk --dataset.

  1. יוצרים מערך נתונים בשם bqml_tutorial ומגדירים את מיקום הנתונים ל-US:

    bq mk --dataset \
      --location=US \
      --description "BigQuery ML tutorial dataset." \
      bqml_tutorial
  2. מוודאים שמערך הנתונים נוצר:

    bq ls

API

מפעילים את השיטה datasets.insert עם משאב של מערך נתונים מוגדר:

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

יצירת טבלת האובייקטים

יוצרים טבלת אובייקטים על התמונות של פוסטרים של סרטים בקטגוריה הציבורית של Cloud Storage. טבלת האובייקטים מאפשרת לנתח את התמונות בלי להעביר אותן מ-Cloud Storage.

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בעורך השאילתות, מריצים את השאילתה הבאה כדי ליצור את טבלת האובייקטים:

    CREATE OR REPLACE EXTERNAL TABLE `bqml_tutorial.movie_posters`
      WITH CONNECTION DEFAULT
      OPTIONS (
        object_metadata = 'SIMPLE',
        uris =
          ['gs://cloud-samples-data/vertex-ai/dataset-management/datasets/classic-movie-posters/*']);

יצירת המודל המרוחק

יוצרים מודל מרוחק שמייצג מודל של Agent Platform ב-gemini-2.5-flash:

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בעורך השאילתות, מריצים את השאילתה הבאה כדי ליצור את המודל המרוחק:

    CREATE OR REPLACE MODEL `bqml_tutorial.gemini-vision`
      REMOTE WITH CONNECTION DEFAULT
      OPTIONS (ENDPOINT = 'gemini-2.5-flash');

    יכול להיות שהשאילתה תימשך כמה דקות, ואחריה המודל gemini-vision יופיע במערך הנתונים bqml_tutorial בחלונית Explorer. מכיוון שהשאילתה משתמשת בהצהרה CREATE MODEL כדי ליצור מודל, אין תוצאות לשאילתה.

ניתוח של כרזות הסרטים

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

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בעורך השאילתות, מריצים את השאילתה הבאה כדי לנתח את התמונות של כרזות הסרטים:

    CREATE OR REPLACE TABLE
      `bqml_tutorial.movie_posters_results` AS (
      SELECT
        uri,
       result
      FROM
        AI.GENERATE_TEXT( MODEL `bqml_tutorial.gemini-vision`,
          TABLE `bqml_tutorial.movie_posters`,
          STRUCT( 0.2 AS temperature,
            'For the movie represented by this poster, what is the movie title and year of release? Answer in JSON format with two keys: title, year. title should be string, year should be integer.' AS PROMPT)));
        
  3. בעורך השאילתות, מריצים את ההצהרה הבאה כדי להציג את נתוני הטבלה:

    SELECT * FROM `bqml_tutorial.movie_posters_results`;

    הפלט אמור להיראות כך:

    +--------------------------------------------+----------------------------------+
    | uri                                        | result                           |
    +--------------------------------------------+----------------------------------+
    | gs://cloud-samples-data/vertex-ai/dataset- | json                          |
    | management/datasets/classic-movie-         | {                                |
    | posters/little_annie_rooney.jpg            |  "title": "Little Annie Rooney", |
    |                                            |  "year": 1912                    |
    |                                            | }                                |
    |                                            |                              |
    +--------------------------------------------+----------------------------------+
    | gs://cloud-samples-data/vertex-ai/dataset- | json                          |
    | management/datasets/classic-movie-         | {                                |
    | posters/mighty_like_a_mouse.jpg            |  "title": "Mighty Like a Moose", |
    |                                            |  "year": 1926                    |
    |                                            | }                                |
    |                                            |                              |
    +--------------------------------------------+----------------------------------+
    | gs://cloud-samples-data/vertex-ai/dataset- | json                          |
    | management/datasets/classic-movie-         | {                                |
    | posters/brown_of_harvard.jpeg              |  "title": "Brown of Harvard",    |
    |                                            |  "year": 1926                    |
    |                                            | }                                |
    |                                            |                              |
    +--------------------------------------------+----------------------------------+
    

עיצוב הפלט מהמודל

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

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בעורך השאילתות, מריצים את השאילתה הבאה כדי לשנות את הפורמט של הנתונים:

    CREATE OR REPLACE TABLE
      `bqml_tutorial.movie_posters_results_formatted` AS (
      SELECT
        uri,
        JSON_QUERY(RTRIM(LTRIM(results.result, " ```json"), "```"), "$.title") AS title,
        JSON_QUERY(RTRIM(LTRIM(results.result, " ```json"), "```"), "$.year") AS year
      FROM
        `bqml_tutorial.movie_posters_results` results );
  3. בעורך השאילתות, מריצים את ההצהרה הבאה כדי להציג את נתוני הטבלה:

    SELECT * FROM `bqml_tutorial.movie_posters_results_formatted`;

    הפלט אמור להיראות כך:

    +--------------------------------------------+----------------------------+------+
    | uri                                        | title                      | year |
    +--------------------------------------------+----------------------------+------+
    | gs://cloud-samples-data/vertex-ai/dataset- | "Barque sortant du port"   | 1895 |
    | management/datasets/classic-movie-         |                            |      |
    | posters/barque_sortant_du_port.jpeg        |                            |      |
    +--------------------------------------------+----------------------------+------+
    | gs://cloud-samples-data/vertex-ai/dataset- | "The Great Train Robbery"  | 1903 |
    | management/datasets/classic-movie-         |                            |      |
    | posters/the_great_train_robbery.jpg        |                            |      |
    +--------------------------------------------+----------------------------+------+
    | gs://cloud-samples-data/vertex-ai/dataset- | "Little Annie Rooney"      | 1912 |
    | management/datasets/classic-movie-         |                            |      |
    | posters/little_annie_rooney.jpg            |                            |      |
    +--------------------------------------------+----------------------------+------+
    

מחיקת הפרויקט

  1. במסוף Google Cloud , נכנסים לדף Manage resources.

    כניסה לדף Manage resources

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.

מחיקת משאבים ספציפיים

אם אתם רוצים להשתמש בפרויקט שוב, אתם צריכים למחוק את המשאבים שיצרתם בשביל המדריך.

מחיקת מערך הנתונים

המסוף

מוחקים את כל מערך הנתונים bqml_tutorial ואת כל התוכן שלו באמצעות הפקודה הבאה ב-SQL:

DROP SCHEMA IF EXISTS `bqml_tutorial` CASCADE;

BQ

מוחקים את כל מערך הנתונים bqml_tutorial ואת כל התוכן שלו:

bq rm -r bqml_tutorial

מחיקת ההזמנה

המסוף

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

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בתפריט הניווט, לוחצים על Workload management.

  3. בטבלה Slot reservations, מאתרים את bqml-tutorial-reservation.

  4. לוחצים על הצגת פעולות > מחיקה.

BQ

אם יצרתם הקצאה ב-BigQuery בשם bqml-tutorial-reservation במיקום us, אתם יכולים להשתמש בפקודה הבאה כדי להסיר אותה:

bq rm --reservation --location=us bqml-tutorial-reservation

מחיקת החיבור

המסוף

  1. נכנסים לדף BigQuery במסוף Google Cloud .

    כניסה ל-BigQuery

  2. בחלונית הימנית, לוחצים על Explorer, מאתרים את הפרויקט ולוחצים על Connections.

  3. מוצאים את החיבור בטבלה.

  4. לוחצים על הצגת פעולות > מחיקה.

BQ

מחיקת החיבור:

bq rm --connection --location=us CONNECTION_ID

מחליפים את CONNECTION_ID במזהה האמיתי של החיבור.

המאמרים הבאים