ค้นหาเว็บไซต์

PaliGemma: โมเดลภาษาการมองเห็นแบบเปิดน้ำหนักเบา (VLM)


การแนะนำ

Google เพิ่งเปิดตัว PaliGemma โมเดลการมองเห็นน้ำหนักเบารุ่นใหม่ โมเดลนี้เปิดตัวเมื่อวันที่ 14 พฤษภาคม 2024 และมีความสามารถหลายรูปแบบ

โมเดลภาษาวิสัยทัศน์ (VLM) เป็นปัญญาประดิษฐ์ขั้นสูงประเภทหนึ่งที่ผสานรวมข้อมูลภาพและข้อความเพื่อดำเนินงานที่ต้องใช้ความเข้าใจและสร้างทั้งภาพและภาษา โมเดลเหล่านี้ผสมผสานเทคนิคจากการมองเห็นด้วยคอมพิวเตอร์และการประมวลผลภาษาธรรมชาติ ทำให้สามารถวิเคราะห์ภาพ สร้างคำอธิบายภาพ ตอบคำถามเกี่ยวกับเนื้อหาที่เป็นภาพ และแม้แต่การใช้เหตุผลด้านภาพที่ซับซ้อน

VLM สามารถเข้าใจบริบท สรุปความสัมพันธ์ และสร้างเอาต์พุตหลายรูปแบบที่สอดคล้องกันโดยใช้ประโยชน์จากชุดข้อมูลขนาดใหญ่และสถาปัตยกรรมประสาทที่ซับซ้อน ทำให้เครื่องมือเหล่านี้มีประสิทธิภาพสำหรับการใช้งานในด้านต่างๆ เช่น การจดจำรูปภาพ การสร้างเนื้อหาอัตโนมัติ และระบบ AI แบบโต้ตอบ

Gemma คือกลุ่มผลิตภัณฑ์รุ่นเปิดที่มีน้ำหนักเบาและล้ำหน้า ซึ่งพัฒนาขึ้นโดยใช้การวิจัยและเทคโนโลยีแบบเดียวกับรุ่น Gemini PaliGemma คือโมเดลภาษาการมองเห็นแบบเปิด (VLM) อันทรงพลังที่เพิ่งเพิ่มเข้ามาในกลุ่ม Gemma

ข้อกำหนดเบื้องต้นสำหรับ PaliGemma

  • ความรู้ ML พื้นฐาน: ความเข้าใจแนวคิดการเรียนรู้ของเครื่องและโมเดลภาษาวิสัยทัศน์ (VLM)
  • ทักษะการเขียนโปรแกรม: ความเชี่ยวชาญใน Python
  • การพึ่งพา: ติดตั้งไลบรารี PyTorch และ Hugging Face Transformers
  • ฮาร์ดแวร์: ระบบที่ใช้ GPU เพื่อการฝึกอบรมและการอนุมานที่รวดเร็วยิ่งขึ้น
  • ชุดข้อมูล: เข้าถึงชุดข้อมูลภาษาวิสัยทัศน์ที่เหมาะสมสำหรับการทดสอบหรือการปรับแต่งอย่างละเอียด

ปาลีเจมม่าคืออะไร?

PaliGemma คือโมเดลภาษาการมองเห็นแบบเปิดอันทรงพลังที่ได้รับแรงบันดาลใจจาก PaLI-3 ซึ่งสร้างขึ้นโดยใช้โมเดลการมองเห็น SigLIP และโมเดลภาษา Gemma ได้รับการออกแบบมาเพื่อประสิทธิภาพระดับสูงในงานต่างๆ เช่น คำบรรยายภาพและวิดีโอสั้น การตอบคำถามด้วยภาพ การจดจำข้อความในรูปภาพ การตรวจจับวัตถุ และการแบ่งส่วน

จุดตรวจสอบทั้งที่ได้รับการฝึกมาแล้วและที่ได้รับการปรับแต่งอย่างละเอียดนั้นเป็นโอเพ่นซอร์สในความละเอียดที่หลากหลาย รวมถึงจุดตรวจเฉพาะงานเพื่อการใช้งานทันที

