ইমেজ বোঝার

মিথুন মডেলগুলি চিত্রগুলিকে প্রক্রিয়া করতে পারে, অনেক ফ্রন্টিয়ার ডেভেলপার ব্যবহারের ক্ষেত্রে সক্ষম করে যার জন্য ঐতিহাসিকভাবে ডোমেন নির্দিষ্ট মডেলের প্রয়োজন হবে৷ মিথুনের কিছু দৃষ্টিশক্তির মধ্যে রয়েছে:

  • ছবি সম্পর্কে ক্যাপশন এবং প্রশ্নের উত্তর দিন
  • 2 মিলিয়ন পর্যন্ত টোকেন সহ পিডিএফের উপর প্রতিলিপি করুন এবং যুক্তি দিন
  • একটি চিত্রে বস্তু সনাক্ত করুন এবং তাদের জন্য বাউন্ডিং বক্স স্থানাঙ্ক ফেরত দিন
  • একটি চিত্রের মধ্যে অবজেক্টকে ভাগ করুন

জেমিনি মাটি থেকে মাল্টিমোডাল হওয়ার জন্য তৈরি করা হয়েছিল এবং আমরা যা সম্ভব তার সীমানায় ধাক্কা চালিয়ে যাচ্ছি। এই নির্দেশিকাটি দেখায় কিভাবে চিত্র ইনপুটগুলির উপর ভিত্তি করে পাঠ্য প্রতিক্রিয়া তৈরি করতে এবং সাধারণ চিত্র বোঝার কাজগুলি করতে Gemini API ব্যবহার করতে হয়।

আপনি শুরু করার আগে

Gemini API কল করার আগে, নিশ্চিত করুন যে আপনি আপনার পছন্দের SDK ইনস্টল করেছেন, এবং একটি Gemini API কী কনফিগার করা এবং ব্যবহারের জন্য প্রস্তুত।

ইমেজ ইনপুট

আপনি নিম্নলিখিত উপায়ে মিথুনকে ইনপুট হিসাবে ছবিগুলি প্রদান করতে পারেন:

  • generateContent করার অনুরোধ করার আগে File API ব্যবহার করে একটি ইমেজ ফাইল আপলোড করুন । 20MB এর চেয়ে বড় ফাইলের জন্য এই পদ্ধতিটি ব্যবহার করুন বা যখন আপনি একাধিক অনুরোধ জুড়ে ফাইলটি পুনরায় ব্যবহার করতে চান।
  • generateContent অনুরোধের সাথে ইনলাইন ইমেজ ডেটা পাস করুন । ছোট ফাইলের জন্য এই পদ্ধতিটি ব্যবহার করুন (<20MB মোট অনুরোধের আকার) বা সরাসরি URL থেকে আনা ছবি।

একটি ইমেজ ফাইল আপলোড করুন

আপনি একটি ইমেজ ফাইল আপলোড করতে Files API ব্যবহার করতে পারেন। সর্বদা ফাইল এপিআই ব্যবহার করুন যখন মোট অনুরোধের আকার (ফাইল, পাঠ্য প্রম্পট, সিস্টেম নির্দেশাবলী, ইত্যাদি সহ) 20 MB এর থেকে বড় হয়, বা আপনি যদি একাধিক প্রম্পটে একই চিত্র ব্যবহার করতে চান।

নিম্নলিখিত কোডটি একটি ইমেজ ফাইল আপলোড করে এবং তারপরে generateContent করতে কলে ফাইলটি ব্যবহার করে।

পাইথন

from google import genai

client = genai.Client(api_key="GOOGLE_API_KEY")

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

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

print(response.text)

জাভাস্ক্রিপ্ট

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

const ai = new GoogleGenAI({ apiKey: "GOOGLE_API_KEY" });

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.0-flash",
    contents: createUserContent([
      createPartFromUri(myfile.uri, myfile.mimeType),
      "Caption this image.",
    ]),
  });
  console.log(response.text);
}

await main();

যাও

file, err := client.UploadFileFromPath(ctx, "path/to/sample.jpg", nil)
if err != nil {
    log.Fatal(err)
}
defer client.DeleteFile(ctx, file.Name)

