Đặt tên ý nghĩa cho ảnh của bạn với AI

 

Được tạo bởi AI và cải thiện bởi con người

Hình ảnh, dù chứa đựng nhiều thông tin chưa được khai thác, thường không được các công cụ tìm kiếm và hệ thống dữ liệu chú ý đến. Việc chuyển đổi dữ liệu hình ảnh này thành ngôn ngữ có thể đọc được bằng máy không phải là nhiệm vụ dễ dàng, nhưng đó là lúc AI gán nhãn hình ảnh trở nên hữu ích. Đây là cách mà AI gán nhãn hình ảnh có thể tạo ra sự khác biệt:

  • Cải thiện khả năng tiếp cận: Giúp người khiếm thị hiểu nội dung hình ảnh.
  • Tăng cường SEO: Giúp các công cụ tìm kiếm nhận diện nội dung của hình ảnh.
  • Tạo điều kiện khám phá nội dung: Cho phép phân tích và phân loại hiệu quả các cơ sở dữ liệu hình ảnh lớn.
  • Hỗ trợ mạng xã hội và quảng cáo: Tự động tạo ra các mô tả hấp dẫn cho nội dung hình ảnh.
  • Tăng cường bảo mật: Cung cấp các mô tả theo thời gian thực về các hoạt động trong cảnh quay video.
  • Hỗ trợ giáo dục và nghiên cứu: Giúp hiểu và diễn giải các tài liệu hình ảnh.
  • Cung cấp hỗ trợ đa ngôn ngữ: Tạo các nhãn hình ảnh bằng nhiều ngôn ngữ cho khán giả quốc tế.
  • Tổ chức dữ liệu: Giúp quản lý và phân loại các tập dữ liệu hình ảnh lớn.
  • Tiết kiệm thời gian: Gán nhãn tự động hiệu quả hơn so với nỗ lực thủ công.
  • Tăng cường sự tương tác của người dùng: Các chú thích chi tiết có thể làm cho nội dung hình ảnh trở nên hấp dẫn và thông tin hơn.
Bài trước: Giới thiệu về GradioEnglish

Mục tiêu

Vào cuối dự án này, bạn sẽ có thể:

  • Triển khai công cụ gán nhãn hình ảnh bằng cách sử dụng mô hình BLIP từ thư viện Transformers của Hugging Face
  • Sử dụng Gradio để cung cấp giao diện thân thiện với người dùng cho ứng dụng gán nhãn hình ảnh của bạn
  • Điều chỉnh công cụ cho các tình huống triển khai thực tế, minh họa các ứng dụng thực tiễn của nó

Thiết lập môi trường và cài đặt thư viện

Trong dự án này, để xây dựng một ứng dụng AI, bạn sẽ sử dụng giao diện Gradio được cung cấp bởi Hugging Face.

Hãy thiết lập môi trường và các thành phần cần thiết cho dự án này. Mở một terminal mới và đảm bảo bạn đang ở trong thư mục home/project.

Mở một Terminal:
Mở Terminal - VS Code

Tạo một môi trường ảo Python và cài đặt Gradio bằng cách sử dụng các lệnh sau trong terminal:

Trên Unix hoặc MAC OS:
  pip3 install virtualenv 
  virtualenv my_env # create a virtual environment my_env
  source my_env/bin/activate # activate my_env
  
Trên Windows:
  pip install virtualenv 
  python -m virtualenv venv # create a virtual environment my_env
  my_env\Scripts\activate # activate my_env. You must run with terminal on Command Prompt or PowerShell type
  
Sau đó cài đặt các thư viện cần thiết cho môi trường này:

  # installing required libraries in my_env
  pip install langchain==0.1.11 gradio==4.21.0 transformers==4.38.2 bs4==0.0.2 requests==2.31.0 torch==2.2.1
  
Bây giờ, môi trường Python đã sẵn sàng để tạo các files Python.

Tạo chú thích tên ảnh với mô hình BLIP

Giới thiệu: Hugging Face, Transformers, và BLIP