PaliGemma รวม SigLIP-So400m เป็นตัวเข้ารหัสรูปภาพและ Gemma-2B เป็นตัวถอดรหัสข้อความ SigLIP เป็นโมเดล SOTA ที่สามารถทำความเข้าใจรูปภาพและข้อความได้ คล้ายกับ CLIP ซึ่งมีตัวเข้ารหัสรูปภาพและข้อความที่ได้รับการฝึกอบรมร่วมกัน โมเดล PaliGemma ที่รวมกันซึ่งได้รับแรงบันดาลใจจาก PaLI-3 ได้รับการฝึกอบรมล่วงหน้าเกี่ยวกับข้อมูลข้อความรูปภาพ และสามารถปรับแต่งสำหรับงานต่างๆ เช่น คำบรรยายและการแบ่งส่วนการอ้างอิงได้อย่างง่ายดาย Gemma ซึ่งเป็นรุ่นถอดรหัสเท่านั้น จัดการการสร้างข้อความ ด้วยการรวมการเข้ารหัสรูปภาพของ SigLIP เข้ากับ Gemma ผ่านอะแดปเตอร์เชิงเส้น PaliGemma จึงกลายเป็นโมเดลภาษาการมองเห็นที่ทรงพลัง

แหล่งที่มา

ภาพรวมของการเผยแพร่โมเดล PaliGemma

จุดตรวจผสม:

  • โมเดลที่ได้รับการฝึกมาล่วงหน้าได้รับการปรับแต่งอย่างละเอียดตามการผสมผสานของงาน
  • เหมาะสำหรับการอนุมานทั่วไปพร้อมข้อความแจ้งอิสระ
  • มีวัตถุประสงค์เพื่อการวิจัยเท่านั้น

จุดตรวจ FT:

  • แบบจำลองที่ได้รับการปรับแต่งโดยเฉพาะเกี่ยวกับเกณฑ์มาตรฐานทางวิชาการต่างๆ
  • มีให้เลือกหลายความละเอียด
  • มีวัตถุประสงค์เพื่อการวิจัยเท่านั้น

ความละเอียดของโมเดล:

  • 224x224
  • 448x448
  • 896x896

ความแม่นยำของโมเดล:

  • bfloat16
  • ลอย16
  • ลอย32

โครงสร้างพื้นที่เก็บข้อมูล:

  • แต่ละพื้นที่เก็บข้อมูลจะมีจุดตรวจสอบสำหรับการแก้ปัญหาและงานที่กำหนด
  • มีการแก้ไขสามรายการสำหรับแต่ละความแม่นยำ
  • สาขาหลักมีจุดตรวจ float32
  • การแก้ไข bfloat16 และ float16 มีความแม่นยำที่สอดคล้องกัน

ความเข้ากันได้:

  • มีที่เก็บแยกต่างหากสำหรับรุ่นที่เข้ากันได้กับ 🤗 หม้อแปลง และการใช้งาน JAX ดั้งเดิม

ข้อควรพิจารณาเกี่ยวกับหน่วยความจำ:

  • รุ่นที่มีความละเอียดสูง (448x448, 896x896) ต้องใช้หน่วยความจำเพิ่มขึ้นอย่างมาก
  • โมเดลความละเอียดสูงมีประโยชน์สำหรับงานที่มีความละเอียด เช่น OCR
  • การปรับปรุงคุณภาพถือเป็นเรื่องเล็กน้อยสำหรับงานส่วนใหญ่
  • เวอร์ชัน 224x224 เหมาะสำหรับวัตถุประสงค์ส่วนใหญ่

ลองใช้ PaliGemma

เราจะสำรวจวิธีใช้ 🤗 หม้อแปลง สำหรับการอนุมาน PaliGemma

ก่อนอื่นให้เราติดตั้งไลบรารีที่จำเป็นพร้อมกับแฟล็กอัปเดตเพื่อให้แน่ใจว่าเราใช้ 🤗 Transformers เวอร์ชันล่าสุดและการขึ้นต่อกันอื่น ๆ

!pip install -q -U accelerate bitsandbytes git+https://github.com/huggingface/transformers.git

หากต้องการใช้ PaliGemma คุณต้องยอมรับใบอนุญาต Gemma เยี่ยมชมพื้นที่เก็บข้อมูลเพื่อขอการเข้าถึง หากคุณยอมรับใบอนุญาต Gemma แล้ว คุณก็พร้อมแล้ว เมื่อคุณมีสิทธิ์เข้าถึงแล้ว ให้เข้าสู่ระบบ Hugging Face Hub โดยใช้ notebook_login() และป้อนโทเค็นการเข้าถึงของคุณโดยเรียกใช้เซลล์ด้านล่าง

