OpenAI开发的GPT-4 Vision是一种先进的多模态AI技术,它结合了文本和图像处理,有潜力彻底改变用户互动方式。这种协同作用能够解锁新的应用场景,并显著增强用户体验。然而,使用GPT-4的成本相当高,而且关于隐私的担忧可能会阻止一些组织使用第三方API处理他们敏感的数据。
幸运的是,也存在开源的多模态大型语言模型(LLM)和视觉语言模型(VLM)。这些模型可以部署在私有服务器上,降低成本,确保数据隐私。
但是,在选择适合您需求的解决方案时,重要的是要认识到这些开源模型的局限性。
大型语言和视觉助手(LLaVA)
LLaVA 1.5是一个杰出的开源多模态LLM,以其在各种多模态基准和视觉问答任务上的表现而著名。它结合了LLaMA和CLIP模型来处理视觉和文本数据。LLaVA 1.5不仅能力强大,而且效率惊人,能够在单个GPU上运行。
该模型的训练速度令人印象深刻。其开发者报告称,可以在大约一天内在单个8-A100节点上完成完全训练,费用仅需几百美元。预训练的LLaVA模型可以在Hugging Face平台上获得。
由于LLaVA 1.5的训练涉及到使用了GPT-4生成的数据,因此其使用限于非商业目的。
Fuyu
Fuyu是Adept开发的一款80亿参数的多模态LLM。Fuyu的独特之处在于其架构。它没有单独的图像和文本处理组件,而是采用了单一的仅解码器变换器。这种设计使得Fuyu能够将输入图像分割成小片并无缝处理。
这种架构带来了两个显著优势。首先,它使Fuyu非常敏捷,能够在不牺牲质量的情况下,在不到100毫秒内提供响应。其次,Fuyu在图像分辨率上具有灵活性。与其他需要下采样的模型不同,只要它们的块能够适应其上下文窗口,Fuyu可以处理原始分辨率的图像。
Fuyu可以在Hugging Face下载。
CogVLM
清华大学的研究人员开发了CogVLM,这是一个170亿参数的视觉语言模型。CogVLM的架构与LLaVA类似,使用视觉变换器对图像进行编码,然后将其与文本标记嵌入拼接起来。
根据其研究论文的详细描述,CogVLM在各种视觉-语言任务上表现良好。它适用于问答、多步推理,甚至需要视觉输入的编程任务。研究人员还开发了CogAgent,这是CogVLM的一个迭代,旨在创建能够与GUI互动的自主代理,为自动化和用户互动开辟了新途径。
享受GPT-4V和LLaVA 1.5的乐趣
虽然基准测试结果令人印象深刻且值得关注,但将模型集成到应用程序之前进行实验是很重要的。显然,GPT-4 Vision是最有能力的模型,但您可以做一些事情来检查其他模型的限制和边界。理想情况下,您应该为您的特定应用程序创建一个测试数据集,代表模型将面临的范围的示例。
以下一些实验。请注意,使用GPT-4V时,很难判断测试模型的数据是否已包含在训练集中。
在一系列示例中,从简单到复杂,对GPT-4V和LLaVA 1.5进行了比较。首先从一个简单的示例开始,为这张图片编写一个标题。尝试了两种模型,并将温度设置为0.1和1。如果您希望为大型图像数据集生成标题,这是一项重要的能力。
Prompt: Write a caption for this image
Temperature: 0.1
LLaVA: A wooden bowl filled with various flavored macaroon cookies.
GPT-4V: A Symphony of Flavors: Colorful Macarons in a Rustic Bowl
Temperature: 1.0
LLaVA: A bowl full of four different colors of macaroons.
GPT-4V: Earthy Elegance: A Bouquet of Macarons
有趣的是,LLaVA的回应更好。但值得注意的是,这并不是一个彻底的测试。您必须选择正确的图片和提示。例如,当将提示改为“为这张图片写一个简单的标题”时,两个模型都提供了不错的结果。LLaVA成本效率更高,但GPT-4V在处理复杂图像时表现更好。所以,您需要运行一些测试,以了解哪个模型更适合您想要标签的图片类型。
接下来,进行了一个更复杂的测试,提示模型从亚马逊产品页面的屏幕截图中提取特定数据点。这次,使用了最低的温度来减少随机性。
Prompt:
Extract the following information in json:
- Product name
- Product category
- Brand
- Price
Temperature: 0.1
LLaVA:
{
"product_name": "TP-LINK Archer C7 Wireless AC1750 Dual Band Wi-Fi Router (Archer C7)",
"product_category": "Computers & Accessories",
"brand": "TP-LINK",
"price": "$175.00"
}
GPT-4V:
{
"Product name": "TP-Link AXE5400 Tri-Band WiFi 6E Router (Archer AXE75) - Gigabit Wireless Internet, ax Router for Gaming, VPN Router, OneMesh, WPA3",
"Product category": "Electronics > Computers & Accessories > Networking Products > Routers",
"Brand": "TP-Link",
"Price": "$179.99"
}
LLaVA得到了正确的JSON结构,但除了品牌之外,其他信息大部分是臆造的。GPT-4V得出了正确的结果。下一个实验是向模型提供一个数据丰富的图像,并要求它们以JSON格式提取并结构化信息。在线随机抓取了一张收据,并交给了这些模型。
Prompt:
Can you provide the data contained in this receipt in json format?
LLaVA:
{
"save_money": "live better",
"store_of_purchase": "walmart",
"date_of_purchase": "06/23/2013",
"total_amount_paid": 7162.46,
"payment_methods": ["debit", "credit", "cash", "payment from party"],
"balance_due": -5662.55,
"shipping_charge": 326.0,
"sales_tax": -1672.46,
"cash_back": 1672.46,
"total_savings_with_cash_back": -6796.58,
"total_savings_only_cash_back": 0.52,
"employee_signature": "Shawna Yoho",
"return_price":
{
"price": 0.87,
"item_numbers": [7318997394, 4591954, 522612, 519060123, 152340449, 42018890, 796270, 19515001, 2294120, 56527129]
},
"transaction_time": "9:43 AM"
}
GPT-4V:
Certainly, here's the data from the receipt in JSON format:
{
"storeName": "Walmart",
"slogan": "Save money. Live better.",
"phoneNumber": "(412) 782-4444",
"address": {
"manager": "877",
"street": "877 FREEPORT RD",
"city": "PITTSBURGH",
"state": "PA",
"zipCode": "15238"
},
"transactionDetails": {
"storeNumber": "5339",
"opNumber": "00002131",
"teNumber": "04",
"trNumber": "08026"
},
"items": [
{
"description": "SHAVE GEL",
"upc": "004740000359",
"price": 2.97,
"quantity": "X"
},
{
"description": "COUPON",
"upc": "054700003590",
"price": -2.97,
"quantity": "O"
}
],
"summary": {
"subtotal": 2.97,
"tax1": 0.42,
"total": 3.39
},
"payment": {
"method": "DEBIT TEND",
"amount": 3.39,
"debitCashBack": 40.00,
"totalDebitPurchase": 43.39,
"changeDue": -40.00
},
"eftDetails": {
"eftDebit": 3.39,
"cashBack": 40.00,
"totalPurchase": 43.39
},
"accountInfo": {
"ref": "************8030",
"approvalCode": "428022",
"networkId": "NETWORK ID: 28004058",
"terminal": "TERMINAL: 28004058"
},
"timeStamp": {
"purchaseTime": "06/08/13 20:56:58",
"printTime": "06/08/13 20:57:01"
},
"itemCount": 2,
"transactionId": "TC#: 3780 6418 6987 2322 0132",
"additionalMessage": "Ask a Pharmacy Sales Associate how you can save money on pet medications!"
}
Please note that the JSON format is a structured representation of the receipt information, and certain assumptions were made for some fields due to the degraded quality of the text in the image. For ambiguous elements, I've left placeholders or generalized the information. Also, the UPC and item identification numbers may not be accurate due to potential misinterpretation from the image's quality.
LLaVA显然在提取信息上遇到了困难。GPT-4V做得更好,尽管它也输出了一些非JSON数据,这个问题可以通过更好的提示来解决。有趣的是,在一个实验中,GPT-4V响应了结果,并解释了如何运作返现政策。
结论
这些实验并不意味着LLaVA或其他开源模型没有用。它们可以解决许多有趣的问题。然而,查看基准测试之外,并在将模型集成到您的应用程序之前,用您自己的数据和示例进行一些实际的实验是重要的。幸运的是,微调模型的成本和复杂性正在迅速下降。这将使组织能够更容易地运行他们自己的定制模型。