Midjourney V6刷屏,但它最可怕的地方居然不是那些神圖?

Midjourney在沉寂九個月后推出了Midjourney V6,這個文生圖產品體現出的更細膩的細節處理,更強大的語言理解能力和更加“不像AI”的圖片效果在過去幾天引發一片驚呼。

作為一個閉源的模型產品,Midjourney的魔法配方并不為人所知,但就像OpenAI和Google一樣它會在產品更新時發布官方技術公告,有心人還是可以從中一窺模型能力提升的技術原理。

而我們去扒了扒它透露的信息后,發現這次更新的意義遠不止于大家曬的那一張張精美的圖片上…….

圖片

Midjourney v6生成,電影月光光心慌慌的假劇照,圖片源自reddit

圖片模型的突破,卻靠的是語言模型能力?

“Midjourney v6作為一個“文生圖”模型,此次改進的核心能力卻來自其自然語言處理能力的提升。

這首先是對提示詞理解的’跟隨能力’的提升。在其官方文檔中,這被稱為“prompt following”。簡單來說,這就是指系統對用戶輸入的提示詞的理解和響應能力。通過增強這一能力,Midjourney現在能夠更好地解析復雜的提示,無論是關鍵詞、命令還是問題,都能夠準確把握。

圖片

Midjourney v6生成,電影疤面煞星的假劇照,圖片源自reddit

第二個顯著的更新是提示詞的長度。用戶現在可以輸入更長的提示詞。這一方面得益于上面提到的模型跟蹤能力的增強,另外則依靠模型連貫性的提升。

所謂連貫性,用一個經典的故事就能解釋。A問B:“下午大掃除,你來嗎?”B說:“我去!我不去!”那么B的意思毫無疑問是不去,因為上文中的大掃除非常累,而B說的“我去!”在這里則表示驚訝,能夠準確理解這個對話,就叫連貫性。它確保了模型在處理用戶哪怕很復雜的指令輸入時,也能夠邏輯一致地響應。

圖片

Midjourney v6生成,李奧納多在網飛出演電視劇的海報,圖片源自reddit

這兩個自然語言能力上的改進,Midjourney具體是如何做的?

在跟隨能力方面的改進,主要基于三個方面:

上下文管理,它通過分析上下文關系來更準確地理解用戶意圖;序列建模,利用循環神經網絡(RNN)和長短時記憶網絡(LSTM)來捕捉對話中的長期依賴;以及交互狀態跟蹤,它持續追蹤用戶的目標、意圖和對話狀態,以確保系統響應的連貫性。

這些改進看起來就像是一個大語言模型的進化中在做的事情。

圖片

Midjourney v6生成,圣誕夜驚魂版的小丑和哈莉奎茵,圖片源自reddit

但它畢竟是個文生圖模型,也就是語言能力和圖片能力結合的模型,這其實也給它在提升能力時帶來了優勢——與語言模型的對話產品形態總是涉及隱私與所屬的問題不同,Midjourney v6生成的圖片目前來看,全部是公共資源。

也就是說你花錢買了服務以后,圖片是公共的,模型會生成兩份,你拿一份,V6的服務器(也就是V6 discoard)也拿一份。那么Midjouney可以拿這些“實戰”反過來加入到自己的預訓練大模型中,繼續訓練模型以提高性能。

圖片

Midjourney v6生成,一只貓拿著手槍,圖片源自reddit

所以這還引出一個有意思的話題,如果文生圖因此而能夠源源不斷擁有更高質量的數據來反哺到預訓練階段,而數據真的成為模型訓練的決定性因素后,是不是文生圖模型有可能訓練出比大語言模型更強的語言能力?

在連貫性提升上其實就已經有一點這個味道。對于大語言模型來說,想要提高連貫性并不簡單,涉及了多方面的因素。但是作為一個使用自然語言來生成圖片的模型,事實上簡化了過程,由于它不涉及與用戶進行持續對話,因此無需應用束搜索等啟發式算法,也無需處理自然語言生成中的后處理問題,如語法校正和風格調整。這種簡化使得Midjourney在提高連貫性方面只需專注于核心任務,從而顯著提升了其在理解和響應用戶輸入時的邏輯一致性。

圖片

Midjourney v6生成,獵魔人杰洛特與超人的結合,二者皆有同一演員亨利·卡維爾飾演,圖片源自reddit

懂視覺的模型能有更好的文字能力?

圖像模型卻靠語言能力突破,這其實已經不是第一次。此前同樣引發一陣騷動的Dalle3,也是如此。作為OpenAI的模型,背靠ChatGPT,語言能力自然更強。

在對比了兩者后我發現V6在語言理解上其實還是較DALL·E有一定差距。最明顯的地方就在于適應性上。適應性代表系統在能適應不同用戶的語言風格和表達方式,以及在面對新的或未見過的情況時保持響應連貫性的能力。可能是DALL·E背靠ChatGPT,所以在對自然語言各方面的性能上會更優異一些。