ป้อนรูปภาพ

แหล่งที่มา

input_text = "how many dogs are there in the image?"

ต่อไป เราจะนำเข้าไลบรารีที่จำเป็นและ นำเข้า AutoTokenizer, PaliGemmaForConditionalGeneration และ PaliGemmaProcessor จากไลบรารี transformers

เมื่อการนำเข้าเสร็จสิ้น เราจะโหลดโมเดล PaliGemma ที่ได้รับการฝึกล่วงหน้า และโมเดลจะโหลดด้วยประเภทข้อมูล torch.bfloat16 ซึ่งสามารถให้ความสมดุลที่ดีระหว่างประสิทธิภาพและความแม่นยำบนฮาร์ดแวร์สมัยใหม่

from transformers import AutoTokenizer, PaliGemmaForConditionalGeneration, PaliGemmaProcessor
import torch

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model_id = "google/paligemma-3b-mix-224"
model = PaliGemmaForConditionalGeneration.from_pretrained(model_id, torch_dtype=torch.bfloat16)
processor = PaliGemmaProcessor.from_pretrained(model_id)

เมื่อโค้ดถูกดำเนินการแล้ว โปรเซสเซอร์จะประมวลผลทั้งรูปภาพและข้อความล่วงหน้า

inputs = processor(text=input_text, images=input_image,
                  padding="longest", do_convert_rgb=True, return_tensors="pt").to("cuda")
model.to(device)
inputs = inputs.to(dtype=model.dtype)

จากนั้น ใช้แบบจำลองเพื่อสร้างข้อความตามคำถามที่ป้อน

with torch.no_grad():
  output = model.generate(**inputs, max_length=496)

print(processor.decode(output[0], skip_special_tokens=True))

ผลลัพธ์:-

ในภาพมีสุนัขกี่ตัว? 1

โหลดโมเดลในรูปแบบ 4 บิต

นอกจากนี้เรายังสามารถโหลดโมเดลในแบบ 4 บิตและ 8 บิต เพื่อลดทรัพยากรการคำนวณและหน่วยความจำที่จำเป็นสำหรับการฝึกอบรมและการอนุมาน ขั้นแรก ให้เริ่มต้น BitsAndBytesConfig

from transformers import BitsAndBytesConfig
import torch
nf4_config = BitsAndBytesConfig(
   load_in_4bit=True,
   bnb_4bit_quant_type="nf4",
   bnb_4bit_use_double_quant=True,
   bnb_4bit_compute_dtype=torch.bfloat16
)

จากนั้น โหลดโมเดลซ้ำและส่งออบเจ็กต์ด้านบนเป็น quantization_config,

from transformers import AutoTokenizer, PaliGemmaForConditionalGeneration, PaliGemmaProcessor
import torch

device="cuda"
model_id = "google/paligemma-3b-mix-224"
model = PaliGemmaForConditionalGeneration.from_pretrained(model_id, torch_dtype=torch.bfloat16,
                                                          quantization_config=nf4_config, device_map={"":0})
processor = PaliGemmaProcessor.from_pretrained(model_id)

สร้างผลลัพธ์

with torch.no_grad():
  output = model.generate(**inputs, max_length=496)

print(processor.decode(output[0], skip_special_tokens=True))

ผลลัพธ์:-

ในภาพมีสุนัขกี่ตัว? 1

การใช้ PaliGemma เพื่อการอนุมาน: ขั้นตอนสำคัญ

Tokenizing ข้อความอินพุต:

  • ข้อความจะถูกโทเค็นตามปกติ
  • โทเค็น <bos> จะถูกเพิ่มที่จุดเริ่มต้น
  • โทเค็นการขึ้นบรรทัดใหม่ (\n) จะถูกต่อท้าย ซึ่งมีความสำคัญเนื่องจากเป็นส่วนหนึ่งของพรอมต์อินพุตการฝึกของโมเดล

การเพิ่มโทเค็นรูปภาพ:

  • ข้อความโทเค็นจะขึ้นต้นด้วยโทเค็น <image> ตามจำนวนที่ระบุ
  • จำนวนโทเค็น <image> ขึ้นอยู่กับความละเอียดของภาพที่อินพุตและขนาดแพตช์ของโมเดล SigLIP