model := client.GenerativeModel("gemini-2.0-flash")
resp, err := model.GenerateContent(ctx,
    genai.FileData{URI: file.URI},
    genai.Text("Caption this image."))
if err != nil {
    log.Fatal(err)
}

printResponse(resp)

বিশ্রাম

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?key=${GOOGLE_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 "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 ".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.0-flash:generateContent?key=$GOOGLE_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

মিডিয়া ফাইলগুলির সাথে কাজ করার বিষয়ে আরও জানতে, ফাইল API দেখুন।

ইমেজ ডেটা ইনলাইনে পাস করুন

একটি ইমেজ ফাইল আপলোড করার পরিবর্তে, আপনি generateContent অনুরোধে ইনলাইন ইমেজ ডেটা পাস করতে পারেন। এটি ছোট ছবিগুলির জন্য উপযুক্ত (মোট অনুরোধের আকার 20MB থেকে কম) বা সরাসরি URL থেকে আনা ছবিগুলির জন্য।

আপনি Base64 এনকোডেড স্ট্রিং হিসাবে বা সরাসরি স্থানীয় ফাইল পড়ে (SDK এর উপর নির্ভর করে) ইমেজ ডেটা প্রদান করতে পারেন।

স্থানীয় ছবি ফাইল:

পাইথন

  from google.genai import types

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

  response = client.models.generate_content(
    model='gemini-2.0-flash',
    contents=[
      types.Part.from_bytes(
        data=img_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({ apiKey: "GOOGLE_API_KEY" });
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.0-flash",
  contents: contents,
});
console.log(response.text);

যাও

model := client.GenerativeModel("gemini-2.0-flash")

bytes, err := os.ReadFile("path/to/small-sample.jpg")
if err != nil {
  log.Fatal(err)
}

prompt := []genai.Part{
  genai.Blob{MIMEType: "image/jpeg", Data: bytes},
  genai.Text("Caption this image."),
}

resp, err := model.GenerateContent(ctx, prompt...)
if err != nil {
  log.Fatal(err)
}

for _, c := range resp.Candidates {
  if c.Content != nil {
    fmt.Println(*c.Content)
  }
}

বিশ্রাম

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.0-flash:generateContent?key=$GOOGLE_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 থেকে ছবি:

পাইথন

from google import genai
from google.genai import types

import requests

image_path = "https://goo.gle/instrument-img"
image = requests.get(image_path)

client = genai.Client(api_key="GOOGLE_API_KEY")
response = client.models.generate_content(
    model="gemini-2.0-flash-exp",
    contents=["What is this image?",
              types.Part.from_bytes(data=image.content, mime_type="image/jpeg")])

print(response.text)

জাভাস্ক্রিপ্ট

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

async function main() {
  const ai = new GoogleGenAI({ apiKey: process.env.GOOGLE_API_KEY });

  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.0-flash",
    contents: [
    {
      inlineData: {
        mimeType: 'image/jpeg',
        data: base64ImageData,
      },
    },
    { text: "Caption this image." }
  ],
  });
  console.log(result.text);
}

main();

যাও

func main() {
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("GOOGLE_API_KEY")))
if err != nil {
  log.Fatal(err)
}
defer client.Close()

model := client.GenerativeModel("gemini-2.0-flash")

// Download the image.
imageResp, err := http.Get("https://goo.gle/instrument-img")
if err != nil {
  panic(err)
}
defer imageResp.Body.Close()

imageBytes, err := io.ReadAll(imageResp.Body)
if err != nil {
  panic(err)
}

// Create the request.
req := []genai.Part{
  genai.ImageData("jpeg", imageBytes),

  genai.Text("Caption this image."),
}

// Generate content.
resp, err := model.GenerateContent(ctx, req...)
if err != nil {
  panic(err)
}

// Handle the response of generated text.
for _, c := range resp.Candidates {
  if c.Content != nil {
    fmt.Println(*c.Content)
  }
}

}

বিশ্রাম

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

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

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GOOGLE_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
            {
              "inline_data": {
                "mime_type":"'"$MIME_TYPE"'",
                "data": "'$(curl -sL "$IMG_URL" | base64 $B64FLAGS)'"
              }
            },
            {"text": "Caption this image."}
        ]
      }]
    }' 2> /dev/null

