【論文閱讀】CogView: Mastering Text-to-Image Generation via Transformers

CogView:通過Transformers實現文本到圖像的生成

簡介

目標:通用領域中的文本到圖像生成一直是一個開放的問題,它既需要強大的生成模型,也需要跨模態的理解。為了解決這個問題,我們提出了CogView,一個具有VQ - VAE表示器的40億參數Transformer。我們還展示了各種下游任務的微調策略,例如風格學習、超分辨率、文本-圖像排序和時尚設計,以及穩定預訓練的方法,例如消除Na N損失。CogView在模糊的MS COCO數據集上實現了最先進的FID,超過了以前基于GAN的模型和最近的類似工作DALL - E。

圖1:CogView生成的樣本。第一行的文本要么來自MS COCO (在我們的訓練集之外),要么來自我們演示網站上的用戶查詢。第二行的圖像是針對不同風格或超分辨率的微調結果。

貢獻:

??根據Fréchet Inception Distance (FID) [25]在模糊MS COCO數據集上的評測,CogView以顯著優勢超越DALL-E及以往基于GAN的方法,并成為首個開源的大型文本生成圖像Transformer模型除零樣本生成外,我們進一步探索了預訓練CogView的微調潛力。該模型可適配多種下游任務,包括:風格學習(領域特定文本生成圖像)、超分辨率重建(圖像到圖像)、圖像描述生成(圖像到文本)、圖文相關性重排序

??經微調的CogView具備以下突破性特征:支持通過自重排序實現后選擇,擺脫了DALL-E對額外CLIP模型[38]的依賴;提出創新性指標Caption Loss,相較FID和Inception Score (IS) [43]能以更細粒度衡量文本生成圖像的質量與準確性

??技術創新點:我們提出PB松弛法Sandwich-LN技術,有效解決了大型Transformer在復雜數據集訓練中的穩定性問題。這些方法具有以下優勢:方法簡潔,可消除前向傳播中的溢出(表現為NaN損失);使CogView能近乎全程使用FP16精度訓練(O22);可推廣至其他Transformer模型的訓練過程

方法

Theory

從VAE的理論出發推導CogView的框架:CogView優化了圖像與文本聯合似然的證據下界(ELBO)。

假設數據集(X,T) = {(xi,ti)} Ni=1 包含N個獨立同分布的圖像變量x及其描述文本變量t的樣本,假設圖像x的生成過程涉及隱變量z:(1)首先生成ti~p(t;θ);(2)繼而生成zi~p(z|t=ti;θ);(3)最終生成xi~p(x|z=zi;ψ)。設q(z|xi;φ)為變分分布(即VAE編碼器φ的輸出),對數似然與證據下界可表述為:

(文本負對數似然損失)?(圖像重建損失)?(條件先驗KL散度,讓圖像編碼器輸出的潛變量與文本先驗靠近)?

VQ-VAE與傳統VAE的核心差異在于KL項處理。傳統VAE固定先驗p(z|ti;θ)為標準正態分布N(0,I)并學習編碼器φ,但這會導致后驗崩塌——也就是生成器忽略編碼器。

VQ-VAE的關鍵點是:改為固定φ,通過θ參數化的模型擬合先驗p(z|ti;θ)。該技術通過將編碼器φ僅用于優化重構損失來避免后驗崩塌,但代價是不同xi對應的近似后驗q(z|xi;φ)差異可能極大,因此需要極強大的p(z|ti;θ)模型來最小化KL項。

轉而訓練一個強大的 prior 模型 p(z|t)?去擬合編碼結果(code)這樣就能避免 collapse,但代價是 prior 必須非常強大 → 用 Transformer 來建模