Hugging Face là một tổ chức tập trung vào xử lý ngôn ngữ tự nhiên (NLP) và trí tuệ nhân tạo (AI). Tổ chức này nổi tiếng với thư viện mã nguồn mở mang tên "Transformers" cung cấp hàng ngàn mô hình được huấn luyện sẵn cho cộng đồng. Thư viện này hỗ trợ một loạt các nhiệm vụ NLP, chẳng hạn như dịch thuật, tóm tắt, sinh văn bản, và nhiều hơn nữa. Transformers đã đóng góp đáng kể vào các tiến bộ gần đây trong NLP, vì nó đã làm cho các mô hình tiên tiến nhất, chẳng hạn như BERT, GPT-2, và GPT-3, trở nên dễ dàng tiếp cận với các nhà nghiên cứu và nhà phát triển trên toàn thế giới.

Thư viện Transformers bao gồm một mô hình có thể được sử dụng để thu thập thông tin từ hình ảnh. Mô hình BLIP, hay Bootstrapping Language-Image Pre-training, là một công cụ giúp máy tính hiểu và tạo ngôn ngữ dựa trên hình ảnh. Nó giống như việc dạy máy tính nhìn vào một bức tranh và mô tả nó, hoặc trả lời các câu hỏi về nó.

Được rồi, bây giờ bạn đã biết BLIP có thể làm gì, hãy bắt đầu với việc triển khai một ứng dụng AI chú thích ảnh đơn giản!

Bước 1: Import các công cụ cần thiết từ thư viện transformers

Bạn đã cài đặt gói transformers trong quá trình thiết lập môi trường.

Trong thư mục project , tạo một tệp Python và đặt tên nó là image_cap.py,, sao chép các đoạn mã khác nhau dưới đây và dán chúng vào tệp Python.

Bạn sẽ sử dụng AutoProcessor và BlipForConditionalGeneration từ thư viện transformers .

"Blip2Processor" và "Blip2ForConditionalGeneration" là các thành phần của mô hình BLIP, một mô hình kết hợp thị giác-ngôn ngữ có sẵn trong thư viện Hugging Face Transformers.
  • AutoProcessor: Đây là một lớp xử lý dữ liệu được sử dụng để tiền xử lý dữ liệu cho mô hình BLIP. Nó bao gồm một bộ xử lý hình ảnh BLIP và một tokenizer OPT/T5 thành một bộ xử lý duy nhất. Điều này có nghĩa là nó có thể xử lý cả dữ liệu hình ảnh và văn bản, chuẩn bị chúng để đưa vào mô hình BLIP.
    Lưu ý: Tokenizer là một công cụ trong xử lý ngôn ngữ tự nhiên phân chia văn bản thành các đơn vị nhỏ hơn, dễ quản lý hơn (token), chẳng hạn như từ hoặc cụm từ, cho phép các mô hình phân tích và hiểu văn bản.
  • BlipForConditionalGeneration: Đây là một lớp mô hình được sử dụng để tạo văn bản điều kiện dựa trên hình ảnh và một đoạn văn bản tùy chọn. Nói cách khác, nó có thể tạo văn bản dựa trên một hình ảnh đầu vào và một đoạn văn bản tùy chọn. Điều này làm cho nó hữu ích cho các nhiệm vụ như chú thích hình ảnh hoặc trả lời câu hỏi về hình ảnh, nơi mô hình cần tạo văn bản mô tả một hình ảnh hoặc trả lời một câu hỏi về hình ảnh.
import requests
from PIL import Image
from transformers import AutoProcessor, BlipForConditionalGeneration

# Load the pretrained processor and model
processor = AutoProcessor.from_pretrained("Salesforce/blip-image-captioning-base")
model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-base")

Bước 2: Nhận mô hình và khởi tạo bộ tách từ (tokenizer)

Sau khi tải bộ xử lý và mô hình, bạn cần khởi tạo hình ảnh để chú thích. Dữ liệu hình ảnh cần được tải lên và tiền xử lý để sẵn sàng cho mô hình.