ইনলাইন ইমেজ ডেটা সম্পর্কে কিছু জিনিস মনে রাখবেন:

  • সর্বাধিক মোট অনুরোধের আকার হল 20 এমবি, যার মধ্যে পাঠ্য প্রম্পট, সিস্টেম নির্দেশাবলী এবং ইনলাইনে দেওয়া সমস্ত ফাইল অন্তর্ভুক্ত রয়েছে। যদি আপনার ফাইলের আকার মোট অনুরোধের আকার 20 MB ছাড়িয়ে যায়, তাহলে অনুরোধে ব্যবহারের জন্য একটি চিত্র ফাইল আপলোড করতে Files API ব্যবহার করুন।
  • আপনি যদি একাধিকবার একটি চিত্রের নমুনা ব্যবহার করেন তবে ফাইল API ব্যবহার করে একটি চিত্র ফাইল আপলোড করা আরও কার্যকর।

একাধিক ইমেজ সঙ্গে প্রম্পট

আপনি contents অ্যারেতে একাধিক চিত্র Part অবজেক্ট অন্তর্ভুক্ত করে একটি একক প্রম্পটে একাধিক ছবি প্রদান করতে পারেন। এগুলি ইনলাইন ডেটা (স্থানীয় ফাইল বা URL) এবং ফাইল API রেফারেন্সের মিশ্রণ হতে পারে।

পাইথন

from google import genai
from google.genai import types

client = genai.Client(api_key="GOOGLE_API_KEY")

# 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.0-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({ apiKey: "GOOGLE_API_KEY" });

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.0-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, err := client.UploadFileFromPath(ctx, image1Path, nil)
if err != nil {
    log.Fatal(err)
}
defer client.DeleteFile(ctx, uploadedFile.Name)

// Prepare the second image as inline data
image2Path := "path/to/image2.png"
img2Bytes, err := os.ReadFile(image2Path)
if err != nil {
  log.Fatal(err)
}

// Create the prompt with text and multiple images
model := client.GenerativeModel("gemini-2.0-flash")
prompt := []genai.Part{
  genai.Text("What is different between these two images?"),
  genai.FileData{URI: uploadedFile.URI},
  genai.Blob{MIMEType: "image/png", Data: img2Bytes},
}

resp, err := model.GenerateContent(ctx, prompt...)
if err != nil {
  log.Fatal(err)
}

printResponse(resp)

বিশ্রাম

# 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?key=${GOOGLE_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.0-flash:generateContent?key=$GOOGLE_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

একটি বস্তুর জন্য একটি আবদ্ধ বাক্স পান

মিথুন মডেলগুলিকে একটি চিত্রের বস্তুগুলি সনাক্ত করতে এবং তাদের বাউন্ডিং বক্স স্থানাঙ্ক প্রদান করতে প্রশিক্ষিত করা হয়। স্থানাঙ্কগুলি চিত্রের মাত্রার সাপেক্ষে ফেরত দেওয়া হয়, স্কেল করা হয় [0, 1000]। আপনার আসল চিত্রের আকারের উপর ভিত্তি করে আপনাকে এই স্থানাঙ্কগুলিকে ডিস্কেল করতে হবে।

পাইথন

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

জাভাস্ক্রিপ্ট

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

যাও

prompt := []genai.Part{
    genai.FileData{URI: sampleImage.URI},
    genai.Text("Detect the all of the prominent items in the image. The box_2d should be [ymin, xmin, ymax, xmax] normalized to 0-1000."),
}

বিশ্রাম

PROMPT="Detect the all of the prominent items in the image. The box_2d should be [ymin, xmin, ymax, xmax] normalized to 0-1000."

আপনি ছবি এবং ভিডিওর মধ্যে বস্তু সনাক্তকরণ এবং স্থানীয়করণের জন্য বাউন্ডিং বক্স ব্যবহার করতে পারেন। বাউন্ডিং বাক্সের সাহায্যে অবজেক্টগুলিকে সঠিকভাবে শনাক্ত এবং বর্ণনা করে, আপনি বিস্তৃত অ্যাপ্লিকেশন আনলক করতে পারেন এবং আপনার প্রকল্পগুলির বুদ্ধিমত্তা বাড়াতে পারেন।

