درک تصویر

مدل‌های Gemini از ابتدا به گونه‌ای ساخته شده‌اند که چندوجهی باشند و طیف گسترده‌ای از وظایف پردازش تصویر و بینایی کامپیوتر، از جمله (اما نه محدود به) شرح تصویر، طبقه‌بندی و پاسخ به سؤالات بصری را بدون نیاز به آموزش مدل‌های تخصصی یادگیری ماشین، امکان‌پذیر سازند.

ارسال تصاویر به جمینی

شما می‌توانید با استفاده از دو روش، تصاویر را به عنوان ورودی به Gemini ارائه دهید:

ارسال داده‌های تصویر درون‌خطی

شما می‌توانید داده‌های تصویر را به صورت درون‌خطی در درخواست generateContent ارسال کنید. می‌توانید داده‌های تصویر را به صورت رشته‌های کدگذاری شده Base64 یا با خواندن مستقیم فایل‌های محلی (بسته به زبان) ارائه دهید.

مثال زیر نحوه خواندن یک تصویر از یک فایل محلی و ارسال آن به generateContent API برای پردازش را نشان می‌دهد.

پایتون

  from google import genai
  from google.genai import types

  with open('path/to/small-sample.jpg', 'rb') as f:
      image_bytes = f.read()

  client = genai.Client()
  response = client.models.generate_content(
    model='gemini-2.5-flash',
    contents=[
      types.Part.from_bytes(
        data=image_bytes,
        mime_type='image/jpeg',
      ),
      'Caption this image.'
    ]
  )

  print(response.text)

جاوا اسکریپت

import { GoogleGenAI } from "@google/genai";
import * as fs from "node:fs";

const ai = new GoogleGenAI({});
const base64ImageFile = fs.readFileSync("path/to/small-sample.jpg", {
  encoding: "base64",
});

const contents = [
  {
    inlineData: {
      mimeType: "image/jpeg",
      data: base64ImageFile,
    },
  },
  { text: "Caption this image." },
];

const response = await ai.models.generateContent({
  model: "gemini-2.5-flash",
  contents: contents,
});
console.log(response.text);

برو

bytes, _ := os.ReadFile("path/to/small-sample.jpg")

parts := []*genai.Part{
  genai.NewPartFromBytes(bytes, "image/jpeg"),
  genai.NewPartFromText("Caption this image."),
}

contents := []*genai.Content{
  genai.NewContentFromParts(parts, genai.RoleUser),
}

result, _ := client.Models.GenerateContent(
  ctx,
  "gemini-2.5-flash",
  contents,
  nil,
)

fmt.Println(result.Text())

استراحت

IMG_PATH="/path/to/your/image1.jpg"

if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
B64FLAGS="--input"
else
B64FLAGS="-w0"
fi

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
    "contents": [{
    "parts":[
        {
            "inline_data": {
            "mime_type":"image/jpeg",
            "data": "'"$(base64 $B64FLAGS $IMG_PATH)"'"
            }
        },
        {"text": "Caption this image."},
    ]
    }]
}' 2> /dev/null

همچنین می‌توانید یک تصویر را از یک URL دریافت کنید، آن را به بایت تبدیل کنید و همانطور که در مثال‌های زیر نشان داده شده است، آن را به generateContent ارسال کنید.

پایتون

from google import genai
from google.genai import types

import requests

image_path = "https://goo.gle/instrument-img"
image_bytes = requests.get(image_path).content
image = types.Part.from_bytes(
  data=image_bytes, mime_type="image/jpeg"
)

client = genai.Client()

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=["What is this image?", image],
)

print(response.text)

جاوا اسکریپت

import { GoogleGenAI } from "@google/genai";

async function main() {
  const ai = new GoogleGenAI({});

  const imageUrl = "https://goo.gle/instrument-img";

  const response = await fetch(imageUrl);
  const imageArrayBuffer = await response.arrayBuffer();
  const base64ImageData = Buffer.from(imageArrayBuffer).toString('base64');

  const result = await ai.models.generateContent({
    model: "gemini-2.5-flash",
    contents: [
    {
      inlineData: {
        mimeType: 'image/jpeg',
        data: base64ImageData,
      },
    },
    { text: "Caption this image." }
  ],
  });
  console.log(result.text);
}

