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 มีการใช้งานที่หลากหลายในอุตสาหกรรมต่างๆ ตัวอย่างบางส่วนมีการระบุไว้ด้านล่าง:
- คำบรรยายภาพ: สร้างคำบรรยายสำหรับรูปภาพโดยอัตโนมัติ ซึ่งสามารถปรับปรุงการเข้าถึงสำหรับบุคคลที่มีความบกพร่องทางการมองเห็น และปรับปรุงประสบการณ์ผู้ใช้
- การตอบคำถามด้วยภาพ (VQA): ตอบคำถามเกี่ยวกับรูปภาพ ซึ่งช่วยให้เครื่องมือค้นหาแบบโต้ตอบ ผู้ช่วยเสมือน และเครื่องมือทางการศึกษามากขึ้น
- การเรียกค้นรูปภาพ-ข้อความ: การเรียกค้นรูปภาพที่เกี่ยวข้องตามข้อความค้นหาและในทางกลับกัน ช่วยอำนวยความสะดวกในการค้นหาเนื้อหาและการค้นหาในฐานข้อมูลมัลติมีเดีย
- แชทบอทแบบโต้ตอบ: มีส่วนร่วมในการสนทนากับผู้ใช้โดยการทำความเข้าใจทั้งข้อความและบริบทภาพ นำไปสู่การตอบกลับที่เป็นส่วนตัวและเกี่ยวข้องกับบริบทมากขึ้น
- การสร้างเนื้อหา: สร้างคำอธิบายข้อความ สรุป หรือเรื่องราวโดยอัตโนมัติตามการป้อนข้อมูลด้วยภาพ ช่วยในการสร้างเนื้อหาอัตโนมัติสำหรับอุตสาหกรรมการตลาด การเล่าเรื่อง และการสร้างสรรค์
- ตัวแทนประดิษฐ์: การใช้เทคโนโลยีเหล่านี้เพื่อขับเคลื่อนหุ่นยนต์หรือตัวแทนเสมือนที่มีความสามารถในการรับรู้และเข้าใจสภาพแวดล้อมโดยรอบ ช่วยให้สามารถใช้งานในหุ่นยนต์ ยานพาหนะอัตโนมัติ และระบบบ้านอัจฉริยะ
- การถ่ายภาพทางการแพทย์: การวิเคราะห์ภาพทางการแพทย์ (เช่น รังสีเอกซ์, MRI) พร้อมกับบันทึกทางคลินิกหรือรายงาน ช่วยเหลือนักรังสีวิทยาในการวินิจฉัยและการวางแผนการรักษา
- แฟชั่นและการค้าปลีก: การให้คำแนะนำผลิตภัณฑ์ส่วนบุคคลตามการตั้งค่าภาพและคำอธิบายข้อความ ปรับปรุงประสบการณ์การช็อปปิ้งและเพิ่มอัตราการเปลี่ยนยอดขาย
- การรู้จำอักขระด้วยแสง: การรู้จำอักขระด้วยแสง (OCR) เกี่ยวข้องกับการแยกข้อความที่มองเห็นได้จากรูปภาพและแปลงเป็นรูปแบบข้อความที่เครื่องอ่านได้ แม้ว่าจะฟังดูตรงไปตรงมา แต่การนำ OCR ไปใช้ในการใช้งานจริงอาจทำให้เกิดความท้าทายที่สำคัญได้
- เครื่องมือทางการศึกษา: การสร้างสื่อการเรียนรู้เชิงโต้ตอบที่รวมเนื้อหาภาพเข้ากับคำอธิบายที่เป็นข้อความ แบบทดสอบ และแบบฝึกหัดเพื่อเพิ่มความเข้าใจและการเก็บรักษา
นี่เป็นเพียงตัวอย่างเล็กๆ น้อยๆ และการใช้งานที่เป็นไปได้ของแบบจำลองภาษาวิสัยทัศน์ยังคงขยายตัวอย่างต่อเนื่อง เนื่องจากนักวิจัยและนักพัฒนาสำรวจกรณีการใช้งานใหม่ๆ และบูรณาการเทคโนโลยีเหล่านี้เข้ากับโดเมนต่างๆ
บทสรุป
โดยสรุป เราสามารถพูดได้ว่า PaliGemma แสดงถึงความก้าวหน้าที่สำคัญในด้านโมเดลภาษาวิสัยทัศน์ โดยนำเสนอเครื่องมืออันทรงพลังสำหรับการทำความเข้าใจและสร้างเนื้อหาจากรูปภาพ ด้วยความสามารถในการบูรณาการข้อมูลภาพและข้อความได้อย่างราบรื่น PaliGemma เปิดเส้นทางใหม่สำหรับการวิจัยและการประยุกต์ในอุตสาหกรรมที่หลากหลาย ตั้งแต่คำบรรยายภาพไปจนถึงการรู้จำอักขระด้วยแสงและอื่นๆ ความสามารถของ PaliGemma ถือเป็นคำมั่นสัญญาในการขับเคลื่อนนวัตกรรมและแก้ไขปัญหาที่ซับซ้อนในยุคดิจิทัล
เราหวังว่าคุณจะสนุกกับการอ่านบทความนี้!
ทรัพยากร
- ขอแนะนำ PaliGemma, Gemma 2 และชุดเครื่องมือ AI ที่มีความรับผิดชอบที่ได้รับการอัปเกรดแล้ว
- PaliGemma – โมเดลภาษาวิสัยทัศน์แบบเปิดที่ล้ำสมัยของ Google
- PaliGemma Github README
- เอกสาร PaliGemma
- เอกสารการปรับแต่งอย่างละเอียดของ PaliGemma
- ปรับแต่ง PaliGemma ใน Google Colab
- บล็อกใบหน้ากอด