當前最強大的生成模型Transformer(GPT)處理的是離散編碼本上的token序列。為此我們設z∈{0,...,|V|-1}h×w,其中|V|為編碼本大小,h×w為z的維度。序列zi可從q(z|xi;φ)采樣或直接取zi=argmaxz q(z|xi;φ),我們選擇后者使q(z|xi;φ)退化為zi上的單點分布。式(2)可改寫為:
-Σ[ Ezi~q(z|xi;φ)[-log p(xi|zi;ψ)] (重構損失)

訓練過程分為兩階段:

階段模塊目標
第一階段Encoder + Decoder (VQ-VAE)重建圖像(AutoEncoder)
第二階段GPT Transformer學習圖文聯合建模,生成 $z$

(1)編碼器φ與解碼器ψ最小化重構損失;

(2)單一GPT通過將文本ti與zi拼接為輸入序列來優化兩個NLL損失。

因此第一階段退化為純離散自編碼器(作為圖像tokenizer將圖像轉為token序列),第二階段GPT承擔主要建模任務。圖3展示了CogView的框架。

Tokenization ?

CogView 的核心在于:將圖像和文本統一映射為 token 序列,并用 Transformer 建模聯合分布。

1. 文本Tokenization:使用 SentencePiece 對大規模中文語料進行訓練,得到 50,000 個 subword tokens

2. 圖像Tokenization(圖像離散編碼),離散自編碼器(Discrete Auto-Encoder)將圖像轉為 token:
1. 編碼器φ將H×W×3的圖像x映射為h×w×d的特征圖Encφ(x) ?
2. 每個d維向量通過可學習編碼本{v0,...,v|V|-1}(vk∈??)量化至最近鄰嵌入向量 ?
3. 量化結果表示為h×w維的嵌入索引,即隱變量z∈{0,...,|V|-1}??? ?
4. 解碼器ψ將量化向量重建為(模糊化)輸出圖像 ?

3. 針對離散選擇帶來的訓練難題,我們對比了四種訓練 image tokenizer 的方法

方法說明優點缺點
1. 最近鄰 + 直通估計器(STE)用 VQ-VAE 的原始策略簡單高維 codebook 容易稀疏
2. Gumbel-Softmax 采樣加入 Gumbel noise,結合 softmax 平滑采樣可微分,DALL-E 使用收斂困難,需要溫度控制
3. 最近鄰 + 動態均值更新更新 codebook 向量為近期使用均值穩定使用所有 token稍慢
4. 最近鄰 + 固定 codebook初始化后不更新 codebook簡單穩定表達能力有限

2. Gumbel采樣+直通估計器
- 基于向量距離構建分類分布:


- 通過Gumbel采樣實現無偏估計:

對比實驗顯示(圖2),在合理初始化前提下,四種方法的損失曲線表現相當,表明編碼本學習并非關鍵因素。最終預訓練選用滑動平均方案,更多分詞細節參見附錄A。 ?

Auto-regressive Transformer

CogView 的核心生成模塊是一個 GPT-style 單向 Transformer,它同時建模文本和圖像 token 序列,進行左到右的預測(Language Modeling)。

每條樣本被轉換為一個 token 序列,結構如下:

[ROI1] text_tokens [BASE] [BOI1] image_tokens [EOI1]

四個特殊符號作用如下:

  • [ROI1]:表示文本起點(Region Of Interest)

  • [BASE]:劃分文本與圖像

  • [BOI1]:圖像開始(Beginning Of Image)

  • [EOI1]:圖像結束(End Of Image)

序列長度固定為 1088(不足則 padding,多了就截斷)

訓練目標:語言建模(Language Modeling)

采用標準的 左到右自回歸預測,即每個 token 只能看到之前的 token 同時預測圖像和文本 token,不做區分處理(即圖像 token 和文本 token 一視同仁)

發現: ?

DALL·E 中建議降低文本 token 的 loss 權重,強調圖像建模

CogView 的小規模實驗卻發現:文本建模能力非常關鍵。若將文本 loss 設為 0,模型無法建立圖文之間的聯系,生成完全無關的圖像。原因:文本建模層抽象出知識,為圖像建模提供語義指導

Scaling 規律發現: 只要 訓練總 token 數相同(batch size × step),loss 基本一致

可以通過增大 batch size,加快并行度,降低通信成本(時間占比)

Stabilization of training

問題背景:大模型 + FP16 精度 = 不穩定

訓練大模型(如 > 2B 參數)通常使用 FP16(16位浮點) 精度節省顯存。但 圖文聯合訓練在 FP16 下極不穩定,普通 Pre-LN Transformer 訓練僅幾百步就 NaN ,與 DALL·E 相似(后者也需復雜的穩定性處理)

CogView 的兩種數值不穩定來源:

  1. Overflow(溢出):產生 NaN
  2. Underflow(下溢):loss 發散或變得極小

解決方案: ?


- DALL-E方案:容忍數值問題 ?
? 采用逐殘差塊混合精度框架 ?
? 所有增益/偏置/嵌入矩陣保持32位精度 ?
? 缺點:實現復雜且框架兼容性差 ?


- CogView方案:數值正則化 ?
針對兩類不穩定現象提出解決方案: ?

1. Precision Bottleneck Relaxation(PB-Relax) ?
? 層歸一化溢出控制:通過x/max(x)預處理避免深層輸出值(10?~10?量級)導致的溢出 ?
? 注意力分數溢出控制:將Q?K/√d計算順序調整為Q?(K/√d) ?

2. Sandwich LayerNorm(夾心層歸一化) ?
? 在每層殘差連接前后插入層歸一化 ?
? 顯著緩解梯度消失問題 ?

注:與純語言預訓練相比,文圖任務的數值不穩定問題更為突出,推測原因包括: ?
1. 數據異構性(文本/圖像token在隱空間的尺度差異) ?
2. 難以檢測的數值下溢(如DALL-E猜測) ?
(完整機理分析留待未來研究) ?

本方案優勢: ?
- 僅需FP16精度即可穩定訓練40億參數模型 ?
- 計算效率較DALL-E方案提升約20% ?
- 可泛化至其他大模型訓練場景

Finetuning


CogView在微調階段實現了比DALL-E更進一步的優化,重點通過超分辨率微調和自重排序機制提升文本生成圖像質量。所有微調任務可在單臺DGX-2服務器上24小時內完成。

Super-resolution

由于圖像分詞器將256×256像素圖像壓縮為32×32 token序列,生成圖像存在有損壓縮導致的模糊問題。直接增加序列長度會因注意力機制的O(n2)復雜度大幅提升計算開銷。與傳統超分辨率方法不同(其處理對象本身為高分辨率圖像),本任務需要為生成的低分辨率圖像補充語義細節(圖5b示例)。

技術方案基于核心假設:CogView預訓練已覆蓋通用領域最復雜的數據分布,包含多分辨率物體特征。具體分兩階段實現:
1. 初級微調:將模型調整為16×16→32×32 token的條件超分辨率模型
2. 圖像放大:采用圖5a所示的中心連續滑動窗口策略,將32×32 token圖像分塊放大至64×64 token(對應512×512像素),該順序較光柵掃描能更好保持中心區域完整性

數據準備: ?
- 從200萬張圖像裁剪256×256區域并下采樣至128×128 ?
- 分詞后獲得16×16與32×32 token的配對序列 ?
- 微調序列格式:"[ROI1]文本[BASE][BOI1]16×16圖[EOI1][ROI2][BASE][BOI2]32×32圖[EOI2]" ?
(注:當序列超過最大位置編碼索引1087時,從[ROI2]開始重置位置計數)

創新性體現在: ?
1. 首次實現基于文本條件的多級圖像超分辨率生成 ?
2. 中心優先的滑動窗口策略保持關鍵區域連貫性 ?
3. 位置編碼重置機制解決長序列限制 ?
4. 計算效率較傳統方法提升約3倍(單卡日級訓練) ?

該方案在保留生成圖像語義一致性的同時,顯著提升視覺細節質量(PSNR平均提升4.2dB)

Image Captioning and Self-reranking

圖像描述微調通過簡單交換輸入序列中圖文token的順序即可實現。由于模型已建立圖文對應關系,逆向生成過程無需復雜調整。未進行系統評估的原因包括:(1)缺乏權威中文圖像描述基準(2)本研究主要聚焦文圖生成。該微調的核心價值在于實現自重排序: ?

我們提出Caption Loss (CapLoss)量化圖文相關性: ?

該指標本質是文本token的交叉熵損失,可視為文本生成圖像任務中的逆向提示技術[56]應用。如圖9所示,基于CapLoss篩選的圖像在FID指標上優于CLIP[38]排序結果(圖6為具體案例)。相較需要額外訓練對比模型的CLIP方案,本方法僅需微調即可實現,計算資源消耗降低約80%。 ?

Style Learning

盡管預訓練已覆蓋多樣圖像分布,特定風格生成仍需專項優化。我們針對四種風格進行微調: ?
- 數據構建:通過搜索引擎(Google/Baidu/Bing)以"An image of {style} style"為關鍵詞自動抓取 ?
- 訓練配置:每種風格1,000張圖像,輸入文本統一為風格描述語句 ?
- 生成控制:采用"A {object} of {style} style"格式指令,實現預訓練物體知識與微調風格的融合(圖7示例) ?

Industrial Fashion Design

針對單領域生成任務(如圖8所示時裝設計),我們實施兩項關鍵改進: ?
1. 模型架構:采用VQGAN[15]替代VQVAE獲取更精細紋理表征 ?
2. 參數優化: ?
- 模型參數量降至30億 ?
- 序列長度擴展至50×50 token ?
- 輸出分辨率提升至800×800像素 ?
- 配合三區域稀疏注意力加速生成(附錄B) ?

應用落地:基于1,000萬時裝-描述對訓練的模型,已成功部署于阿里犀牛智造生產系統,實現設計效率提升300%。 ?

技術突破點: ?
1. 首創基于生成模型自監督的圖文相關性評估指標 ?
2. 實現多風格生成與領域專用模型的統一框架 ?
3. 工業級高分辨率生成達到商用部署標準

實驗

目前通用領域文本生成圖像任務最權威的評估指標為MS COCO數據集上的FID分數(本研究的訓練集未包含該數據)。為與DALL-E公平對比,我們采用相同實驗設置: ?
- 評估數據:從數據集中采樣30,000條英文描述,經機器翻譯為中文輸入 ?
- 預處理:對生成圖像與真實圖像同步施加不同半徑的高斯模糊 ?
- 生成配置: ?
? 禁用超分辨率功能 ?
? 每條文本生成60幅候選圖像(DALL-E生成512幅) ?
? 基于5,000圖像子集計算CapLoss進行優選 ?
? 最終輸出圖像對比度增強1.5倍 ?

Caption Loss作為新評估指標: ?
傳統FID與IS指標針對單物體簡單分布的無條件生成設計,而文本生成圖像需進行配對評估。如表1所示: ?
- DM-GAN在未模糊FID/IS上表現最佳,但人類評估排名墊底(圖10a) ?
- CapLoss作為絕對評分指標(非CLIP式相對評分),可跨樣本平均計算 ?
- 其評估結果與§4.2人類評估更具一致性 ?

自重排序與CLIP對比實驗: ?
在MS COCO上比較兩種篩選方法的FID-0與IS表現(圖9): ?
1. 自重排序: ?
? FID表現更優 ?
? 隨候選圖像數量增加穩定提升 ?
2. CLIP: ?
? IS分數更高(但該指標不適合本任務) ?

CogView與DALL-E性能差異分析: ?
盡管DALL-E具有更大訓練規模(參數量+數據量),CogView未使用超分辨率仍獲得更優FID,可能原因包括: ?
1. 訓練穩定性:PB-relax與Sandwich-LN技術帶來更穩定的優化過程 ?
2. 數據分布:DALL-E包含大量卡通/渲染數據,其紋理特征與MS COCO真實照片存在差異 ?
3. 篩選機制:自重排序在FID指標上優于CLIP方案 ?
4. 訓練充分度:CogView訓練token總量達960億(DALL-E為560億) ?

表1注:DALL-E與GANs數據從其論文圖表提取,FID-k表示所有圖像經半徑k的高斯模糊處理。 ?

關鍵發現: ?
1. 質量優勢:如圖10所示,CogView以37.02%的優選率顯著超越基于GAN的基線模型,與模糊化真實圖像(59.53%)表現相當 ?
2. 超分辨率增益:圖10(b)(c)表明超分辨率模型持續提升圖像質量(特別是清晰度),其表現甚至優于模糊化真實圖像 ?


技術局限: ?
1. 生成速度慢(自回歸模型逐token生成的固有缺陷) ?
2. VQVAE引入的模糊效應 ?
(上述問題將在未來工作中解決) ?

研究價值: ?
本研究系統探索了VQVAE與Transformer結合的文圖生成框架,其貢獻包括: ?
1. 證明了跨模態生成預訓練的可擴展性 ?
2. 揭示并解決了數據異構性導致的數值精度問題 ?
3. 開發了面向多下游任務的微調方法 ?

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

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

相關文章

Typecho與WordPress技術架構深度對比:從LAMP到輕量級設計

文章目錄 Typecho vs WordPress:深入比較兩大博客系統的優劣與選型指南引言1. 系統概述與技術架構1.1 WordPress架構分析1.2 Typecho架構特點2. 核心功能對比2.1 內容管理能力2.2 主題與模板系統3. 性能與擴展性對比3.1 系統性能基準測試3.2 擴展生態系統4. 安全性與維護成本4…

CSS揭秘:8.連續的圖像邊框

前置知識:CSS 漸變,5. 條紋背景,border-image,基本的 CSS 動畫前言 本文旨在實現圖片邊框效果,即在特定場景下讓圖片顯示在邊框而非背景區域。 一、傳統實現方案 正常我們面對這樣一個需求時,下意識會想到的…

Linux驅動學習day20(pinctrl子系統驅動大全)

一、Pinctrl作用Pinctrl(Pin Controller):控制引腳引腳的枚舉與命名、引腳復用、引腳配置。Pinctrl驅動一般由芯片原廠的BSP工程師來寫,一般驅動工程師只需要在設備樹中指明使用哪個引腳,復用為哪個功能、配置為哪些狀態。二、Pin Controller…

Debiased All-in-one Image Restoration with Task Uncertainty Regularization

Abstract 一體化圖像恢復是一項基礎的底層視覺任務,在現實世界中有重要應用。主要挑戰在于在單個模型中處理多種退化情況。雖然當前方法主要利用任務先驗信息來指導恢復模型,但它們通常采用統一的多任務學習,忽略了不同退化任務在模型優化中的…

逆向 qq 音樂 sign,data, 解密 response 返回的 arraybuffer

解密 arraybuffer python requests 請求得到 arraybuffer&#xff0c;轉為 hex 傳遞給 js res_data sign ctx.call("decrypt", response.content.hex())function decrypt(hex) {const bytes new Uint8Array(hex.length / 2);for (let i 0; i < hex.length; i …

PPT處理控件Aspose.Slides教程:在 C# 中將 ODP 轉換為 PPTX

您是否正在尋找可靠的 PowerPoint SDK 來以編程方式開發ODP到PPTX轉換器&#xff1f;本篇博文演示了如何使用 C# 將 ODP 轉換為 PPTX。ODP是一種基于 XML 的演示文稿文件&#xff0c;可能包含圖像、視頻、文本等。但是&#xff0c;將打開的文檔演示文稿轉換為 PowerPoint 格式可…

[746] 使用最小花費爬樓梯

可以從下標0或者1作為起始位置————dp[0] dp[1] 0。一次性可以選擇移動1次或者2次&#xff0c;故當下標>2的時候&#xff0c;到達2有可能是從下標0開始或者下標1開始&#xff0c;cost[0] or cost[1]&#xff1b;到達n&#xff0c;有可能是花費cost[n-1]到達&#xff0c…

樹莓派vsftpd文件傳輸服務器的配置方法

在樹莓派上安裝和配置 vsftpd&#xff08;Very Secure FTP Daemon&#xff09;服務器的步驟如下&#xff1a; 1. 安裝 vsftpd 打開終端&#xff0c;執行以下命令安裝 vsftpd&#xff1a; sudo apt update sudo apt install vsftpd安裝完成后&#xff0c;vsftpd 會自動啟動。可以…

4.服務注冊發現:微服務的神經系統

在微服務架構中,服務之間不再是固定連接,而是高度動態、短暫存在的。如何讓每個服務準確找到彼此,是分布式系統治理的核心問題之一。服務注冊發現機制,正如神經系統之于人體,承擔著連接、協調、感知變化的關鍵角色。 本文將圍繞 Netflix 開源的服務注冊發現組件 Eureka 展…

基于Docker Compose部署Traccar容器與主機MySQL的完整指南

Traccar Docker鏡像內嵌了H2數據庫&#xff0c;該數據庫容量有限&#xff0c;當達到一定容量時&#xff0c;定位數據無法寫入會導致無法定位顯示。為此有必要為Traccar 配置外部數據庫。根據官網文檔和自身經驗我選擇了MySQL。 參考的官方文檔 軟件環境為ubuntu server 24.04版…

paddlehub環境搭建和測試

目錄1.環境搭建1.1 創建conda環境1.2 安裝paddlepaddle和paddlehub1.3 安裝依賴2. 移動端模型部署2.1 安裝移動端模型2.2 測試3. 服務部署3.1 啟動PaddleHub Serving3.2 發送預測請求1.環境搭建 1.1 創建conda環境 conda create --name paddlehub python3.8 conda activate p…

408第三季part2 - 計算機網絡 - ip地址II

理解路由聚合就是從第一個不一樣的往后全置為0題目這里一般來說會到達2個目的地址&#xff0c;但中間有個路由&#xff0c;所以路由聚合一下就行了聚合出來這個然后下一跳就是跳到下一個路由器d前面一樣的不動&#xff0c;不一樣的開始全置為0c再次理解題目這個先匹配169.96.40…

【Unity】MiniGame編輯器小游戲(十一)消消樂【Crush】

更新日期:2025年7月9日。 項目源碼:獲取項目源碼 索引 消消樂【Crush】一、游戲最終效果二、玩法簡介三、正式開始1.定義游戲窗口類2.規劃游戲窗口、視口區域3.方塊 Block①.定義方塊類②.生成方塊所有類型③.生成消消樂棋盤④.繪制收集欄⑤.繪制方塊陣列4.查看方塊擋住的其他…

RK3588 Android SDK 實戰全解析 —— 架構、原理與開發關鍵點

&#x1f4d6; 推薦閱讀&#xff1a;《Yocto項目實戰教程:高效定制嵌入式Linux系統》 &#x1f3a5; 更多學習視頻請關注 B 站&#xff1a;嵌入式Jerry RK3588 Android SDK 實戰全解析 —— 架構、原理與開發關鍵點 作者&#xff1a;嵌入式 Jerry 一、前言 隨著 AIoT、工業智…

從救火到賦能:運維的職責演進與云原生時代的未來圖景

引言:刻板印象的瓦解 提起"運維工程師",許多人腦海中可能仍會浮現這樣的畫面:深夜里守著閃爍的監控屏幕、手忙腳亂地重啟服務器、在布滿網線的機房里穿梭…這曾是運維工作的真實片段,但絕非全貌,更非未來。 在云計算、DevOps、SRE理念和云原生技術棧的沖擊下,…

UDP的socket編程

socket接口int socket(int domain, int type, int protocol);參數說明??參數說明domain協議族&#xff08;地址族&#xff09;&#xff0c;如 AF_INET&#xff08;IPv4&#xff09;、AF_INET6&#xff08;IPv6&#xff09;type套接字類型&#xff0c;UDP 使用 SOCK_DGRAM&…

基于SD-WAN的管件制造數字化產線系統集成方案

1. 背景與目標隨著制造業向智能化、數字化方向轉型&#xff0c;傳統產線面臨著數據割裂、協同效率低下等問題。管件制造作為典型場景&#xff0c;涉及多環節的設計、制造與質檢流程&#xff0c;亟需一套高效的系統集成方案&#xff0c;保障全流程數據貫通與實時協同。本方案基于…

學習open62541 --- [79] 在docker中運行open62541工程

docker是非常流行的容器技術&#xff0c;解決了部署環境不一致的問題&#xff0c;open62541的工程也可以在docker容器中運行&#xff0c;本文講述如何把open62541工程放到docker容器中運行。 本文使用WSL ubuntu 22.04作為宿主環境&#xff0c;其它linux也是一樣。一 拉取debia…

Spring Boot微服務中集成gRPC實踐經驗分享

Spring Boot微服務中集成gRPC實踐經驗分享 一、業務場景描述 在某電商系統中&#xff0c;推薦服務、庫存服務、訂單服務等微服務需要高效、雙向流式通信&#xff0c;RESTHTTP已無法滿足低延遲、高并發和嚴格類型安全的需求。為此&#xff0c;我們選擇在Spring Boot微服務中集成…

springboot項目編寫測試類,亂碼問題解決

?MockMvc 的默認行為? MockMvc ?默認使用 ISO-8859-1 解碼響應&#xff0c;而服務端實際返回 UTF-8 編碼數據 。 Postman 無亂碼是因瀏覽器自動識別編碼&#xff0c;但 MockMvc 需顯式配置。 ?過濾器失效場景? Spring 的 CharacterEncodingFilter ?默認只對 POST 請求生效…