Để tải hình ảnh lên, nhấp chuột phải vào bất kỳ đâu trong Explorer (ở bên trái của khung mã), và nhấp vào Files...(hình bên dưới). Bạn có thể tải lên bất kỳ hình ảnh nào từ các tệp của bạn và chỉnh sửa img_path theo tên của hình ảnh.
Upload files
Trong giai đoạn tiếp theo, bạn lấy một hình ảnh, sẽ được chú thích bởi mô hình đã được huấn luyện trước của bạn. Hình ảnh này có thể là một tệp cục bộ hoặc lấy từ một URL. Thư viện Hình ảnh Python, PIL, được sử dụng để mở tệp hình ảnh và chuyển đổi nó thành định dạng RGB phù hợp cho mô hình.
# Load your image, DONT FORGET TO WRITE YOUR IMAGE NAME
img_path = "YOUR IMAGE NAME.jpeg"
# convert it into an RGB format 
image = Image.open(img_path).convert('RGB')
Next, the pre-processed image is passed through the processor to generate inputs in the required format. The return_tensors argument is set to "pt" to return PyTorch tensors.
# Load your image, DONT FORGET TO WRITE YOUR IMAGE NAME
img_path = "YOUR IMAGE NAME.jpeg"
# convert it into an RGB format 
image = Image.open(img_path).convert('RGB') 
Sau đó, bạn truyền các đầu vào này vào phương thức generate của mô hình. Đối số max_new_tokens=50 chỉ định rằng mô hình nên tạo ra một chú thích có độ dài tối đa là 50 token.
Hai dấu sao (**) trong Python được sử dụng trong các cuộc gọi hàm để giải nén các từ điển và truyền các mục trong từ điển như đối số từ khóa cho hàm. **inputs đang giải nén từ điển inputs và truyền các mục của nó như các đối số cho mô hình.
# Generate a caption for the image
outputs = model.generate(**inputs, max_length=50)
Cuối cùng, kết quả được tạo ra là một chuỗi các token. Để chuyển đổi các token này thành văn bản có thể đọc được, bạn sử dụng phương thức decode được cung cấp bởi bộ xử lý. Đối số skip_special_tokens được thiết lập là True để bỏ qua các token đặc biệt trong văn bản đầu ra.
# Decode the generated tokens to text
caption = processor.decode(outputs[0], skip_special_tokens=True)
# Print the caption
print(caption)
Lưu file Python của bạn lại và chạy nó để xem kết quá.
python3 image_cap.py
Và bạn có được phần mô tả của hình ảnh, được tạo ra bởi mô hình của bạn! Phần chú thích này là biểu diễn văn bản của nội dung của hình ảnh, được diễn giải bởi mô hình BLIP.
Kết quả mô tả của ảnh

Ứng dụng mô tả hình ảnh với Gradio

Bây giờ bạn đã hiểu cơ chế của việc đặt chú thích cho hình ảnh, hãy tạo một ứng dụng thích hợp với giao diện người dùng trực quan. Bạn có thể sử dụng Gradio, một công cụ được cung cấp bởi Hugging Face, cho mục đích này. Để bắt đầu, bạn sẽ được giới thiệu ngắn gọn về Gradio. Sau đó, như một bài tập, bạn sẽ được giao nhiệm vụ triển khai ứng dụng đặt chú thích hình ảnh bằng giao diện Gradio.

Hướng dẫn nhanh Gradio: Tạo một bản demo đơn giản

Hãy làm quen với Gradio bằng một demo đơn giản:

Cũng tại thư mục project , tạo một file Python và đặt tên hello.py.


Mở hello.py, sao chép và dán mã Python sau đây và lưu.
Mã trên tạo một gradio.Interface gọi là demo. Nó bao bọc hàm greet với một giao diện người dùng text-to-text đơn giản mà bạn có thể tương tác.

Lớp gradio.Interface được khởi tạo với 3 tham số bắt buộc:
  • fn: hàm để bao bọc giao diện người dùng (UI)
  • inputs: thành phần nào để sử dụng cho đầu vào (ví dụ: “text”, “image” hoặc “audio”)
  • outputs: thành phần nào để sử dụng cho đầu ra (ví dụ: “text”, “image” hoặc “label”)