但Midjourney似乎也在瞄著ChatGPT為代表的語言模型的能力來進化。在此次的更新中,V6增加的另一個非常重要的能力,也與語言有關。Midjourney稱,其現在擁有了文本繪制能力,雖然依然較弱。

對于人工智能繪圖來說,能繪制文本無疑是一項重大進步。

圖片

文字不再是亂碼。圖源:X.com

這個能力并非像看起來那樣,直接來自模型里大語言模型的模塊。在官方更新里,文本繪制能力后緊隨的是圖像放大功能的更新。它們原理比較復雜,但本質其實是同一個問題。

圖像生成模型在訓練的時候所用的數據,是一些通過泛化和模糊處理的圖像內容。我們都知道,分辨率越高的圖片數據量越大,反之,越模糊越泛化的圖片它的數據量就越小。人工智能理解圖片的方式和人類完全不一樣,他們是按照統計學的一個概念叫做“模式識別”,通過圖片中的特征來理解。使用泛化和模糊的圖片好處在于,小數據量的圖片讀取速度快,訓練時間就短。但想要用這種訓練方式來理解文字是非常難的,因為文字是一種符號,這種泛化處理對于圖像中的文字尤其不利,即使是微小的變形或模糊都可能導致文字難以辨認。同時,訓練所使用的圖像分辨率很低,那么生成圖片時,分辨率也不會高到哪里去。

圖片

圖片上的文字與圖像整體風格融合。圖片來源:X.com

而Midjourney的訓練方法,其實就是在訓練它的圖像“放大”能力。它所使用的模型叫做去噪擴散概率模型(denoising diffusion probabilistic models),這種模型通過模擬從噪聲中提取信息的過程來生成清晰的圖像。想象一下,就像我們用軟件修復模糊的老照片,Midjourney的模型也能夠從模糊的圖像中“學習”到清晰的細節。

圖片

圖片來源:X.com

也就是說,這是像Midjourney這樣的圖像模型一直在做的事情,訓練越久優化越久它的圖像“放大”能力就越強,也就會逐漸產生關于文字的生成能力。

在直覺上,這種能力肯定不如“純粹”的語言模型的語言能力,但一些研究已經在給出不同的指向,在多模態領域很重要的模型VLMO的論文里就曾提到一個有意思的結論,當你完全拿一個在視覺數據上訓練好的模型,可以直接對文本數據建模,甚至不需要微調就可以有很強的文本生成能力。但反過來用語言訓練在視覺上生成,則差很多。

圖片

這也許就是視覺想對文字說的話。圖源:X.com

這是一種很奇怪也很有意思的現象,這一次V6似乎把它再一次輕微的展示出來了。而更重要的是在今天多模態大模型已經成為未來最重要的趨勢時,一個圖像能力為主的模型產生文字能力給了走向多模態一個新的思路。

世界更精彩了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376860.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376860.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376860.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HTTP 錯誤500.19 -Internal Server Error

HTTP 錯誤500.19 -Internal Server Error 原文:HTTP 錯誤500.19 -Internal Server Error HTTP 錯誤500.19 -Internal Server Error 錯誤代碼 0x80070021 asp.net 2009-11-05 16:54:33 閱讀484 評論1 字號:大中小 錯誤摘要 HTTP 錯誤500.19 -Internal Server Error …

連續內存分區式內存管理

目錄前言分區式內存管理動態分區內存管理總結本筆記參考黃工的https://mp.weixin.qq.com/s/k0W_LqI1zBAYC1GU1U2HQA 前言 內存管理模塊主要負責內存的初始化、分配以及釋放。 從分配內存是否連續可以分為兩大類: 1、連續內存管理 為進程分配的內存空間是連續的&a…

用DEVC++作圖

小海豚學NOIP,老師說要用DEV C。 小海豚喜歡畫圖,記得以前用C#編些程序給她看。可前一陣打開看,我的免費Visual Studio過期了。可惡的Microsoft ,不想用盜版難道就要每個月就下載一次? 于是就用DEV C的Windows調用吧。…

Python服務器開發三:Socket

Python服務器開發三:Socket socket是操作系統中I/O的延續,它可以使進程和機器之間的通信成為可能。socket可以看成一個標準的文件描述符。不同的是文件需要用open()函數打開,而socket用socket() 函數建立.recv()、send()函數和read()、write(…

Syntax error: Bad for loop variable解決辦法

在Ubuntu下寫的shell文件t.sh執行時出現錯誤: 1 t.sh: 6: Syntax error: Bad for loop variable 從ubuntu 6.10開始,ubuntu就將之前默認的bash shell更換成了dash shell,其表現為/bin/sh鏈接倒了/bin/dash,而不是傳統的/bin/bash&…

Linux命令常見

摘自: 常考的 21 條 Linux 命令 目錄)cd,切換路徑ls,查看文件與目錄的命令cp,用于復制文件mv,用于移動文件、目錄cat,查看文件內容find,文件搜索文件權限命令, 設置權限,-取消權限文本處理命令打包和壓縮文件命令進程相…