สำหรับรุ่น PaliGemma:

  • ความละเอียด 224x224:256 <image> โทเค็น (224/14 * 224/14)
  • ความละเอียด 448x448: โทเค็น <image> 1024 รายการ
  • ความละเอียด 896x896: โทเค็น <image> 4096 รายการ

ข้อควรพิจารณาเกี่ยวกับหน่วยความจำ:

  • รูปภาพที่ใหญ่ขึ้นส่งผลให้ลำดับอินพุตยาวขึ้น ต้องใช้หน่วยความจำมากขึ้น
  • รูปภาพที่ใหญ่ขึ้นสามารถปรับปรุงผลลัพธ์สำหรับงานต่างๆ เช่น OCR ได้ แต่คุณภาพที่ได้รับมักจะน้อยสำหรับงานส่วนใหญ่
  • ทดสอบงานเฉพาะของคุณก่อนเลือกความละเอียดที่สูงกว่า

การสร้างการฝังโทเค็น:

  • พรอมต์อินพุตที่สมบูรณ์จะต้องผ่านเลเยอร์การฝังข้อความของโมเดลภาษา ทำให้เกิดการฝังโทเค็น 2048 มิติ

กำลังประมวลผลภาพ:

  • รูปภาพที่ป้อนจะถูกปรับขนาดให้เป็นขนาดที่ต้องการ (เช่น 224x224 สำหรับรุ่นความละเอียดที่เล็กที่สุด) โดยใช้การสุ่มตัวอย่างแบบไบคิวบิก
  • จากนั้นจะถูกส่งผ่าน SigLIP Image Encoder เพื่อสร้างการฝังรูปภาพ 1152 มิติต่อแพตช์
  • การฝังรูปภาพเหล่านี้ถูกฉายไว้ที่ขนาด 2048 เพื่อให้ตรงกับการฝังโทเค็นข้อความ

การรวมการฝังรูปภาพและข้อความ:

  • การฝังรูปภาพขั้นสุดท้ายจะผสานกับการฝังข้อความ <image>
  • อินพุตแบบรวมนี้ใช้สำหรับการสร้างข้อความแบบถอยหลังอัตโนมัติ

การสร้างข้อความแบบถดถอยอัตโนมัติ:

  • ใช้ความสนใจแบบเต็มบล็อกสำหรับการป้อนข้อมูลที่สมบูรณ์ (รูปภาพ + <bos> + prompt + \n)
  • ใช้มาสก์ความสนใจเชิงสาเหตุสำหรับข้อความที่สร้างขึ้น

การอนุมานแบบง่าย:

  • คลาสโปรเซสเซอร์และโมเดลจะจัดการรายละเอียดทั้งหมดเหล่านี้โดยอัตโนมัติ
  • การอนุมานสามารถทำได้โดยใช้ Transformers API ระดับสูง ดังที่แสดงในตัวอย่างก่อนหน้านี้

การใช้งาน