Dòng cuối cùng demo.launch() khởi chạy một máy chủ để chạy bản demo của bạn.

Khởi chạy ứng dụng demo

Bây giờ quay lại terminal và đảm bảo rằng tên môi trường ảo my_env được hiển thị ở đầu dòng. Bây giờ chạy lệnh sau để thực thi tập lệnh Python.
python3 hello.py
Khi mã Python được chạy trên localhost, nhấp vào nút bên dưới và bạn sẽ có thể thấy ứng dụng mà bạn đã tạo. Hãy thoải mái kiểm thử với đầu vào và đầu ra của ứng dụng web!

Click nút bên dưới để mở ứng dụng của bạn:


Bạn sẽ thấy như sau, ở đây tên đã nhập là bob:
Input and output

Nếu bạn đã thử nghiệm xong với ứng dụng và muốn thoát, hãy nhấn ctrl + c trong terminal và đóng tab ứng dụng.

Bạn vừa có trải nghiệm đầu tiên với giao diện Gradio, dễ dàng đúng không? Nếu bạn muốn tìm hiểu thêm về tùy chỉnh trong Gradio, có thể bạn muốn tham gia dự án hướng dẫn có tên "Bring your Machine Learning model to life with Gradio." Bạn có thể tìm thấy nó dưới mục Courses & Projects trên cognitiveclass.ai!

Bài tập: Triển khai ứng dụng chú thích hình ảnh với Gradio

Trong bài tập này, bạn sẽ đi qua các bước để tạo một ứng dụng web tạo chú thích cho hình ảnh bằng cách sử dụng mô hình BLIP-2 và thư viện Gradio. Thực hiện theo các bước dưới đây:

Bước 1: Thiết lập môi trường

  • Đảm bảo bạn đã cài đặt các thư viện cần thiết. Chạy lệnh pip install gradio transformers Pillow để cài đặt Gradio, Transformers và Pillow.
  • Import các thư viện cần thiết
Bây giờ, hãy tạo một tệp Python mới và gọi nó là image_captioning_app.py.
import gradio as gr
import numpy as np
from PIL import Image
from transformers import AutoProcessor, BlipForConditionalGeneration

Bước 2: Tải mô hình đã được huấn luyện

  • Tài model và processor đã được huấn luyện:
processor = # write your code here
model = # write your code here

Bước 3: Khởi tạo hàm chú thích hình ảnh

  • Khởi tạo hàm caption_image nhận hình ảnh đầu vào và trả về chú tích:
def caption_image(input_image: np.ndarray):
    # Convert numpy array to PIL Image and convert to RGB
    raw_image = Image.fromarray(input_image).convert('RGB')
    
    # Process the image
    

    # Generate a caption for the image


    # Decode the generated tokens to text and store it into `caption`
    

    return caption

Bước 4: Tạo Gradio interface

  • Dùng lớp gr.Interface để tạo giao diện ứng dụng web:
iface = gr.Interface(
    fn=caption_image, 
    inputs=gr.Image(), 
    outputs="text",
    title="Image Captioning",
    description="This is a simple web app for generating captions for images using a trained model."
)

Bước 5: Khởi chạy Web App

Khởi động web app bằng cách gọi phương thức launch():
iface.launch()

Bước 6: Chạy ứng dụng

  • Lưu mã hoàn chỉnh vào một tệp Python. Ví dụ: image_captioning_app.py.
  • Mở terminal hoặc command prompt, điều hướng đến thư mục nơi tệp được lưu và chạy lệnh
python3 image_captioning_app.py
Click vào nút bên dưới để mở web app của bạn:


Ấn ctrl + c để thoat ứng dụng.

Bạn sẽ mở một cửa số mới với nội dung tương tự như hình bên dưới:

Nếu bạn đang chạy localhost: Tương tác với ứng dụng web:
  • Ứng dụng web sẽ bắt đầu chạy và hiển thị một URL có thể truy cập giao diện..
  • Mở URL được cung cấp trong trình duyệt web (trong terminal).
  • Bạn sẽ thấy một giao diện với một khung tải hình ảnh lên.
Chúc mừng! Bạn đã tạo một ứng dụng web tạo chú thích hình ảnh bằng Gradio và mô hình BLIP. Bạn có thể tùy chỉnh giao diện, sửa đổi mã hoặc thử nghiệm với các mô hình và cài đặt khác nhau để nâng cao chức năng của ứng dụng.

Kịch bản: Cách tạo chú thích hình ảnh hỗ trợ kinh doanh

Kịch bản kinh doanh trong lĩnh vực tin tức và truyền thông:

Một cơ quan tin tức xuất bản hàng trăm bài báo mỗi ngày trên trang web của mình. Mỗi bài báo chứa nhiều hình ảnh liên quan đến câu chuyện. Việc viết các chú thích phù hợp và mô tả cho từng hình ảnh một cách thủ công là một nhiệm vụ tẻ nhạt và có thể làm chậm quá trình xuất bản.
Trong kịch bản này, chương trình tạo chú thích hình ảnh của bạn có thể đẩy nhanh quá trình:
  1. Các nhà báo viết bài báo của họ và chọn các hình ảnh liên quan đến câu chuyện.
  2. Những hình ảnh này sau đó được đưa vào chương trình tạo chú thích hình ảnh (thay vì phải nhập mô tả thủ công cho từng hình ảnh).
  3. Chương trình xử lý các hình ảnh này và tạo ra một tệp văn bản với các chú thích đề xuất cho từng hình ảnh.
  4. Các nhà báo hoặc biên tập viên xem xét các chú thích này. Họ có thể sử dụng chúng như vậy hoặc chỉnh sửa để phù hợp hơn với ngữ cảnh của bài báo.
  5. Những chú thích đã được phê duyệt này sau đó phục vụ hai mục đích:
    • Tăng cường khả năng tiếp cận: Các chú thích được tích hợp dưới dạng văn bản thay thế (alt text) cho các hình ảnh trong bài báo trực tuyến. Người khiếm thị, sử dụng các trình đọc màn hình, có thể hiểu ngữ cảnh của các hình ảnh thông qua các mô tả này. Điều này giúp họ có trải nghiệm tiêu thụ nội dung tương tự như người nhìn thấy, tuân thủ các nguyên tắc thiết kế bao gồm và tiếp cận.
    • Cải thiện SEO: Hình ảnh được chú thích đúng cách với các từ khóa liên quan cải thiện SEO của bài báo. Các công cụ tìm kiếm như Google xem xét văn bản thay thế khi lập chỉ mục, điều này giúp bài báo xuất hiện trong các kết quả tìm kiếm liên quan, do đó thu hút lưu lượng truy cập tự nhiên đến trang web của cơ quan. Điều này đặc biệt hữu ích cho kết quả tìm kiếm hình ảnh.
  6. Sau khi các chú thích được phê duyệt, chúng được thêm vào hình ảnh trong bài báo trực tuyến.
Bằng cách tích hợp quy trình này, cơ quan không chỉ đẩy nhanh quá trình xuất bản mà còn đảm bảo tất cả hình ảnh đều có các mô tả phù hợp, nâng cao khả năng tiếp cận cho độc giả khiếm thị và cải thiện SEO của trang web. Bằng cách này, cơ quan mở rộng phạm vi và sự tham gia với một cơ sở khán giả đa dạng hơn.

Hãy triển khai công cụ tạo chú thích hình ảnh tự động

Trong phần này, bạn sẽ triển khai một chương trình tạo chú thích hình ảnh tự động hoạt động trực tiếp từ một URL. Người dùng cung cấp URL, và mã sẽ tạo ra các chú thích cho các hình ảnh được tìm thấy trên trang web. Kết quả đầu ra là một tệp văn bản bao gồm tất cả các URL hình ảnh cùng với các chú thích tương ứng của chúng (như hình dưới đây). Để thực hiện điều này, bạn sẽ sử dụng BeautifulSoup để phân tích nội dung HTML của trang và trích xuất các URL hình ảnh.
Image urls
Bắt đầu nào:

Trước tiên, bạn gửi một yêu cầu HTTP đến URL được cung cấp và lấy nội dung của trang web. Nội dung này sau đó được phân tích bởi BeautifulSoup, tạo ra một cây phân tích từ HTML của trang. Bạn tìm kiếm các thẻ 'img' trong cây phân tích này vì chúng chứa các liên kết đến các hình ảnh được lưu trữ trên trang web.
# URL of the page to scrape
url = "https://en.wikipedia.org/wiki/IBM"

# Download the page
response = requests.get(url)

# Parse the page with BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
Sau khi trích xuất các URL hình ảnh, bạn sẽ lặp qua từng URL. Bạn sẽ gửi một yêu cầu HTTP khác để tải xuống dữ liệu hình ảnh tương ứng với mỗi URL.

Việc này được thực hiện đồng bộ trong việc triển khai hiện tại của bạn là điều quan trọng cần lưu ý. Điều này có nghĩa là mỗi hình ảnh được tải xuống một cách tuần tự, điều này có thể chậm đối với các trang web có số lượng hình ảnh lớn. Để có một phương pháp hiệu quả hơn, bạn có thể khám phá các phương pháp lập trình bất đồng bộ hoặc thư viện concurrent.futures để tải xuống nhiều hình ảnh cùng lúc.
# Find all img elements
img_elements = soup.find_all('img')

# Iterate over each img elements
for img_element in img_elements:
...

Hãy hoàn thiện đoạn mã dưới đây để nó hoạt động:

Tạo một tệp Python mới và đặt tên là automate_url_captioner.py, sau đó sao chép mã dưới đây vào đó. Hãy điền vào phần trống để làm cho mã hoạt động.
import requests
from PIL import Image
from io import BytesIO
from bs4 import BeautifulSoup
from transformers import AutoProcessor, BlipForConditionalGeneration

# Load the pretrained processor and model
processor = # fill the pretrained model
model = # load the blip model

# URL of the page to scrape
url = "https://en.wikipedia.org/wiki/IBM"

# Download the page
response = requests.get(url)
# Parse the page with BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')

# Find all img elements
img_elements = soup.find_all('img')

# Open a file to write the captions
with open("captions.txt", "w") as caption_file:
    # Iterate over each img element
    for img_element in img_elements:
        img_url = img_element.get('src')

        # Skip if the image is an SVG or too small (likely an icon)
        if 'svg' in img_url or '1x1' in img_url:
            continue

        # Correct the URL if it's malformed
        if img_url.startswith('//'):
            img_url = 'https:' + img_url
        elif not img_url.startswith('http://') and not img_url.startswith('https://'):
            continue  # Skip URLs that don't start with http:// or https://

        try:
            # Download the image
            response = requests.get(img_url)
            # Convert the image data to a PIL Image
            raw_image = Image.open(BytesIO(response.content))
            if raw_image.size[0] * raw_image.size[1] < 400:  # Skip very small images
                continue
            
            raw_image = raw_image.convert('RGB')

            # Process the image
            inputs = processor(raw_image, return_tensors="pt")
            # Generate a caption for the image
            out = model.generate(**inputs, max_new_tokens=50)
            # Decode the generated tokens to text
            caption = processor.decode(out[0], skip_special_tokens=True)

            # Write the caption to the file, prepended by the image URL
            caption_file.write(f"{img_url}: {caption}\n")
        except Exception as e:
            print(f"Error processing image {img_url}: {e}")
            continue
Kết quả, bạn sẽ có một tệp mới trong trình duyệt tệp (cùng thư mục) có tên là captions.txt (như được hiển thị trong hình ảnh dưới đây).

Bonus: Tạo chú thích hình ảnh cho các tệp cục bộ (Chạy cục bộ nếu sử dụng Blip2)

