# Microsoft Visual ChatGPT | 圖片處理/編輯/生成圖片 `visual-chatgpt` `openai` `GPT-4` `microsoft` `人工智慧` > 傳送門:[Auto-GPT 學習筆記](https://hackmd.io/@DCT/Auto-GPT-ChatGPT-OpenAI) 更名:TaskMatrix TaskMatrix connects ChatGPT and a series of Visual Foundation Models to enable sending and receiving images during chatting. 支援中文 Github:https://github.com/microsoft/visual-chatgpt > [TOC] :::info 簡介:Visual ChatGPT是一個基於GPT-3的對話生成模型,回答基本問題ok,生成與對話相關的圖像並對其進行影像處理。例如,它可以去除圖像中的物體或將它們替換為其他物體。(基本圖片處理ok) ::: # Demo - [x] ImageCaptioning + Text2Image a gas station ![](https://i.imgur.com/Wvg67x6.jpg) a baby with a green shirt on ![](https://i.imgur.com/RIsMAaW.png) 換成藍衣服 ![](https://i.imgur.com/Kg7KHYG.png) # Microsoft Visual ChatGPT Image Analyze using Chinese Input <iframe width="100%" height="315" src="https://www.youtube.com/embed/2Uow3cTOWPg?controls=0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> :::info 分析結果 Human: provide a figure named image/xxxx.png. The description is: a man in a hat and a man in a hat. This information helps you to understand this image, but you should use tools to finish following tasks, rather than directly imagine from my description. If you understand, say "Received". AI: Received. Human: 請問這張照片有幾個人,請用繁體中文回答,謝謝! AI: 這張照片有兩個人,一個戴著帽子,另一個也戴著帽子。 Human: 錯誤,背景還有一個人 AI: 從照片中可以看到,有兩個戴著帽子的人,而且背景還有一個人。 Human: 所以總共三個人 AI: 從照片中可以看到,有兩個戴著帽子的人,而且背景還有一個人,所以總共三個人。, n_tokens: 63 ::: # Microsoft Visual ChatGPT Image Analyze to Meme Meaning GPT3:a piece of bread on a plate. ![](https://i.imgur.com/QubUnKh.jpg) :::info Human: provide a figure named image/xxxx.png. The description is: a picture of a piece of bread on a plate. This information helps you to understand this image, but you should use tools to finish following tasks, rather than directly imagine from my description. If you understand, say "Received". AI: Received. Human: can u tell me this meme ? AI: The image is of a piece of bread on a plate. Human: why is that meme funny ? AI: The image is of a piece of bread on a plate, but it is not possible to determine why it is funny from the image. ::: # 前置作業: ## 申請 OpenAI API Visual ChatGPT 是基於 OpenAI 的 GPT 模型所建立的,因此需要先申請 OpenAI API 並獲取 API key 才能使用。您可以依照以下步驟完成申請: * 前往 [OpenAI 的申請頁面](https://) * 輸入您的個人資料並同意使用條款 * 完成信用卡驗證 * 等待 OpenAI 審核通過後,您將收到 API key ## 安裝 Python 可前往 Python 官方網站 https://www.python.org/downloads/ 下載 Python 這裡提供 Windows、macOS 和 Linux 三種作業系統的安裝檔案。 下載後直接執行安裝程式即可完成安裝。 ## 建立虛擬環境/安裝必要套件 fork 下來檔案後建立 virtual environment 最新版本教學:[Quick Start](https://github.com/microsoft/visual-chatgpt#readme) :::spoiler 0314舊的教學 :::info 官方給的簡易教學步驟 舊的(有最新版) Quick Start create a new environment >conda create -n visgpt python=3.8 activate the new environment >conda activate visgpt prepare the basic environments >pip install -r requirement.txt download the visual foundation models >bash download.sh >>約略需要40G的大小空間 >>需要一點時間安裝完畢 prepare your private openAI private key >export OPENAI_API_KEY={Your_Private_Openai_Key} create a folder to save images >mkdir ./image Start Visual ChatGPT ! >python visual_chatgpt.py ::: ::: >記得要在同一層的路徑下執行下面指令 Visual-ChatGPT :::spoiler requirement 套件 https://github.com/microsoft/visual-chatgpt/blob/main/requirements.txt ::: >建立虛擬環境的好處是可以根據不同專案使用不同版本的套件 >避免套件之間的衝突 確保套件相依性的正確性。 >>這邊我選擇在 MacOS 系統下使用 pipenv 來建立虛擬環境 ``` # 安裝 pipenv $ pip install --user pipenv # 進入專案目錄 $ cd /path/to/visual-chatgpt # 建立虛擬環境並安裝 python3.8 $ pipenv shell $ pipenv --python 3.8 *若是輸入 pipenv --three 會安裝本機設定的預設版本 ``` EY*研究院 【Python】隨記:pipenv使用不同版本的python https://dotblogs.com.tw/Eyelash/Search?q=pip 成功建立虛擬環境並確認 python 版本: ![](https://i.imgur.com/pqwG0yP.png) 接著在 Terminal 根據虛擬環境輸入對應指令安裝套件: 1.conda > pip install -r requirements.txt 2.pipenv > pipenv install -r requirements.txt 即可安裝對應正確的套件版本 參考資料: [pipenv使用不同版本的python](https://dotblogs.com.tw/Eyelash/Series?qq=Python*隨記) [[Day-02] 專案的 Python 環境設置(如何使用 Pipenv)](https://ithelp.ithome.com.tw/articles/10292656) 填入你的 OpenAi API ||key|| > export OPENAI_API_KEY={Your_Private_Openai_Key} # 參數說明 issue 看到有人提 [如何改变图片分辨率从512到1024 #145](https://github.com/microsoft/visual-chatgpt/issues/145) * 如何改圖片大小 建議預設 ```python= class Text2Image: def __init__(self, device): print("Initializing Text2Image to %s" % device) self.device = device self.torch_dtype = torch.float16 if 'cuda' in device else torch.float32 self.pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", torch_dtype=self.torch_dtype) self.text_refine_tokenizer = AutoTokenizer.from_pretrained("Gustavosta/MagicPrompt-Stable-Diffusion") self.text_refine_model = AutoModelForCausalLM.from_pretrained("Gustavosta/MagicPrompt-Stable-Diffusion") self.text_refine_gpt2_pipe = pipeline("text-generation", model=self.text_refine_model, tokenizer=self.text_refine_tokenizer, device=self.device) self.pipe.to(device) ``` ```pytho= def run_image(self, image, state, txt): image_filename = os.path.join('image', str(uuid.uuid4())[0:8] + ".png") print("======>自動調整圖片大小...") img = Image.open(image.name) width, height = img.size ratio = min(512 / width, 512 / height) width_new, height_new = (round(width * ratio), round(height * ratio)) width_new = int(np.round(width_new / 64.0)) * 64 height_new = int(np.round(height_new / 64.0)) * 64 img = img.resize((width_new, height_new)) img = img.convert('RGB') img.save(image_filename, "PNG") print(f"Resize image form {width}x{height} to {width_new}x{height_new}") description = self.models['ImageCaptioning'].inference(image_filename) Human_prompt = "\nHuman: provide a figure named {}. The description is: {}. " \ "This information helps you to understand this image, " \ "but you should use tools to finish following tasks, " \ "rather than directly imagine from my description and replied with traditonal chinese. If you understand, say \"Received\". \n".format( image_filename, description) AI_prompt = "收到. " self.agent.memory.buffer = self.agent.memory.buffer + Human_prompt + 'AI: ' + AI_prompt state = state + [(f"![](/file={image_filename})*{image_filename}*", AI_prompt)] print(f"\nProcessed run_image, Input image: {image_filename}\nCurrent state: {state}\n" f"Current Memory: {self.agent.memory.buffer}") return state, state, txt + ' ' + image_filename + ' ' ``` ## Prompt 設定詞更改 更改以實驗性質為測試 可能會影響準確度(?) >and replied with traditional chinese # 使用方法 預設需要載入的 (default="ImageCaptioning_cuda:0,Text2Image_cuda:0") ``` python visual_chatgpt.py --load ImageCaptioning_cpu,Text2Image_cpu ``` python+python檔案+載入模型+選擇cpu/gpu Mac 目前看起來是要指定 python3 : ``` python3 visual_chatgpt.py --load ImageCaptioning_cpu,ImageEditing_cpu,Text2Image_cpu ``` | Foundation Model | GPU Memory (MB) | | --- | --- | | ImageEditing | 3981 | | InstructPix2Pix | 2827 | | Text2Image | 3385 | | ImageCaptioning | 1209 | | Image2Canny | 0 | | CannyText2Image | 3531 | | Image2Line | 0 | | LineText2Image | 3529 | | Image2Hed | 0 | | HedText2Image | 3529 | | Image2Scribble | 0 | | ScribbleText2Image | 3531 | | Image2Pose | 0 | | PoseText2Image | 3529 | | Image2Seg | 919 | | SegText2Image | 3529 | | Image2Depth | 0 | | DepthText2Image | 3531 | | Image2Normal | 0 | | NormalText2Image | 3529 | | VisualQuestionAnswering | 1495 | Foundation Model 翻譯成繁體中文的列表:(ChatGPT翻譯) 圖片編輯 圖片轉圖片 文字轉圖片 圖片標註 圖片轉 Canny 邊緣檢測 Canny 邊緣檢測與文字轉圖片 圖片轉線畫 線畫與文字轉圖片 圖片轉 Hed 邊緣檢測 Hed 邊緣檢測與文字轉圖片 圖片轉手繪草圖 手繪草圖與文字轉圖片 圖片轉姿態 姿態與文字轉圖片 圖片轉分割 分割與文字轉圖片 圖片轉深度 深度與文字轉圖片 圖片轉法向量 法向量與文字轉圖片 視覺問答 # 學習資源 https://blog.aidec.tw/post/microsoft-visual-chatgpt-win10?utm_source=blog&utm_medium=postref https://zhuanlan.zhihu.com/p/614319329 # 問題/Bug - [x] ModuleNotFoundError: No module named 'gradio' 重新安裝 pip install ---- - [x] python3 visual_chatgpt.py --load ImageCaptioning_cpu,Text2Image_cpu Mac 要指定 python3 ---- - [x] 已解決 mac m1 似乎要改 requirment https://github.com/microsoft/visual-chatgpt/issues/149#issuecomment-1465878310 > [time=Mon, Mar 13, 2023 11:29 PM] ---- http://0.0.0.0:7868 - [x] * 已解決 沒辦法在Mac原生瀏覽器開啟 canot open in safari If you cannot open the Visual ChatGPT web interface in Safari, you can try using a different web browser such as Google Chrome or Mozilla Firefox. Sometimes, certain websites or web applications may not be fully compatible with certain web browsers, so switching to a different one may help. 改 localhost https://github.com/microsoft/visual-chatgpt/issues/235#issuecomment-1475764470 :::spoiler port 被佔用到? demo.launch(server_name="0.0.0.0", server_port=7868) Mac 系統 Port 號被佔用的解決方式(Mac Port xxx is already in use) https://israynotarray.com/other/20220117/241830554/ 如何清除系統上被佔用的Port? https://andy6804tw.github.io/2018/02/28/kill-port-macos/ Mac 找出被佔用的IP及port find IP port usage https://matthung0807.blogspot.com/2019/11/mac-find-network-port-usage.html ::: ---- - [x] 已解決 無法找到 Open Ai ||key|| 加上環境變數 ``` added this to the visual_chatgpt.py file (line 11): os.environ["OPENAI_API_KEY"] = "INSERT_YOUR_KEY_HERE" (replace with your key and save the file) ``` https://github.com/microsoft/visual-chatgpt/issues/152 ---- 但圖片編輯的部分 不能運作 - [x] 已解決 Error 1 leaked semaphore objects opt/homebrew/opt/python@3.8/Frameworks/Python.framework/Versions/3.8/lib/python3.8/multiprocessing/resource_tracker.py:216: UserWarning: resource_tracker: There appear to be 1 leaked semaphore objects to clean up at shutdown warnings.warn('resource_tracker: There appear to be %d ' 已解決,加入 ImageEditing_cpu ---- # GPT-3.5 中文缺點 作為一名人工智能語言模型,GPT-3.5 的中文理解能力已經相當出色,但它仍然存在一些缺點和挑戰。以下是一些可能的缺點: 1. 語言多樣性:GPT-3.5 的中文語料庫主要來源於標準漢語,而在中國不同地區、不同群體使用的方言和口音非常豐富,這些語言變體的多樣性可能會對模型的理解能力造成一定的影響。 2. 上下文理解:雖然GPT-3.5可以根據前面的文本來生成下一步的文本,但是它的理解能力仍然有限,尤其是在處理複雜的上下文和抽象的概念時,往往會出現誤解或錯誤的理解。 3. 語義模糊:中文作為一種語言,有時候存在語義模糊的情況,這種模糊性可能會對模型的理解和表達能力造成影響,特別是在處理文學、詩歌等具有高度文化內涵的文本時。 4. 實體識別:中文的實體識別和命名實體識別相對於英文來說更具有挑戰性,因為中文語言中沒有明確的單詞分隔符。這可能導致模型在處理實體識別時出現困難。 總之,雖然GPT-3.5在中文理解方面取得了很大的進展,但仍然需要在語言多樣性、上下文理解、語義模糊和實體識別等方面不斷完善和進步。 以上筆記文字內容由 ChatGPT 共同協作完成