main();

برو

package main

import (
  "context"
  "fmt"
  "os"
  "io"
  "net/http"
  "google.golang.org/genai"
)

func main() {
  ctx := context.Background()
  client, err := genai.NewClient(ctx, nil)
  if err != nil {
      log.Fatal(err)
  }

  // Download the image.
  imageResp, _ := http.Get("https://goo.gle/instrument-img")

  imageBytes, _ := io.ReadAll(imageResp.Body)

  parts := []*genai.Part{
    genai.NewPartFromBytes(imageBytes, "image/jpeg"),
    genai.NewPartFromText("Caption this image."),
  }

  contents := []*genai.Content{
    genai.NewContentFromParts(parts, genai.RoleUser),
  }

  result, _ := client.Models.GenerateContent(
    ctx,
    "gemini-2.5-flash",
    contents,
    nil,
  )

  fmt.Println(result.Text())
}

استراحت

IMG_URL="https://goo.gle/instrument-img"

MIME_TYPE=$(curl -sIL "$IMG_URL" | grep -i '^content-type:' | awk -F ': ' '{print $2}' | sed 's/\r$//' | head -n 1)
if [[ -z "$MIME_TYPE" || ! "$MIME_TYPE" == image/* ]]; then
  MIME_TYPE="image/jpeg"
fi

# Check for macOS
if [[ "$(uname)" == "Darwin" ]]; then
  IMAGE_B64=$(curl -sL "$IMG_URL" | base64 -b 0)
elif [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
  IMAGE_B64=$(curl -sL "$IMG_URL" | base64)
else
  IMAGE_B64=$(curl -sL "$IMG_URL" | base64 -w0)
fi

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
    -H "x-goog-api-key: $GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
            {
              "inline_data": {
                "mime_type":"'"$MIME_TYPE"'",
                "data": "'"$IMAGE_B64"'"
              }
            },
            {"text": "Caption this image."}
        ]
      }]
    }' 2> /dev/null

آپلود تصاویر با استفاده از File API

برای فایل‌های بزرگ یا برای اینکه بتوانید از یک فایل تصویری به طور مکرر استفاده کنید، از API فایل‌ها استفاده کنید. کد زیر یک فایل تصویری را آپلود می‌کند و سپس از فایل در فراخوانی برای generateContent استفاده می‌کند. برای اطلاعات و مثال‌های بیشتر به راهنمای API فایل‌ها مراجعه کنید.

پایتون

from google import genai

client = genai.Client()

my_file = client.files.upload(file="path/to/sample.jpg")

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=[my_file, "Caption this image."],
)

print(response.text)

جاوا اسکریپت

import {
  GoogleGenAI,
  createUserContent,
  createPartFromUri,
} from "@google/genai";

const ai = new GoogleGenAI({});

async function main() {
  const myfile = await ai.files.upload({
    file: "path/to/sample.jpg",
    config: { mimeType: "image/jpeg" },
  });

  const response = await ai.models.generateContent({
    model: "gemini-2.5-flash",
    contents: createUserContent([
      createPartFromUri(myfile.uri, myfile.mimeType),
      "Caption this image.",
    ]),
  });
  console.log(response.text);
}

await main();

برو

package main

import (
  "context"
  "fmt"
  "os"
  "google.golang.org/genai"
)

func main() {
  ctx := context.Background()
  client, err := genai.NewClient(ctx, nil)
  if err != nil {
      log.Fatal(err)
  }

  uploadedFile, _ := client.Files.UploadFromPath(ctx, "path/to/sample.jpg", nil)

  parts := []*genai.Part{
      genai.NewPartFromText("Caption this image."),
      genai.NewPartFromURI(uploadedFile.URI, uploadedFile.MIMEType),
  }

  contents := []*genai.Content{
      genai.NewContentFromParts(parts, genai.RoleUser),
  }

  result, _ := client.Models.GenerateContent(
      ctx,
      "gemini-2.5-flash",
      contents,
      nil,
  )

  fmt.Println(result.Text())
}

استراحت

IMAGE_PATH="path/to/sample.jpg"
MIME_TYPE=$(file -b --mime-type "${IMAGE_PATH}")
NUM_BYTES=$(wc -c < "${IMAGE_PATH}")
DISPLAY_NAME=IMAGE

tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "https://generativelanguage.googleapis.com/upload/v1beta/files" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${IMAGE_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq -r ".file.uri" file_info.json)
echo file_uri=$file_uri

# Now generate content using that file
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
    -H "x-goog-api-key: $GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"file_data":{"mime_type": "'"${MIME_TYPE}"'", "file_uri": "'"${file_uri}"'"}},
          {"text": "Caption this image."}]
        }]
      }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

ارسال پیام با چندین تصویر

شما می‌توانید با قرار دادن چندین شیء image Part در آرایه contents ، چندین تصویر را در یک prompt ارائه دهید. این اشیاء می‌توانند ترکیبی از داده‌های درون‌خطی (فایل‌های محلی یا URLها) و ارجاعات File API باشند.

پایتون

from google import genai
from google.genai import types

client = genai.Client()

# Upload the first image
image1_path = "path/to/image1.jpg"
uploaded_file = client.files.upload(file=image1_path)

# Prepare the second image as inline data
image2_path = "path/to/image2.png"
with open(image2_path, 'rb') as f:
    img2_bytes = f.read()

# Create the prompt with text and multiple images
response = client.models.generate_content(

    model="gemini-2.5-flash",
    contents=[
        "What is different between these two images?",
        uploaded_file,  # Use the uploaded file reference
        types.Part.from_bytes(
            data=img2_bytes,
            mime_type='image/png'
        )
    ]
)

print(response.text)

جاوا اسکریپت

import {
  GoogleGenAI,
  createUserContent,
  createPartFromUri,
} from "@google/genai";
import * as fs from "node:fs";

const ai = new GoogleGenAI({});

async function main() {
  // Upload the first image
  const image1_path = "path/to/image1.jpg";
  const uploadedFile = await ai.files.upload({
    file: image1_path,
    config: { mimeType: "image/jpeg" },
  });

  // Prepare the second image as inline data
  const image2_path = "path/to/image2.png";
  const base64Image2File = fs.readFileSync(image2_path, {
    encoding: "base64",
  });

  // Create the prompt with text and multiple images

  const response = await ai.models.generateContent({

    model: "gemini-2.5-flash",
    contents: createUserContent([
      "What is different between these two images?",
      createPartFromUri(uploadedFile.uri, uploadedFile.mimeType),
      {
        inlineData: {
          mimeType: "image/png",
          data: base64Image2File,
        },
      },
    ]),
  });
  console.log(response.text);
}

await main();

برو

// Upload the first image
image1Path := "path/to/image1.jpg"
uploadedFile, _ := client.Files.UploadFromPath(ctx, image1Path, nil)

// Prepare the second image as inline data
image2Path := "path/to/image2.jpeg"
imgBytes, _ := os.ReadFile(image2Path)

parts := []*genai.Part{
  genai.NewPartFromText("What is different between these two images?"),
  genai.NewPartFromBytes(imgBytes, "image/jpeg"),
  genai.NewPartFromURI(uploadedFile.URI, uploadedFile.MIMEType),
}

contents := []*genai.Content{
  genai.NewContentFromParts(parts, genai.RoleUser),
}

result, _ := client.Models.GenerateContent(
  ctx,
  "gemini-2.5-flash",
  contents,
  nil,
)

fmt.Println(result.Text())

استراحت

# Upload the first image
IMAGE1_PATH="path/to/image1.jpg"
MIME1_TYPE=$(file -b --mime-type "${IMAGE1_PATH}")
NUM1_BYTES=$(wc -c < "${IMAGE1_PATH}")
DISPLAY_NAME1=IMAGE1

tmp_header_file1=upload-header1.tmp

curl "https://generativelanguage.googleapis.com/upload/v1beta/files" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -D upload-header1.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM1_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME1_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME1}'}}" 2> /dev/null

upload_url1=$(grep -i "x-goog-upload-url: " "${tmp_header_file1}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file1}"

curl "${upload_url1}" \
  -H "Content-Length: ${NUM1_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${IMAGE1_PATH}" 2> /dev/null > file_info1.json

file1_uri=$(jq ".file.uri" file_info1.json)
echo file1_uri=$file1_uri

# Prepare the second image (inline)
IMAGE2_PATH="path/to/image2.png"
MIME2_TYPE=$(file -b --mime-type "${IMAGE2_PATH}")

if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
  B64FLAGS="--input"
else
  B64FLAGS="-w0"
fi
IMAGE2_BASE64=$(base64 $B64FLAGS $IMAGE2_PATH)

# Now generate content using both images
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent" \
    -H "x-goog-api-key: $GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "What is different between these two images?"},
          {"file_data":{"mime_type": "'"${MIME1_TYPE}"'", "file_uri": '$file1_uri'}},
          {
            "inline_data": {
              "mime_type":"'"${MIME2_TYPE}"'",
              "data": "'"$IMAGE2_BASE64"'"
            }
          }
        ]
      }]
    }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

تشخیص شیء

از Gemini 2.0 به بعد، مدل‌ها بیشتر آموزش داده می‌شوند تا اشیاء موجود در یک تصویر را تشخیص داده و مختصات کادر مرزی آنها را بدست آورند. این مختصات، نسبت به ابعاد تصویر، به مقیاس [0، 1000] تغییر می‌کنند. شما باید این مختصات را بر اساس اندازه تصویر اصلی خود، کوچک کنید.

پایتون

from google import genai
from google.genai import types
from PIL import Image
import json

client = genai.Client()
prompt = "Detect the all of the prominent items in the image. The box_2d should be [ymin, xmin, ymax, xmax] normalized to 0-1000."

image = Image.open("/path/to/image.png")

config = types.GenerateContentConfig(
  response_mime_type="application/json"
  )

response = client.models.generate_content(model="gemini-2.5-flash",
                                          contents=[image, prompt],
                                          config=config
                                          )

width, height = image.size
bounding_boxes = json.loads(response.text)

converted_bounding_boxes = []
for bounding_box in bounding_boxes:
    abs_y1 = int(bounding_box["box_2d"][0]/1000 * height)
    abs_x1 = int(bounding_box["box_2d"][1]/1000 * width)
    abs_y2 = int(bounding_box["box_2d"][2]/1000 * height)
    abs_x2 = int(bounding_box["box_2d"][3]/1000 * width)
    converted_bounding_boxes.append([abs_x1, abs_y1, abs_x2, abs_y2])

print("Image size: ", width, height)
print("Bounding boxes:", converted_bounding_boxes)

برای مثال‌های بیشتر، دفترچه‌های زیر را در کتاب آشپزی جمینی بررسی کنید:

تقسیم‌بندی

با شروع از Gemini 2.5، مدل‌ها نه تنها اقلام را تشخیص می‌دهند، بلکه آنها را قطعه‌بندی کرده و ماسک‌های کانتور آنها را ارائه می‌دهند.

این مدل یک لیست JSON را پیش‌بینی می‌کند که در آن هر آیتم نشان‌دهنده یک ماسک تقسیم‌بندی است. هر آیتم دارای یک کادر محصورکننده (" box_2d ") با فرمت [y0, x0, y1, x1] با مختصات نرمال‌شده بین 0 تا 1000، یک برچسب (" label ") که شیء را مشخص می‌کند و در نهایت ماسک تقسیم‌بندی درون کادر محصورکننده، به صورت png کدگذاری‌شده با base64 است که یک نقشه احتمال با مقادیر بین 0 تا 255 است. این ماسک باید تغییر اندازه دهد تا با ابعاد کادر محصورکننده مطابقت داشته باشد، سپس در آستانه اطمینان شما (127 برای نقطه میانی) باینری شود.

پایتون

from google import genai
from google.genai import types
from PIL import Image, ImageDraw
import io
import base64
import json
import numpy as np
import os

client = genai.Client()

def parse_json(json_output: str):
  # Parsing out the markdown fencing
  lines = json_output.splitlines()
  for i, line in enumerate(lines):
    if line == "```json":
      json_output = "\n".join(lines[i+1:])  # Remove everything before "```json"
      output = json_output.split("```")[0]  # Remove everything after the closing "```"
      break  # Exit the loop once "```json" is found
  return json_output

def extract_segmentation_masks(image_path: str, output_dir: str = "segmentation_outputs"):
  # Load and resize image
  im = Image.open(image_path)
  im.thumbnail([1024, 1024], Image.Resampling.LANCZOS)

  prompt = """
  Give the segmentation masks for the wooden and glass items.
  Output a JSON list of segmentation masks where each entry contains the 2D
  bounding box in the key "box_2d", the segmentation mask in key "mask", and
  the text label in the key "label". Use descriptive labels.
  """

  config = types.GenerateContentConfig(
    thinking_config=types.ThinkingConfig(thinking_budget=0) # set thinking_budget to 0 for better results in object detection
  )

  response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents=[prompt, im], # Pillow images can be directly passed as inputs (which will be converted by the SDK)
    config=config
  )

  # Parse JSON response
  items = json.loads(parse_json(response.text))

  # Create output directory
  os.makedirs(output_dir, exist_ok=True)

  # Process each mask
  for i, item in enumerate(items):
      # Get bounding box coordinates
      box = item["box_2d"]
      y0 = int(box[0] / 1000 * im.size[1])
      x0 = int(box[1] / 1000 * im.size[0])
      y1 = int(box[2] / 1000 * im.size[1])
      x1 = int(box[3] / 1000 * im.size[0])

      # Skip invalid boxes
      if y0 >= y1 or x0 >= x1:
          continue

      # Process mask
      png_str = item["mask"]
      if not png_str.startswith("data:image/png;base64,"):
          continue

      # Remove prefix
      png_str = png_str.removeprefix("data:image/png;base64,")
      mask_data = base64.b64decode(png_str)
      mask = Image.open(io.BytesIO(mask_data))

      # Resize mask to match bounding box
      mask = mask.resize((x1 - x0, y1 - y0), Image.Resampling.BILINEAR)

      # Convert mask to numpy array for processing
      mask_array = np.array(mask)

      # Create overlay for this mask
      overlay = Image.new('RGBA', im.size, (0, 0, 0, 0))
      overlay_draw = ImageDraw.Draw(overlay)

      # Create overlay for the mask
      color = (255, 255, 255, 200)
      for y in range(y0, y1):
          for x in range(x0, x1):
              if mask_array[y - y0, x - x0] > 128:  # Threshold for mask
                  overlay_draw.point((x, y), fill=color)

      # Save individual mask and its overlay
      mask_filename = f"{item['label']}_{i}_mask.png"
      overlay_filename = f"{item['label']}_{i}_overlay.png"

      mask.save(os.path.join(output_dir, mask_filename))

      # Create and save overlay
      composite = Image.alpha_composite(im.convert('RGBA'), overlay)
      composite.save(os.path.join(output_dir, overlay_filename))
      print(f"Saved mask and overlay for {item['label']} to {output_dir}")

# Example usage
if __name__ == "__main__":
  extract_segmentation_masks("path/to/image.png")

برای مثالی دقیق‌تر، مثال تقسیم‌بندی را در راهنمای کتاب آشپزی بررسی کنید.

میزی با کاپ‌کیک‌ها، که اشیاء چوبی و شیشه‌ای روی آن برجسته شده‌اند
یک نمونه خروجی تقسیم‌بندی با اشیاء و ماسک‌های تقسیم‌بندی

فرمت‌های تصویر پشتیبانی‌شده

Gemini از انواع MIME فرمت تصویر زیر پشتیبانی می‌کند:

  • PNG - image/png
  • JPEG - image/jpeg
  • WBP - image/webp
  • HEIC - image/heic
  • HEIF - image/heif

قابلیت‌ها

تمام نسخه‌های مدل Gemini چندوجهی هستند و می‌توانند در طیف گسترده‌ای از وظایف پردازش تصویر و بینایی کامپیوتر از جمله (اما نه محدود به) شرح تصویر، پرسش و پاسخ بصری، طبقه‌بندی تصویر، تشخیص شیء و قطعه‌بندی مورد استفاده قرار گیرند.

جمینی می‌تواند نیاز به استفاده از مدل‌های تخصصی یادگیری ماشین را بسته به کیفیت و عملکرد مورد نیاز شما کاهش دهد.

برخی از نسخه‌های جدیدتر مدل، علاوه بر قابلیت‌های عمومی، به طور خاص آموزش دیده‌اند تا دقت وظایف تخصصی را بهبود بخشند:

محدودیت‌ها و اطلاعات فنی کلیدی

محدودیت فایل

نرم‌افزارهای Gemini 2.5 Pro/Flash، 2.0 Flash، 1.5 Pro و 1.5 Flash حداکثر از ۳۶۰۰ فایل تصویری در هر درخواست پشتیبانی می‌کنند.

محاسبه توکن

  • Gemini 1.5 Flash و Gemini 1.5 Pro : اگر هر دو ابعاد <= 384 پیکسل داشته باشند، 258 توکن. تصاویر بزرگتر به صورت کاشی‌کاری شده (حداقل کاشی 256 پیکسل، حداکثر 768 پیکسل، تغییر اندازه به 768x768) هستند که هر کاشی 258 توکن هزینه دارد.
  • Gemini 2.0 Flash و Gemini 2.5 Flash/Pro : اگر هر دو ابعاد <= 384 پیکسل داشته باشند، 258 توکن. تصاویر بزرگتر به صورت کاشی‌های 768x768 پیکسلی چیده می‌شوند که هر کدام 258 توکن هزینه دارند.

یک فرمول تقریبی برای محاسبه تعداد کاشی‌ها به شرح زیر است:

  • اندازه واحد محصول را که تقریباً برابر است با: کف (حداقل (عرض، ارتفاع) / 1.5) محاسبه کنید.
  • هر بُعد را بر اندازه واحد محصول تقسیم کنید و در هم ضرب کنید تا تعداد کاشی‌ها به دست آید.

برای مثال، برای تصویری با ابعاد ۹۶۰x۵۴۰، اندازه واحد برش ۳۶۰ خواهد بود. هر بعد را بر ۳۶۰ تقسیم کنید و تعداد کاشی‌ها ۳ * ۲ = ۶ می‌شود.

وضوح رسانه

Gemini 3 با پارامتر media_resolution کنترل دقیقی بر پردازش بینایی چندوجهی ارائه می‌دهد. پارامتر media_resolution حداکثر تعداد توکن‌های اختصاص داده شده به ازای هر تصویر یا فریم ویدیویی ورودی را تعیین می‌کند. رزولوشن‌های بالاتر توانایی مدل را در خواندن متن‌های ریز یا شناسایی جزئیات کوچک بهبود می‌بخشند، اما استفاده از توکن و تأخیر را افزایش می‌دهند.

برای جزئیات بیشتر در مورد این پارامتر و نحوه تأثیر آن بر محاسبات توکن، به راهنمای تفکیک‌پذیری رسانه مراجعه کنید.

نکات و بهترین شیوه‌ها

  • بررسی کنید که تصاویر به درستی چرخانده شده باشند.
  • از تصاویر واضح و بدون تاری استفاده کنید.
  • هنگام استفاده از یک تصویر واحد به همراه متن، متن اعلان را بعد از بخش تصویر در آرایه contents قرار دهید.

قدم بعدی چیست؟

این راهنما به شما نشان می‌دهد که چگونه فایل‌های تصویری را آپلود کنید و از ورودی‌های تصویری، خروجی‌های متنی تولید کنید. برای کسب اطلاعات بیشتر، به منابع زیر مراجعه کنید:

  • API فایل‌ها : درباره آپلود و مدیریت فایل‌ها برای استفاده با Gemini بیشتر بدانید.
  • دستورالعمل‌های سیستم : دستورالعمل‌های سیستم به شما امکان می‌دهند رفتار مدل را بر اساس نیازها و موارد استفاده خاص خود هدایت کنید.
  • استراتژی‌های اعلان فایل : رابط برنامه‌نویسی نرم‌افزار Gemini از اعلان با داده‌های متنی، تصویری، صوتی و ویدیویی پشتیبانی می‌کند که به عنوان اعلان چندوجهی نیز شناخته می‌شود.
  • راهنمایی ایمنی : گاهی اوقات مدل‌های هوش مصنوعی مولد، خروجی‌های غیرمنتظره‌ای مانند خروجی‌های نادرست، جانبدارانه یا توهین‌آمیز تولید می‌کنند. پردازش پس از پردازش و ارزیابی انسانی برای محدود کردن خطر آسیب ناشی از چنین خروجی‌هایی ضروری است.