Với vài điều chỉnh nhỏ, bạn có thể điều chỉnh mã để hoạt động với các hình ảnh cục bộ. Điều này bao gồm sử dụng thư viện glob để lọc qua tất cả các tệp hình ảnh trong một thư mục cụ thể và sau đó ghi các chú thích được tạo ra vào một tệp văn bản.

Ngoài ra, bạn có thể sử dụng mô hình Blip2, một mô hình được huấn luyện trước mạnh mẽ hơn cho việc tạo chú thích hình ảnh. Trong thực tế, bạn có thể dễ dàng tích hợp bất kỳ mô hình mới nào được huấn luyện trước mới nào mà có sẵn, vì chúng liên tục được phát triển để mạnh mẽ hơn. Trong ví dụ dưới đây, chúng tôi thể hiện việc sử dụng mô hình Blip2. Tuy nhiên, hãy nhớ rằng mô hình Blip2 yêu cầu 10GB không gian, điều này ngăn chặn chúng ta chạy nó trong môi trường CloudIDE.
import glob
...
# Specify the directory where your images are
image_dir = "/path/to/your/images"
image_exts = ["jpg", "jpeg", "png"]  # specify the image file extensions to search for

# Open a file to write the captions
with open("captions.txt", "w") as caption_file:
# Iterate over each image file in the directory
    for image_ext in image_exts:
        for img_path in glob.glob(os.path.join(image_dir, f"*.{image_ext}")):
            # Load your image
            raw_image = Image.open(img_path).convert('RGB')
            ...
Hảy thử tự mình thực hiện.


import os
import glob
import requests
from PIL import Image
from transformers import Blip2Processor, Blip2ForConditionalGeneration #Blip2 models

# Load the pretrained processor and model
processor = Blip2Processor.from_pretrained("Salesforce/blip2-opt-2.7b")
model = Blip2ForConditionalGeneration.from_pretrained("Salesforce/blip2-opt-2.7b")

# Specify the directory where your images are
image_dir = "/path/to/your/images"
image_exts = ["jpg", "jpeg", "png"]  # specify the image file extensions to search for

# Open a file to write the captions
with open("captions.txt", "w") as caption_file:
    # Iterate over each image file in the directory
    for image_ext in image_exts:
        for img_path in glob.glob(os.path.join(image_dir, f"*.{image_ext}")):
            # Load your image
            raw_image = Image.open(img_path).convert('RGB')

            # You do not need a question for image captioning
            inputs = processor(raw_image, return_tensors="pt")

            # Generate a caption for the image
            out = model.generate(**inputs, max_new_tokens=50)

            # Decode the generated tokens to text
            caption = processor.decode(out[0], skip_special_tokens=True)

            # Write the caption to the file, prepended by the image file name
            caption_file.write(f"{os.path.basename(img_path)}: {caption}\n")
      

Kết luận

Xin chúc mừng bạn đã hoàn thành dự án hướng dẫn này! Bạn đã thành thạo việc sử dụng trí tuệ nhân tạo để tạo chú thích hình ảnh bằng Gradio và IBM Code Engine.

Bước tiếp theo

Bạn có thể triển khai ứng dụng của mình lên internet bằng cách sử dụng IBM Code Engine. Trong phần tùy chọn tiếp theo, chúng tôi cung cấp một hướng dẫn từng bước để giúp bạn thực hiện điều này.

Ở cuối dự án hướng dẫn này, bạn đã triển khai một ứng dụng lên một cụm Kubernetes bằng IBM Code Engine. Bạn đã sử dụng một cụm chia sẻ được cung cấp bởi IBM Developer Skills Network. Nếu bạn muốn triển khai ứng dụng chứa và có một URL cố định của ứng dụng ngoài Code Engine CLI trên máy tính cục bộ của bạn, bạn có thể tìm hiểu thêm về Kubernetes và các container. Bạn có thể nhận một cụm Kubernetes miễn phí của riêng bạn và một Registry Container IBM miễn phí.

Đăng nhận xét

Mới hơn Cũ hơn

POST ADS TOP

POST ADS BOTTOM