โมเดลภาษาวิชั่นเช่น PaliGemma มีการใช้งานที่หลากหลายในอุตสาหกรรมต่างๆ ตัวอย่างบางส่วนมีการระบุไว้ด้านล่าง:

  1. คำบรรยายภาพ: สร้างคำบรรยายสำหรับรูปภาพโดยอัตโนมัติ ซึ่งสามารถปรับปรุงการเข้าถึงสำหรับบุคคลที่มีความบกพร่องทางการมองเห็น และปรับปรุงประสบการณ์ผู้ใช้
  2. การตอบคำถามด้วยภาพ (VQA): ตอบคำถามเกี่ยวกับรูปภาพ ซึ่งช่วยให้เครื่องมือค้นหาแบบโต้ตอบ ผู้ช่วยเสมือน และเครื่องมือทางการศึกษามากขึ้น
  3. การเรียกค้นรูปภาพ-ข้อความ: การเรียกค้นรูปภาพที่เกี่ยวข้องตามข้อความค้นหาและในทางกลับกัน ช่วยอำนวยความสะดวกในการค้นหาเนื้อหาและการค้นหาในฐานข้อมูลมัลติมีเดีย
  4. แชทบอทแบบโต้ตอบ: มีส่วนร่วมในการสนทนากับผู้ใช้โดยการทำความเข้าใจทั้งข้อความและบริบทภาพ นำไปสู่การตอบกลับที่เป็นส่วนตัวและเกี่ยวข้องกับบริบทมากขึ้น
  5. การสร้างเนื้อหา: สร้างคำอธิบายข้อความ สรุป หรือเรื่องราวโดยอัตโนมัติตามการป้อนข้อมูลด้วยภาพ ช่วยในการสร้างเนื้อหาอัตโนมัติสำหรับอุตสาหกรรมการตลาด การเล่าเรื่อง และการสร้างสรรค์
  6. ตัวแทนประดิษฐ์: การใช้เทคโนโลยีเหล่านี้เพื่อขับเคลื่อนหุ่นยนต์หรือตัวแทนเสมือนที่มีความสามารถในการรับรู้และเข้าใจสภาพแวดล้อมโดยรอบ ช่วยให้สามารถใช้งานในหุ่นยนต์ ยานพาหนะอัตโนมัติ และระบบบ้านอัจฉริยะ
  7. การถ่ายภาพทางการแพทย์: การวิเคราะห์ภาพทางการแพทย์ (เช่น รังสีเอกซ์, MRI) พร้อมกับบันทึกทางคลินิกหรือรายงาน ช่วยเหลือนักรังสีวิทยาในการวินิจฉัยและการวางแผนการรักษา
  8. แฟชั่นและการค้าปลีก: การให้คำแนะนำผลิตภัณฑ์ส่วนบุคคลตามการตั้งค่าภาพและคำอธิบายข้อความ ปรับปรุงประสบการณ์การช็อปปิ้งและเพิ่มอัตราการเปลี่ยนยอดขาย
  9. การรู้จำอักขระด้วยแสง: การรู้จำอักขระด้วยแสง (OCR) เกี่ยวข้องกับการแยกข้อความที่มองเห็นได้จากรูปภาพและแปลงเป็นรูปแบบข้อความที่เครื่องอ่านได้ แม้ว่าจะฟังดูตรงไปตรงมา แต่การนำ OCR ไปใช้ในการใช้งานจริงอาจทำให้เกิดความท้าทายที่สำคัญได้
  10. เครื่องมือทางการศึกษา: การสร้างสื่อการเรียนรู้เชิงโต้ตอบที่รวมเนื้อหาภาพเข้ากับคำอธิบายที่เป็นข้อความ แบบทดสอบ และแบบฝึกหัดเพื่อเพิ่มความเข้าใจและการเก็บรักษา

นี่เป็นเพียงตัวอย่างเล็กๆ น้อยๆ และการใช้งานที่เป็นไปได้ของแบบจำลองภาษาวิสัยทัศน์ยังคงขยายตัวอย่างต่อเนื่อง เนื่องจากนักวิจัยและนักพัฒนาสำรวจกรณีการใช้งานใหม่ๆ และบูรณาการเทคโนโลยีเหล่านี้เข้ากับโดเมนต่างๆ

บทสรุป

โดยสรุป เราสามารถพูดได้ว่า PaliGemma แสดงถึงความก้าวหน้าที่สำคัญในด้านโมเดลภาษาวิสัยทัศน์ โดยนำเสนอเครื่องมืออันทรงพลังสำหรับการทำความเข้าใจและสร้างเนื้อหาจากรูปภาพ ด้วยความสามารถในการบูรณาการข้อมูลภาพและข้อความได้อย่างราบรื่น PaliGemma เปิดเส้นทางใหม่สำหรับการวิจัยและการประยุกต์ในอุตสาหกรรมที่หลากหลาย ตั้งแต่คำบรรยายภาพไปจนถึงการรู้จำอักขระด้วยแสงและอื่นๆ ความสามารถของ PaliGemma ถือเป็นคำมั่นสัญญาในการขับเคลื่อนนวัตกรรมและแก้ไขปัญหาที่ซับซ้อนในยุคดิจิทัล

เราหวังว่าคุณจะสนุกกับการอ่านบทความนี้!

ทรัพยากร

  • ขอแนะนำ PaliGemma, Gemma 2 และชุดเครื่องมือ AI ที่มีความรับผิดชอบที่ได้รับการอัปเกรดแล้ว
  • PaliGemma – โมเดลภาษาวิสัยทัศน์แบบเปิดที่ล้ำสมัยของ Google
  • PaliGemma Github README
  • เอกสาร PaliGemma
  • เอกสารการปรับแต่งอย่างละเอียดของ PaliGemma
  • ปรับแต่ง PaliGemma ใน Google Colab
  • บล็อกใบหน้ากอด