মূল সুবিধা

  • সহজ: আপনার কম্পিউটার দৃষ্টি দক্ষতা নির্বিশেষে, সহজে আপনার অ্যাপ্লিকেশনে বস্তু সনাক্তকরণ ক্ষমতা একীভূত করুন।
  • কাস্টমাইজযোগ্য: কাস্টম নির্দেশাবলীর উপর ভিত্তি করে বাউন্ডিং বাক্স তৈরি করুন (যেমন "আমি এই ছবিতে সমস্ত সবুজ বস্তুর বাউন্ডিং বাক্স দেখতে চাই"), একটি কাস্টম মডেলকে প্রশিক্ষণ না দিয়ে।

প্রযুক্তিগত বিবরণ

  • ইনপুট: আপনার প্রম্পট এবং সংশ্লিষ্ট ছবি বা ভিডিও ফ্রেম।
  • আউটপুট: [y_min, x_min, y_max, x_max] বিন্যাসে বাউন্ডিং বক্স। উপরের বাম কোণে মূল। x এবং y অক্ষ যথাক্রমে অনুভূমিকভাবে এবং উল্লম্বভাবে যায়। স্থানাঙ্ক মান প্রতিটি ছবির জন্য 0-1000 স্বাভাবিক করা হয়।
  • ভিজ্যুয়ালাইজেশন: এআই স্টুডিও ব্যবহারকারীরা UI এর মধ্যে প্লট করা বাউন্ডিং বক্স দেখতে পাবেন।

পাইথন বিকাশকারীদের জন্য, 2D স্থানিক বোঝার নোটবুক বা পরীক্ষামূলক 3D পয়েন্টিং নোটবুক ব্যবহার করে দেখুন।

স্থানাঙ্ক স্বাভাবিক করুন

মডেলটি [y_min, x_min, y_max, x_max] বিন্যাসে বাউন্ডিং বক্স স্থানাঙ্ক প্রদান করে। এই স্বাভাবিক স্থানাঙ্কগুলিকে আপনার আসল চিত্রের পিক্সেল স্থানাঙ্কে রূপান্তর করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. প্রতিটি আউটপুট স্থানাঙ্ক 1000 দ্বারা ভাগ করুন।
  2. মূল চিত্রের প্রস্থ দ্বারা x-স্থানাঙ্কগুলিকে গুণ করুন।
  3. আসল চিত্রের উচ্চতা দ্বারা y-স্থানাঙ্কগুলিকে গুণ করুন।

বাউন্ডিং বক্স কোঅর্ডিনেট তৈরি করার এবং চিত্রগুলিতে তাদের ভিজ্যুয়ালাইজ করার আরও বিস্তারিত উদাহরণ অন্বেষণ করতে, অবজেক্ট ডিটেকশন কুকবুক উদাহরণটি পর্যালোচনা করুন।

চিত্র বিভাজন

জেমিনি 2.5 মডেলগুলি দিয়ে শুরু করে, জেমিনি মডেলগুলিকে শুধুমাত্র আইটেমগুলি সনাক্ত করতে নয় বরং সেগুলিকে ভাগ করতে এবং তাদের রূপের একটি মুখোশ প্রদান করার জন্য প্রশিক্ষিত করা হয়৷

মডেলটি একটি JSON তালিকার ভবিষ্যদ্বাণী করে, যেখানে প্রতিটি আইটেম একটি বিভাজন মাস্ক উপস্থাপন করে। প্রতিটি আইটেমের একটি বাউন্ডিং বক্স (" box_2d ") ফরম্যাটে [y0, x0, y1, x1] 0 এবং 1000-এর মধ্যে স্বাভাবিক স্থানাঙ্ক সহ, একটি লেবেল (" label ") যা বস্তুটিকে সনাক্ত করে, এবং অবশেষে বাউন্ডিং বাক্সের ভিতরে বিভাজন মাস্ক, যেমন বেস64 মানচিত্র এবং 50 এর মধ্যে মানচিত্র এনকোড করা হয়। বাউন্ডিং বক্সের মাত্রার সাথে মেলে মাস্কের আকার পরিবর্তন করতে হবে, তারপর আপনার আত্মবিশ্বাসের থ্রেশহোল্ডে বাইনারি করা হবে (মিডপয়েন্টের জন্য 127)।