記一次調試

這是我最近幾個月來遇到的最棘手的一個問題:* 昨天花了4個小時找出第一層次的原因這個糾結啊,本來和老婆說好準時下班回家吃飯的,結果被這個問題拖了老久。這是一個gradle的plugin,用來resolve公司內部的dependency的,…

OSGi.NET 學習筆記 [模塊化和插件化][小結]

【目錄】-【模塊化和插件化】-【小結】 現在我們來對OSGi.NET的“模塊化和插件化”做一個小結,再次把官方的說明拿出來  1) 物理隔離:基于UIOSP開發的模塊是一個物理隔離的可單獨部署的模塊,每一個模塊擁有獨立的文件夾、類型空…

miniob :相關環境配置

How to build 參考視頻:https://www.bilibili.com/video/BV1gv411A7oA?spm_id_from333.999.0.0將代碼下載并且安裝編譯。 git clone失敗的話參考:https://blog.csdn.net/sxg0205/article/details/81412921 install cmakebuild libevent git submodul…

Fedora 20 配置

前幾天裝了fedora 20, 斷斷續續的進行了以下配置: 1. 安裝oracle java及jdk版本切換 安裝的過程很簡單,從oracle官網上下載jdk及jre的rpm包,使用rpm -ivh 安裝。但是遇到一個問題,因為fedora系統自帶了openJDK,如果安裝oracle的jd…

raft算法學習(一):角色概念以及選舉過程

Raft算法是強領導模型,集群中只能有一個領導。 下面是raft的視頻講解: raft raft的三種角色及其概念 服務器節點狀態一共有三種:領導者(Leader)、跟隨著(Follower)、候選人(Candid…

解決 FLex 4.0 Module里面Alert.show();出錯問題

TypeError: Error #1009: 無法訪問空對象引用的屬性或方法。 at mx.managers::PopUpManagerImpl/http://www.adobe.com/2006/flex/mx/internal::createModalWindow()[E:\dev\hero_private\frameworks\projects\framework\src\mx\managers\PopUpManagerImpl.as:701] at mx.manag…

datetime2 數據類型

.net的Entity Framework構建網站數據層,給一個實體的DATETIME類型的屬性賦值時 突然莫名奇妙顯示有一個類型不匹配的異常如下: System.Data.SqlClient.SqlException: 從 datetime2 數據類型到 datetime 數據類型的轉換產生一個超出范圍的值。 解決方法&a…

Yslow的A評級指南

這里測的是V2引擎,V1想拿A幾乎不可能,一個CDN測試的F就可以輕松廢了你的網站。 A評級 現在一個一個分析。 User fewer HTTP Requests:減少HTTP請求 圖片、CSS、JS、flash等這些都需要增加http請求數,減少這些元素的數量能減少響應…

jquery下 選擇器整理

jQuery 的選擇器可謂之強大無比,這里簡單地總結一下常用的元素查找方法 $("#myELement") 選擇id值等于myElement的元素,id值不能重復在文檔中只能有一個id值是myElement所以得到的是唯一的元素 $("div") 選擇所有的di…

git日常使用教程

目錄git日常使用git 基礎用法(本地)git branchgit checkoutgit mergegit rebaseHEAD ,在提交樹上移動相對引用強制修改分支位置撤銷變更整理提交記錄提交技巧Git TagsGit Describegit 基礎用法(遠程)git fetchgit pullgit push偏離的提交歷史,十分重要!&…

android一鍵分享功能不使用任何第三方sdk

在android中有自帶的一鍵分享功能,不過它會把所有帶分享的應用都找出來,如果我們只需要一些常見的分享應用,該如何做呢? 下面看我的效果圖(橫屏和豎屏自動適配): 接下來看我的調用(支…

包含EditText組件的界面中,禁止自動彈出軟鍵盤

解決方法: 1)在Manifest.xml文件中相應的activity下添加一下代碼:android:windowSoftInputMode"stateHidden"2)讓EditText失去焦點,使用EditText的clearFocus方法 例如:EditText edit(EditText)f…

gcc 編譯器使用指南

目錄安裝準備test.cpp編譯g 編譯參數-g :編譯帶調試信息的可執行文件-O[n] :開啟優化-l 和 -L :指定庫文件 | 指定庫文件路徑-I :指定頭文件搜索目錄-Wall 和 -w:打印警告信息 | 關閉警告信息-stdc11 :設置…

bug found:定義對象時

看下面代碼 class Test{ }; class Test2{public:Test2(Test *t){}};int main(){Test test();//把定義一個對象 “Test test;” 寫成 “Test test();”函數聲明了!Test2 test2(&test);//return 0;}Dev-cpp的提示信息: no matching function for c…