成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

LLaVA:GPT-4V(ision)?的開源替代品

譯文
人工智能
本文將向您展示一款優秀的GPT-4V的開源替代品——LLaVA,并分別展示以Web、本地和Google Colab三種方式運行LLaVA。

LLaVA(大型語言和視覺助理)(鏈接::https://llava-vl.github.io/)是一個很有前途的開源生成式人工智能模型,它復制了OpenAI GPT-4在圖像轉換方面的一些功能。用戶可以將圖像添加到LLaVA聊天對話中,允許討論這些圖像的內容,也可以將其用作以視覺方式描述想法、上下文或情況的一種方式。

LLaVA最引人注目的特點是它能夠改進其他開源的解決方案,同時使用更簡單的模型架構和數量級更少的訓練數據。這些特性使LLaVA不僅訓練更快、更便宜,而且更適合在消費類硬件上進行推理。

這篇文章旨在概述LLaVA的主要功能,更具體地說:

  • 展示如何從Web界面進行實驗,以及如何將其安裝在您的計算機或筆記本電腦上。
  • 解釋其主要技術特征。
  • 舉例說明如何使用它進行編程,將使用Google Colab上的HuggingFace庫(Transformers和Gradio)構建一個簡單的聊天機器人應用程序。

在線使用LLaVA

如果您還沒有嘗試過,那么使用LLaVA最簡單的方法是轉到其作者提供的Web界面(https://llava.hliu.cc/)。下面的屏幕截圖展示了該界面的操作方式,用戶在給出冰箱內容圖片的情況下,詢問該怎么吃。你可以使用界面中左側的小部件加載圖像,聊天界面允許以文本的形式提問和獲得答案。

LLaVA Web界面

在這個例子中,LLaVA能夠正確地識別冰箱中存在的成分,如藍莓、草莓、胡蘿卜、酸奶或牛奶,并提出了相關的想法,如水果沙拉、奶昔或蛋糕。

項目網站(https://llava-vl.github.io/)上還提供了與LLaVA對話的其他例子,這些例子表明LLaVA不僅能夠描述圖像,而且能夠根據圖像中的元素進行推斷和推理(使用圖片中的線索識別電影或人物,根據繪圖對網站進行編碼,解釋幽默的情況,等等)。

本地運行LLaVA

LLaVA也可以借助于Ollama(https://ollama.ai/)或Mozilla的“llamafile”(https://github.com/Mozilla-Ocho/llamafile)安裝在本地機器上。這些工具可以在大多數僅使用CPU的消費級機器上運行,因為該模型只需要8GB的RAM和4GB的可用磁盤空間,甚至可以在Raspberry PI上成功運行。在圍繞Ollama項目開發的工具和界面中,一個值得注意的辦法是Ollama WebUI(https://github.com/ollama-webui/ollama-webui,如下圖所示),它再現了OpenAI ChatGPT用戶界面的外觀。

Ollama Web用戶界面——靈感來自OpenAI ChatGPT

LLaVA主要功能概述

LLaVA由威斯康星大學麥迪遜分校、微軟研究所和哥倫比亞大學的研究人員共同設計而成,最近在NeurIPS 2023上展出。該項目的代碼和技術規范可以在其Github存儲庫(https://github.com/haotian-liu/LLaVA)中訪問,該存儲庫還提供了與助理交互的各種接口。

正如作者在論文摘要(https://arxiv.org/pdf/2310.03744.pdf)中總結的那樣:

“LLaVA在11個基準測試中達到了最先進的水平。我們的最終13B檢查點僅使用了120萬個公開可用的數據,并在單個8-A100級節點上在約1天內完成了完整的訓練。我們希望這能使最先進的LMM研究更容易訪問。有關研究代碼和模型都將以開源方式發布。”

此論文中以雷達圖的形式報告的基準結果說明了它與其他最先進的模型相比的改進情況。

LLaVA基準結果雷達圖(圖片來自論文https://arxiv.org/pdf/2304.08485.pdf)

內部工作原理

LLaVA的數據處理工作流程在概念上很簡單。該模型本質上是一個標準的因果語言模型,以語言指令(用戶文本提示)為輸入,并返回語言響應。語言模型處理圖像的能力是由一個單獨的視覺編碼器模型所支持的,該模型將圖像轉換為語言標記,這些標記被“悄悄地”添加到用戶文本提示中(充當一種軟提示)。LLaVA的整體實現流程如下圖所示:

LLaVA網絡架構(圖片來自論文https://arxiv.org/pdf/2304.08485.pdf)

LLaVA的語言模型和視覺編碼器分別依賴于兩個參考模型,即Vicuna和CLIP。其中,Vicuna(https://lmsys.org/blog/2023-03-30-vicuna/)是一個基于LLaMA-2(由Meta設計)的預訓練大型語言模型,具有與中等規模LLM競爭的性能(請參閱HuggingFace上的7B和13B版本的模型卡)。CLIP(https://openai.com/research/clip)是由OpenAI設計的圖像編碼器,使用對比語言圖像預訓練(因此稱為“CLIP”)技術進行預訓練,從而能夠在類似的嵌入空間中對圖像和文本進行編碼。LLaVA中使用的模型是視覺轉換器變體CLIP-ViT-L/14(請參閱HuggingFace上的模型卡:https://huggingface.co/openai/clip-vit-large-patch14)。

為了使視覺編碼器的尺寸與語言模型的尺寸相匹配,應用了投影模塊(上圖中的W)。它實際上是原始LLaVA中的簡單線性投影,以及LLaVA 1.5中的兩層感知器。

訓練過程

LLaVA的訓練過程由兩個相對簡單的階段組成。

第一階段僅為了實現微調投影模塊W,此階段中視覺編碼器和LLM的權重保持凍結。這個階段使用來自CC3M概念字幕數據集(https://ai.google.com/research/ConceptualCaptions/)的約600k個圖像/字幕對的子集進行訓練,有關內容可在HuggingFace的存儲庫(https://huggingface.co/datasets/liuhaotian/LLaVA-Instruct-150K)上免費獲得。

在第二階段中,使用158K語言圖像指令的數據集,將投影模塊權重W與LLM權重一起微調(同時保持視覺編碼器的權重凍結)。數據是使用GPT4生成的,具有對話示例、詳細描述和復雜推理的功能,可在HuggingFace的存儲庫(https://huggingface.co/datasets/liuhaotian/LLaVA-Instruct-150K)上免費獲得有關內容。

整個訓練大約需要一天的時間,使用八個A100 GPU。

LLaVA基礎編程

本部分相關代碼可通過Colab相關筆記本文件(https://colab.research.google.com/drive/1L28bJX14-Y5lJvswYwydsletYFMIxVH5)獲取。

LLaVA模型集成在Transformers庫中,可以使用標準管道對象加載。模型的7B和13B變體均可免費從LLaVA存儲庫空間上獲取,并且可以以4位和8位方式加載以節省GPU內存。接下來,我們將說明如何使用可在帶有T4 TPU(15GB RAM GPU)的Colab上執行的代碼加載和運行模型。

以下是用4位方式加載LLaVA 1.5的7B變體的代碼片段:

from transformers import pipeline, BitsAndBytesConfig
import torch
quantization_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_compute_dtype=torch.float16
)
model_id = "llava-hf/llava-1.5-7b-hf"
pipe = pipeline("image-to-text", model=model_id, model_kwargs={"quantization_config": quantization_config})

然后,讓我們加載此圖片:

我們使用了標準的PIL庫來加載圖片:

import requests
from PIL import Image
image_url = "https://cdn.pixabay.com/photo/2018/01/29/14/13/italy-3116211_960_720.jpg"
image = Image.open(requests.get(image_url, stream=True).raw)
image

最后,讓我們用圖像來查詢LLaVA模型,并提示要求描述圖片。

注意,提示的格式(https://huggingface.co/docs/transformers/model_doc/llava)如下:

“USER: <image>\n<prompt>\nASSISTANT:”

相關代碼如下:

prompt = "USER: <image>\nDescribe this picture\nASSISTANT:"
outputs = pipe(image, prompt=prompt, generate_kwargs={"max_new_tokens": 200})
print(outputs[0]['generated_text'])

返回了以下答案:

USER: Describe this picture
ASSISTANT: The image features a large, empty amphitheater with a stunning view of the ocean in the background. The amphitheater is surrounded by a lush green hillside, and a majestic mountain can be seen in the distance. The scene is serene and picturesque, with the sun shining brightly over the landscape.

創建LLaVA聊天機器人

最后,讓我們創建一個簡單的依賴于LLaVA模型的聊天機器人。我們將使用Gradio庫(https://www.gradio.app/),它提供了一種快速簡便的方法來創建機器學習Web界面。

接口的核心由一行代碼組成,該行包含一個圖像上傳組件(Gradio image對象)和一個聊天接口(Gradio ChatInterface對象:https://www.gradio.app/docs/chatinterface)。

import gradio as gr

with gr.Blocks() as demo:

    with gr.Row():
      image = gr.Image(type='pil', interactive=True)

      gr.ChatInterface(
          update_conversation, additional_inputs=[image]
      )

聊天界面連接到函數update_conversation,該函數負責保存對話歷史記錄,并在用戶發送消息時調用LLaVA模型進行響應。

def update_conversation(new_message, history, image):

    if image is None:
        return "Please upload an image first using the widget on the left"

    conversation_starting_from_image = [[user, assistant] for [user, assistant] in history if not assistant.startswith('Please')]

    prompt = "USER: <image>\n"

    for i in range(len(history)):
        prompt+=history[i][0]+'ASSISTANT: '+history[i][1]+"USER: "

    prompt = prompt+new_message+'ASSISTANT: '

    outputs = pipe(image, prompt=prompt, generate_kwargs={"max_new_tokens": 200, "do_sample" : True, "temperature" : 0.7})[0]['generated_text']

    return outputs[len(prompt)-6:]

下面的代碼通過調用launch方法啟動接口。

demo.launch(debug=True)

幾秒鐘后,聊天機器人Web界面即將出現:

祝賀您,您的LLaVA聊天機器人現已啟動并成功運行!

注:除非另有說明;否則,文中所有圖片均由作者本人提供。

參考文獻

  • HuggingFace LLaVA model documentation(HuggingFace LLaVA參考文檔),https://huggingface.co/docs/transformers/model_doc/llava。
  • Llava Hugging Face organization(Llava Hugging Face組織架構),https://huggingface.co/llava-hf。
  • Loading and running LLaVA with AutoPrecessor and LLaVAForConditionalGeneration: Colab notebook(使用AutoPrecessor和LLaVAForConditionalGeneration加載和運行LLaVA),https://colab.research.google.com/drive/1_q7cOB-jCu3RExrkhrgewBR0qKjZr-Sx。
  • GPT-4V(ision) system card(GPT-4V(vision)系統卡),https://cdn.openai.com/papers/GPTV_System_Card.pdf。
  • Understanding Visual Instruction Tuning(了解可視化指令微調),https://newsletter.artofsaience.com/p/understanding-visual-instruction。

譯者介紹

朱先忠,51CTO社區編輯,51CTO專家博客、講師,濰坊一所高校計算機教師,自由編程界老兵一枚。

原文標題:LLaVA: An open-source alternative to GPT-4V(ision),作者:Yann-A?l Le Borgne

鏈接:https://towardsdatascience.com/llava-an-open-source-alternative-to-gpt-4v-ision-b06f88ce8efa。

責任編輯:姜華 來源: 51CTO
相關推薦

2019-10-22 19:00:16

PhotoshopAdobe開源

2024-01-03 12:56:39

2022-08-02 10:45:29

AppFlowyNotion開源

2020-02-17 21:35:21

JoplinEvernote開源

2016-09-13 15:50:24

TurtlEvernote開源

2017-02-27 15:30:39

2024-01-15 14:19:34

開源ChatGPT

2020-07-07 09:10:29

VS CodeLinux開源

2021-11-03 21:20:54

FerdiFranz開源

2022-06-29 15:40:28

MinecraftMinetest開源

2010-09-04 10:21:03

2020-06-15 07:49:32

開源奇妙清單Wunderlist

2020-12-09 10:28:10

Github開源編程代碼

2022-06-01 09:28:43

??Umami??開源

2011-04-12 09:13:51

OpenIndianaSolaris替代品

2022-01-05 11:21:19

開源工具操作系統

2013-11-19 14:36:38

UbuntuDebianPCLinuxOS

2021-09-04 15:21:39

ZulipSlack開源

2024-04-07 13:39:55

2022-04-14 09:19:34

Notion開源AppFlowy
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩av一区二区在线观看 | 亚洲成av人影片在线观看 | 狠狠色香婷婷久久亚洲精品 | 日韩精品一区二区三区在线播放 | 国产成人久久 | 久久久女女女女999久久 | 亚洲成人在线网 | 亚洲国产精品99久久久久久久久 | 在线观看黄色电影 | 日韩视频1 | 久久久久国产精品一区二区 | 99re热这里只有精品视频 | 久久性色 | 91久久夜色精品国产网站 | 亚洲人人 | 伊伊综合网 | 午夜久久久久久久久久一区二区 | 日本久久精品视频 | 日韩国产精品一区二区三区 | 国产一区二区三区四区在线观看 | 精品久久久久久久久久 | 91精品国产综合久久婷婷香蕉 | 国产精品一区二区av | 91精品国产综合久久久久久丝袜 | 国产欧美一区二区精品久导航 | 亚洲成人三区 | 伊人久久成人 | 欧美日韩福利视频 | 天天久久 | 欧美一区二区三区在线观看 | 高清国产一区二区 | 国产男女精品 | 亚洲毛片 | 亚洲www啪成人一区二区 | 一级毛片视频 | 少妇一区二区三区 | 久久久91| 欧美极品一区二区 | 欧美一区二区免费电影 | 久久久久久九九九九九九 | 精品久久久久一区二区国产 |