- จากภาพ 10,000 ภาพที่เก็บไว้ในบล็อก มีประมาณ 9,000 ภาพที่ยังไม่มี
alt-text - เพื่อแก้ปัญหานี้ ได้ทดสอบ LLM (Large Language Model) 12 ตัว โดยในจำนวนนี้ 10 ตัวรันแบบโลคัล และอีก 2 ตัวเป็นโมเดลบนคลาวด์ (GPT-4, Claude 3.5 Sonnet)
- การเขียน
alt-textเป็นงานสำคัญที่ช่วยเพิ่มการเข้าถึงสำหรับผู้พิการทางสายตา แต่การเขียนด้วยมือทั้งหมดมีภาระสูง - เป้าหมายคือทดสอบความแม่นยำของโมเดล AI ในการสร้าง
alt-textและตรวจสอบว่าโมเดลโลคัลจะเป็นทางเลือกที่ใช้งานได้จริงหรือไม่
โมเดล AI ที่ทดสอบ
- โมเดลโลคัล (10 ตัว)
- 9 โมเดลรันบน MacBook Pro (RAM 32GB)
- อีก 1 โมเดลรันบนเครื่องสเปกสูงของเพื่อน
- โมเดลคลาวด์ (2 ตัว)
- GPT-4o (OpenAI)
- Claude 3.5 Sonnet (Anthropic)
เปรียบเทียบประสิทธิภาพหลัก
-
โมเดลคลาวด์ (GPT-4o, Claude 3.5 Sonnet)
- สร้าง
alt-text ได้แม่นยำที่สุด - อธิบายรายละเอียดได้ดีมาก และจับบรรยากาศของภาพได้ด้วย
- ระดับการประเมิน: A
- สร้าง
-
โมเดลโลคัลที่ทำผลงานได้ดี
- Llama 3.2 Vision 11B
- จำแนกวัตถุได้แม่นยำและเข้าใจบริบทได้ดี
- ระดับการประเมิน: B
- Llama 3.2 Vision 90B
- แม่นยำกว่าโมเดล 11B เล็กน้อย แต่ต้องใช้ RAM มากกว่าในการรัน
- ระดับการประเมิน: B
- MiniCPM-V
- แม้เป็นโมเดลที่ค่อนข้างเบา แต่ให้ประสิทธิภาพที่แข็งแกร่ง
- ระดับการประเมิน: B
- Llama 3.2 Vision 11B
-
โมเดลที่ทำผลงานต่ำ
- โมเดลยุคแรกอย่าง VIT-GPT2, GIT, BLIP มีแนวโน้มจำแนกวัตถุไม่แม่นยำ และสร้างข้อความซ้ำ ๆ
- ระดับการประเมิน: D~F
วิธีที่โมเดล AI วิเคราะห์ภาพ
- Vision Encoding
- แบ่งภาพออกเป็นแพตช์เล็ก ๆ แล้วแปลงเป็นข้อมูลเชิงตัวเลข (embedding)
- กรองส่วนที่ควรโฟกัส (เช่น วัตถุหลัก) และตัดองค์ประกอบที่สำคัญน้อยกว่าออก (เช่น พื้นหลังเรียบ ๆ)
- Language Encoding
- สร้างข้อความภาษาธรรมชาติโดยอิงจากข้อมูลที่ vision encoder ส่งมา
- สร้างข้อความในลักษณะการบรรยายภาพหรือตอบคำถามเกี่ยวกับภาพ
ภาพทดสอบและผลลัพธ์
-
ชิบูย่าครอสซิง (โตเกียว)
- GPT-4o, Claude: "ชิบูย่าครอสซิงที่เต็มไปด้วยป้ายนีออนและผู้คนจำนวนมาก" → เกรด A
- LLaVA 13B: "ภาพผู้คนกำลังข้ามถนนที่ชิบูย่าครอสซิง" → เกรด A
- Llama 3.2 Vision 11B: "ทิวทัศน์ยามค่ำคืนอันคึกคักของโตเกียว พร้อมป้ายโฆษณาและฝูงชน" → เกรด C
- VIT-GPT2: "ภาพกลางคืนของเมืองที่มีตึกสูงและสัญญาณไฟจราจร" → เกรด F (ไม่แม่นยำ)
-
พิพิธภัณฑ์ Isabella Stewart Gardner (บอสตัน)
- Claude: "ห้องสไตล์วิกตอเรียน โคมระย้า และกรอบรูปปิดทอง" → เกรด B
- Llama 3.2 Vision 11B: "กรอบรูปปิดทองและฉากหลังตกแต่งอย่างวิจิตร" → เกรด A
- BLIP-2 OPT: "ห้องที่มีภาพวาดและกรอบรูปแขวนอยู่บนผนัง" → เกรด C
- VIT-GPT2: "ห้องนั่งเล่นที่มีเชิงเทียนและแจกันวางอยู่หน้ากระจก" → เกรด F (ไม่แม่นยำ)
-
เวคบอร์ดดิ้ง (รัฐเวอร์มอนต์ สหรัฐฯ)
- GPT-4o: "คนสองคนบนเรือกำลังดูผู้เล่นเวคบอร์ด" → เกรด A
- Llama 3.2 Vision 90B: "คนสองคนบนเรือกำลังดูการเล่นเวคบอร์ด" → เกรด A
- BLIP-2 FLAN: "มีคนกำลังดูการเล่นเซิร์ฟบนเรือ" → เกรด C
- VIT-GPT2: "คนสองคนยืนอยู่บนเรือพร้อมถือเซิร์ฟบอร์ด" → เกรด E (ไม่แม่นยำ)
ผลการประเมิน
- โมเดลคลาวด์ (GPT-4o, Claude 3.5 Sonnet): เกรด A
- ให้คำอธิบายที่แม่นยำที่สุด และจับบรรยากาศได้ด้วย
- กลุ่มโมเดลโลคัลระดับบน (Llama 11B, Llama 90B, MiniCPM-V): เกรด B
- ความแม่นยำยังด้อยกว่าโมเดลคลาวด์เล็กน้อย แต่ใช้งานจริงได้
- โมเดลยุคแรก (VIT-GPT2, GIT, BLIP เป็นต้น): เกรด D~F
- มีการใช้ถ้อยคำซ้ำ และเกิด hallucination
ประเด็นที่ควรพิจารณาต่อ
ถ้า alt-text ไม่สมบูรณ์แบบ จะยังดีกว่าไม่มีเลยหรือไม่?
alt-text ระดับBก็มีแนวโน้มว่าจะดีกว่าไม่มีเลย- อย่างไรก็ตาม ข้อมูลที่ไม่แม่นยำ (เช่น เพิ่มวัตถุที่ไม่มีอยู่จริง) อาจทำให้ผู้ใช้ที่มีความบกพร่องทางการมองเห็นสับสนได้
ตัวเลือกสำหรับขั้นตอนถัดไป
- รวมผลลัพธ์จาก AI หลายตัว
- ผสานหลายโมเดลเพื่อสร้างคำอธิบายที่แม่นยำที่สุด
- รอการอัปเกรด
- ใช้โมเดลโลคัลที่ดีที่สุดในตอนนี้ แล้วอัปเดตเป็นโมเดลใหม่ในอีก 6~12 เดือน
- ใช้โมเดลคลาวด์
- ใช้โมเดลบนคลาวด์เพื่อความแม่นยำ แต่มีปัญหาเรื่องต้นทุนและความเป็นส่วนตัวของข้อมูล
- แนวทางแบบไฮบริด
- ให้มนุษย์ช่วยตรวจทานและปรับแก้
alt-text ที่ AI สร้างขึ้น (แต่ในทางปฏิบัติทำได้ยากหากต้องใช้กับ 9,000 ภาพ)
- ให้มนุษย์ช่วยตรวจทานและปรับแก้
- ตอนนี้ตัวเลือกที่สมเหตุสมผลที่สุดน่าจะเป็น การใช้โมเดลโลคัลไปก่อน แล้วค่อยอัปเดตเป็นโมเดลที่ก้าวหน้ากว่าในอนาคต
1 ความคิดเห็น
ผมใส่ alt-text ให้กับภาพที่โพสต์บน Twitter และที่อื่น ๆ อยู่แล้ว และก็เคยคิดว่าถ้าย้ายงานนี้ไปให้ AI ทำได้บ้าง ก็น่าจะช่วยให้ผมโพสต์ได้สะดวกขึ้นหรือเปล่า ผมไม่ค่อยแน่ใจว่าจำเป็นต้องใช้ LLM ไหม และรู้สึกว่าเทคโนโลยีอย่าง CLIP ก็น่าจะเพียงพอแล้ว
เหตุผลข้อหนึ่งที่ผมยังไม่ได้ทำแบบนั้นก็คือ งานลักษณะนี้เป็นฟังก์ชันที่น่าจะผูกเข้ากับฝั่งสกรีนรีดเดอร์ได้อย่างเพียงพออยู่แล้ว และผมก็คิดว่าการเพิ่มบริบทที่มนุษย์สามารถให้ได้เข้าไปอีกสักเล็กน้อยน่าจะเหมาะกว่า แน่นอนว่าเหตุผลที่ใหญ่ที่สุดคือผมขี้เกียจด้วยครับ