1 of 32

生成式人工智慧導論

生成字體 - FontDiffuser

賴秋彤-林家弘-曾詠暄

國立臺北科技大學資訊工程系

2 of 32

目錄

2

3 of 32

目錄

  • 介紹
  • 流程

> 建立環境、專案下載、前置作業、訓練結果及推論

P.3

4 of 32

介紹

01

4

5 of 32

FontDiffuser流程

P.5

手寫體

取得權重

取得結果

微調

(樣本)

生 成

6 of 32

FontDiffuser介紹

https://github.com/yeungchenwa/FontDiffuser?tab=readme-ov-file

  • FontDiffuser,這是一種基於擴散模型圖像到圖像的一次性字體生成方法。
  • 它將字體生成學習建模為噪聲到降噪的範式,
  • 並且能夠生成沒見過的字符和樣式。

P.6

7 of 32

FontDiffuser介紹

P.7

8 of 32

FontDiffuser介紹

FontDiffuser的主要貢獻有以下四點:

一.提出 FontDiffuser

  • 基於 diffusion 的影像到影像字型生成框架�
  • 在複雜字元與大幅風格變化下達到 SOTA 表現

二.精細筆劃保留

  • 多尺度內容聚合(MCA)模組�
  • 融合不同尺度的全域與區域特徵,強化複雜筆劃表現

P.8

三.風格學習與對比強化

  • 風格對比精煉(SCR)模組�
  • 引入風格對比損失,有效處理大風格差異

四.優勢與擴展性

  • 在易、中、難字元生成任務上均優於現有方法�
  • 能泛化至未見字元與風格�
  • 支援跨語言生成(例:中文 → 韓文)

9 of 32

流程

02

9

10 of 32

fontdiffuser_finetuning

(訓練)

同學手寫體(4495字).png

manuscript_paper.txt

character.txt

1_preprocess_characters.py

稿紙(空白).pdf

s1_rotate_page.py

倉庫一 (製作稿紙)

01-1_generate_paper

倉庫二(裁切稿紙)

02-1_crop_paper

倉庫三(向量化)

02-2_pdf2svg

倉庫五(生成字)

fontdiffuser-finetune-colab

一格手寫字.png

2_generate_CP950.py

./CP950/CP950-稿紙標題.json

1_SVGtable.py

2_QR_add.py

3_SVG2PDF.py

4_PDFmerge.py

經過手寫後

稿紙(完成).pdf

s1_pdf2png.py

平板寫作

紙本寫作

整張稿紙png

s2_crop_page.py

potrace.py

一格手寫字.svg

run_pico.py

手寫字.svg

(去除黑塊)

手寫字(一包).svg

(fontpico.svg)

FontForge 打包

fontdiffuser_sample

(推論)

同學手寫體.png

merge_svgfont.py

倉庫四(打包字體)

02-3_svg2ttf

11 of 32

執行過程-訓練(微調)

P.11

2.專案下載

3.安裝所需套件並連結googledrive

5.權重檔存放於google drive中

開始訓練(微調)

(機器學習)

4.上傳Crop壓縮檔

12 of 32

FontDiffuser-Finetune 訓練

03

P.12

13 of 32

下載 ipynb

P.13

  • Colab 程式碼下載連結:
  • Fontdiffuser_Finetuning 為微調程式碼
  • Fontdiffuser_Sample 為推論程式碼

14 of 32

上傳Colab_ipynb

P.14

  • 上傳Fontdiffuser_Finetuning

15 of 32

設定Colab環境

P.15

  • 點選執行階段 → 變更執行階段類型 → 點選T4 GPU → 儲存

16 of 32

設定Colab環境

P.16

  • 點選重新連線T4

17 of 32

設定Colab環境

P.17

  • 顯示已連線就代表取得Colab虛擬機,可以開始執行程式碼

18 of 32

執行Fontdiffuser_Finetuning

P.18

  • 從Github倉庫Clone整個Fontdiffuser專案,執行完後可以看到Fontdiffuser

19 of 32

執行Fontdiffuser_Finetuning

P.19

  • 下載權重檔案結束後,會在Fontdiffuser/ckpt中會看到四個預訓練權重檔案

20 of 32

執行Fontdiffuser_Finetuning

P.20

  • 安裝Fontdiffuser所需套件,安裝完畢後需要重新啟動,點選重新啟動工作階段

21 of 32

執行Fontdiffuser_Finetuning

P.21

  • 執行掛載雲端硬碟空間,點選連接Google雲端硬碟

22 of 32

執行Fontdiffuser_Finetuning

P.22

  • 點選要掛載的Google帳戶

23 of 32

執行Fontdiffuser_Finetuning

P.23

  • 點選繼續

24 of 32

執行Fontdiffuser_Finetuning

P.24

  • 第一次會需要勾選請選擇全擇,再點選繼續

25 of 32

執行Fontdiffuser_Finetuning

P.25

  • 成功掛載後會再虛擬機硬碟中看到drive資料夾

26 of 32

執行Fontdiffuser_Finetuning

P.26

  • 上傳手寫字體壓縮檔,點選選擇檔案 → 選擇自己的手寫字體壓縮檔 → 開啟

27 of 32

執行Fontdiffuser_Finetuning

P.27

  • 執行上傳手寫字體檔案完後,在data_examples中會看到train這個是訓練集合

28 of 32

執行Fontdiffuser_Finetuning

P.28

  • 開始微調Fontdiffuser,看到輸出下面資訊有在跑動就代表成功執行了

29 of 32

執行Fontdiffuser_Finetuning

P.29

  • 每1000步會複製權重到先前掛載雲端硬碟的Fontdiffuser_finetuning_ckpt資料夾內

30 of 32

執行Fontdiffuser_Finetuning

P.30

  • 預設是放在Fontdiffuser_finetuning_ckpt中(建議不要移動後續推論會直接抓取權重檔案載入到虛擬機中,若是要移動後續推論需自行修改抓取位置)

31 of 32

聯絡資訊

04

31

32 of 32

助教聯絡資訊

P.32

  • TA Email
    • 賴秋彤 t114598033@ntut.org.tw
  • Email 標題(主旨)
    • 請按照此格式(X為作業編號) [ai2026s-hwX-學號]