পাইথন

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.
"""

জাভাস্ক্রিপ্ট

const 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.
`;    

যাও

prompt := []genai.Part{
    genai.FileData{URI: sampleImage.URI},
    genai.Text(`
      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.
    `),
}

বিশ্রাম

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.
'''
কাপকেক সহ একটি টেবিল, কাঠের এবং কাচের জিনিসগুলি হাইলাইট করা
ছবিতে পাওয়া কাঠের এবং কাচের বস্তুর মুখোশ

আরও বিস্তারিত উদাহরণের জন্য কুকবুক গাইডে বিভাজন উদাহরণটি দেখুন।

সমর্থিত ইমেজ ফরম্যাট

মিথুন নিম্নলিখিত চিত্র বিন্যাস MIME প্রকারগুলি সমর্থন করে:

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

ছবি সম্পর্কে প্রযুক্তিগত বিবরণ

  • ফাইলের সীমা : জেমিনি 2.5 প্রো, 2.0 ফ্ল্যাশ, 1.5 প্রো এবং 1.5 ফ্ল্যাশ প্রতি অনুরোধে সর্বাধিক 3,600টি ছবি ফাইল সমর্থন করে।
  • টোকেন গণনা :
    • জেমিনি 1.5 ফ্ল্যাশ এবং জেমিনি 1.5 প্রো : 258 টোকেন যদি উভয় মাত্রা <= 384 পিক্সেল হয়। বড় ছবিগুলো টাইল করা হয়েছে (মিনিট টাইল 256px, সর্বোচ্চ 768px, 768x768 এ রিসাইজ করা হয়েছে), প্রতিটি টাইলের দাম 258 টোকেন।
    • জেমিনি 2.0 ফ্ল্যাশ : 258 টোকেন যদি উভয় মাত্রা <= 384 পিক্সেল হয়। বড় ছবিগুলিকে 768x768 পিক্সেল টাইলে টাইল করা হয়েছে, প্রতিটির দাম 258 টোকেন।
  • সর্বোত্তম অনুশীলন :
    • নিশ্চিত করুন যে ছবিগুলি সঠিকভাবে ঘোরানো হয়েছে।
    • পরিষ্কার, অ-অস্পষ্ট ছবি ব্যবহার করুন।
    • পাঠ্য সহ একটি একক চিত্র ব্যবহার করার সময়, contents অ্যারেতে চিত্র অংশের পরে পাঠ্য প্রম্পট রাখুন।

এরপর কি

এই নির্দেশিকাটি দেখায় কিভাবে ইমেজ ফাইল আপলোড করতে হয় এবং ইমেজ ইনপুট থেকে টেক্সট আউটপুট তৈরি করতে হয়। আরও জানতে, নিম্নলিখিত সংস্থানগুলি দেখুন:

  • সিস্টেম নির্দেশাবলী : সিস্টেম নির্দেশাবলী আপনাকে আপনার নির্দিষ্ট প্রয়োজন এবং ব্যবহারের ক্ষেত্রের উপর ভিত্তি করে মডেলের আচরণ পরিচালনা করতে দেয়।
  • ভিডিও বোঝা : ভিডিও ইনপুট দিয়ে কিভাবে কাজ করতে হয় তা শিখুন।
  • ফাইল এপিআই : মিথুনের সাথে ব্যবহারের জন্য ফাইল আপলোড এবং পরিচালনা সম্পর্কে আরও জানুন।
  • ফাইল প্রম্পটিং কৌশল : জেমিনি এপিআই টেক্সট, ইমেজ, অডিও এবং ভিডিও ডেটা সহ প্রম্পটিং সমর্থন করে, যা মাল্টিমডাল প্রম্পটিং নামেও পরিচিত।
  • নিরাপত্তা নির্দেশিকা : কখনও কখনও জেনারেটিভ এআই মডেলগুলি অপ্রত্যাশিত আউটপুট তৈরি করে, যেমন আউটপুটগুলি ভুল, পক্ষপাতদুষ্ট বা আপত্তিকর। এই ধরনের আউটপুট থেকে ক্ষতির ঝুঁকি সীমিত করার জন্য পোস্ট-প্রসেসিং এবং মানব মূল্যায়ন অপরিহার্য।