Xem trên ai.google.dev | Dùng thử sổ tay Colab | Xem sổ tay trên GitHub |
Gemini API có thể tiến hành suy luận dựa trên hình ảnh và video được chuyển tới API Gemini. Khi vượt qua một hình ảnh, một loạt hình ảnh hoặc một video, Gemini có thể:
- Mô tả hoặc trả lời các câu hỏi về nội dung
- Tóm tắt nội dung
- Suy luận nội dung
Hướng dẫn này trình bày một số cách có thể áp dụng để nhắc Gemini API bằng đầu vào hình ảnh và video. Tất cả dữ liệu đầu ra đều chỉ có văn bản.
Trước khi bắt đầu: Thiết lập dự án và khoá API của bạn
Trước khi gọi Gemini API, bạn cần thiết lập dự án và định cấu hình khoá API của bạn.
Câu lệnh bằng hình ảnh
Trong hướng dẫn này, bạn sẽ tải hình ảnh lên bằng cách sử dụng File API hoặc dưới dạng dữ liệu cùng dòng và tạo nội dung dựa trên những hình ảnh đó.
Chi tiết kỹ thuật (hình ảnh)
Gemini 1.5 Pro và 1.5 Flash hỗ trợ tối đa 3.600 tệp hình ảnh.
Hình ảnh phải thuộc một trong các loại MIME dữ liệu hình ảnh sau đây:
- PNG –
image/png
- JPEG –
image/jpeg
- WEBP –
image/webp
- HEIC –
image/heic
- HEIF –
image/heif
Mỗi hình ảnh tương đương với 258 mã thông báo.
Mặc dù không có giới hạn cụ thể nào về số lượng pixel trong một hình ảnh ngoài cửa sổ ngữ cảnh của mô hình, các hình ảnh lớn hơn sẽ được thu nhỏ ở mức tối đa độ phân giải 3072x3072 trong khi vẫn giữ nguyên tỷ lệ khung hình gốc, trong khi các hình ảnh nhỏ hơn được chia tỷ lệ lên đến 768x768 pixel. Không giảm chi phí cho các hình ảnh ở kích thước thấp hơn, ngoài băng thông hoặc cải thiện hiệu suất cho hình ảnh có độ phân giải cao hơn.
Để có kết quả tốt nhất:
- Xoay hình ảnh theo đúng hướng trước khi tải lên.
- Tránh sử dụng hình ảnh bị mờ.
- Nếu bạn sử dụng một hình ảnh, hãy đặt câu lệnh dạng văn bản sau hình ảnh đó.
Tải tệp hình ảnh lên bằng API tệp
Sử dụng API tệp để tải hình ảnh có kích thước bất kỳ lên. (Luôn sử dụng File API khi tổ hợp tệp và hướng dẫn hệ thống mà bạn định gửi là lớn hơn 20 MB).
Bắt đầu bằng cách tải xuống bản phác thảo của ba lô phản lực.
!curl -o jetpack.jpg https://storage.googleapis.com/generativeai-downloads/images/jetpack.jpg
Tải hình ảnh lên bằng cách sử dụng
media.upload
và in URI (được dùng làm tham chiếu trong các lệnh gọi Gemini API).
# Upload the file and print a confirmation.
sample_file = genai.upload_file(path="jetpack.jpg",
display_name="Jetpack drawing")
print(f"Uploaded file '{sample_file.display_name}' as: {sample_file.uri}")
Xác minh tệp hình ảnh đã tải lên và lấy siêu dữ liệu
Bạn có thể xác minh rằng API đã lưu trữ thành công tệp đã tải lên và nhận
siêu dữ liệu bằng cách gọi files.get
thông qua SDK. Chỉ có name
(và uri
) là duy nhất. Sử dụng
display_name
để xác định tệp chỉ khi bạn tự quản lý tính duy nhất.
file = genai.get_file(name=sample_file.name)
print(f"Retrieved file '{file.display_name}' as: {sample_file.uri}")
Tuỳ thuộc vào trường hợp sử dụng, bạn có thể lưu trữ URI trong các cấu trúc, chẳng hạn như
dict
hoặc một cơ sở dữ liệu.
Câu lệnh bằng hình ảnh và văn bản đã tải lên
Sau khi tải tệp lên, bạn có thể tạo GenerateContent
yêu cầu tham chiếu đến
URI của API tệp. Chọn mô hình tạo sinh rồi cung cấp cho mô hình đó một câu lệnh dạng văn bản
và hình ảnh đã tải lên.
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Prompt the model with text and the previously uploaded image.
response = model.generate_content([sample_file, "Describe how this product might be manufactured."])
Markdown(">" + response.text)
Tải lên một hoặc nhiều tệp hình ảnh được lưu trữ cục bộ
Ngoài ra, bạn có thể tải tệp của riêng mình lên. Bạn có thể tải xuống và sử dụng bản vẽ của vùng nước có cá vàng và một lính cứu hoả cùng một chú mèo.
Khi sự kết hợp giữa tệp và hướng dẫn hệ thống mà bạn định gửi có kích thước lớn hơn 20MB, hãy sử dụng File API để tải lên những tệp đó, vì hiển thị trước đó. Thay vào đó, bạn có thể gọi các tệp nhỏ hơn từ API Gemini:
import PIL.Image
sample_file_2 = PIL.Image.open('piranha.jpg')
sample_file_3 = PIL.Image.open('firefighter.jpg')
Lưu ý rằng các lệnh gọi dữ liệu nội tuyến này không bao gồm nhiều tính năng có sẵn thông qua File API, chẳng hạn như lấy siêu dữ liệu tệp, danh sách hoặc xoá tệp.
Câu lệnh có nhiều hình ảnh
Bạn có thể cung cấp cho Gemini API bất cứ cách kết hợp hình ảnh và văn bản nào phù hợp với cửa sổ ngữ cảnh của mô hình. Ví dụ này chỉ cung cấp một văn bản ngắn câu lệnh và 3 hình ảnh đã tải lên trước đó.
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
prompt = "Write an advertising jingle showing how the product in the first image could solve the problems shown in the second two images."
response = model.generate_content([prompt, sample_file, sample_file_2, sample_file_3])
Markdown(">" + response.text)
Nhận hộp giới hạn cho một đối tượng
Bạn có thể yêu cầu mô hình đó về toạ độ của các hộp giới hạn cho các đối tượng
trong hình ảnh. Để phát hiện vật thể, mô hình Gemini đã được huấn luyện để cung cấp
các toạ độ này dưới dạng chiều rộng hoặc chiều cao tương đối trong phạm vi [0,1]
, được điều chỉnh theo tỷ lệ
1000 và chuyển đổi thành số nguyên. Trên thực tế, toạ độ đã cho là dành cho một
Phiên bản 1000x1000 của hình ảnh gốc và cần được chuyển đổi lại về
kích thước của hình ảnh gốc.
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
prompt = "Return a bounding box for the piranha. \n [ymin, xmin, ymax, xmax]"
response = model.generate_content([piranha, prompt])
print(response.text)
Để chuyển đổi các toạ độ này sang kích thước của hình ảnh gốc:
- Chia mỗi toạ độ đầu ra cho 1000.
- Nhân toạ độ x với chiều rộng của ảnh ban đầu.
- Nhân toạ độ y với chiều cao của ảnh ban đầu.
Đặt câu lệnh bằng video
Trong hướng dẫn này, bạn sẽ tải video lên bằng cách sử dụng File API và tạo dựa trên những hình ảnh đó.
Chi tiết kỹ thuật (video)
Gemini 1.5 Pro và Flash hỗ trợ tối đa khoảng 1 giờ dữ liệu video.
Video phải thuộc một trong các loại MIME định dạng video sau đây:
video/mp4
video/mpeg
video/mov
video/avi
video/x-flv
video/mpg
video/webm
video/wmv
video/3gpp
Dịch vụ API tệp trích xuất khung hình ảnh từ video với tốc độ 1 khung hình/giây (FPS) và âm thanh ở tốc độ 1Kb/giây, một kênh, thêm dấu thời gian mỗi giây. Các tốc độ này có thể thay đổi trong tương lai để cải thiện quá trình suy luận.
Mỗi khung hình có 258 mã thông báo và âm thanh là 32 mã thông báo mỗi giây. Bằng siêu dữ liệu, mỗi giây của video sẽ trở thành ~300 token, tức là 1 triệu ngữ cảnh có thể vừa với thời lượng video ít hơn một giờ.
Để đặt câu hỏi về các vị trí có dấu thời gian, hãy sử dụng định dạng MM:SS
, trong đó
hai chữ số đầu tiên biểu thị phút và hai chữ số cuối cùng biểu thị
giây.
Để có kết quả tốt nhất:
- Sử dụng một video cho mỗi câu lệnh.
- Nếu sử dụng một video, hãy đặt câu lệnh dạng văn bản sau video đó.
Tải tệp video lên bằng API tệp
File API trực tiếp chấp nhận các định dạng tệp video. Ví dụ này sử dụng phương pháp phim ngắn của NASA "Vết đỏ tuyệt vời của Juupiter co lại và phát triển". Nhà cung cấp hình ảnh: Trung tâm bay vũ trụ Goddard (GSFC)/David Ladd (2018).
"Vết đỏ tuyệt vời của Juupiter thu nhỏ và phát triển" thuộc phạm vi công cộng và có không được hiển thị những người có thể xác định danh tính. (Nguyên tắc sử dụng hình ảnh và nội dung nghe nhìn của NASA.)
Bắt đầu bằng cách truy xuất video ngắn:
!wget https://storage.googleapis.com/generativeai-downloads/images/GreatRedSpot.mp4
Tải video lên bằng API tệp và in URI.
# Upload the video and print a confirmation.
video_file_name = "GreatRedSpot.mp4"
print(f"Uploading file...")
video_file = genai.upload_file(path=video_file_name)
print(f"Completed upload: {video_file.uri}")
Xác minh tệp tải lên và kiểm tra trạng thái
Xác minh rằng API đã nhận các tệp thành công bằng cách gọi hàm
Phương thức files.get
.
import time
# Check whether the file is ready to be used.
while video_file.state.name == "PROCESSING":
print('.', end='')
time.sleep(10)
video_file = genai.get_file(video_file.name)
if video_file.state.name == "FAILED":
raise ValueError(video_file.state.name)
Câu lệnh bằng video và văn bản
Sau khi video tải lên ở trạng thái ACTIVE
, bạn có thể đặt GenerateContent
các yêu cầu chỉ định URI File API cho video đó. Chọn ứng dụng tạo sinh
làm mẫu và cung cấp video đã tải lên cùng với câu lệnh bằng văn bản.
# Create the prompt.
prompt = "Summarize this video. Then create a quiz with answer key based on the information in the video."
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([video_file, prompt],
request_options={"timeout": 600})
# Print the response, rendering any Markdown
Markdown(response.text)
Tham khảo dấu thời gian trong nội dung
Bạn có thể sử dụng dấu thời gian trên biểu mẫu MM:SS
để nói đến các khoảnh khắc cụ thể trong
video.
# Create the prompt.
prompt = "What are the examples given at 01:05 and 01:19 supposed to show us?"
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([prompt, video_file],
request_options={"timeout": 600})
print(response.text)
Chép lời video và cung cấp nội dung mô tả bằng hình ảnh
Nếu video không có nhịp độ nhanh (chỉ lấy mẫu 1 khung hình/giây của video), bạn có thể chép lời video bằng nội dung mô tả bằng hình ảnh cho mỗi cảnh quay.
# Create the prompt.
prompt = "Transcribe the audio, giving timestamps. Also provide visual descriptions."
# Choose a Gemini model.
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# Make the LLM request.
print("Making LLM inference request...")
response = model.generate_content([prompt, video_file],
request_options={"timeout": 600})
print(response.text)
Tệp danh sách
Bạn có thể liệt kê tất cả các tệp được tải lên bằng API tệp và URI của các tệp đó bằng cách sử dụng
files.list_files()
.
# List all files
for file in genai.list_files():
print(f"{file.display_name}, URI: {file.uri}")
Xóa tệp
Những tệp được tải lên bằng File API sẽ tự động bị xoá sau 2 ngày. Bạn
cũng có thể xoá
theo cách thủ công bằng files.delete()
.
# Delete file
genai.delete_file(video_file.name)
print(f'Deleted file {video_file.uri}')
Các bước tiếp theo
Hướng dẫn này trình bày cách sử dụng
generateContent
và
để tạo đầu ra văn bản từ đầu vào hình ảnh và video. Để tìm hiểu thêm,
hãy xem các tài nguyên sau:
- Lời nhắc bằng tệp nội dung nghe nhìn: Gemini API hỗ trợ tính năng nhắc bằng dữ liệu văn bản, hình ảnh, âm thanh và video, đồng thời được gọi là nhắc đa phương thức.
- Hướng dẫn về hệ thống: Hệ thống cho phép bạn định hướng hành vi của mô hình dựa trên và trường hợp sử dụng.
- Hướng dẫn an toàn: Đôi khi có thể sử dụng AI tạo sinh các mô hình tạo ra kết quả không mong muốn, chẳng hạn như kết quả đầu ra không chính xác, thiên kiến hoặc phản cảm. Quy trình hậu xử lý và quy trình đánh giá thủ công có vai trò thiết yếu đối với việc hạn chế rủi ro thiệt hại từ các dữ liệu đầu ra đó.