返回作品列表
AI 工具 · 桌面應用 · 個人獨立開發 開發中

ZeroCel

AI 輔助 2D 動畫中割工具

讓動畫師專注在最關鍵的畫格,把繁瑣重複的中割工作交給 AI——而且,主導權始終在人的手上。

類型
桌面應用程式
平台
Windows 10 / 11
前端 / 後端
C# .NET 10 WPF · Python 3.14 FastAPI
程式規模
C# 約 23,700 行 + 6,600 行 XAML · Python 後端約 17,300 行
核心理念
Human-in-the-loop
目前狀態
功能完整 · 授權已解除 · 等自研模型把品質做上去
ZeroCel 主工作介面

目前狀態:授權障礙已解除,但仍刻意暫不發行

產品面已可打包成自含式安裝檔並實際運行。原本擋住發行的是「AnimeInbet 僅授權非商用,而核心的 Hybrid 引擎以它為基線」——2026/08 這個障礙已經解除:量測顯示新版 RIFE 在大動作上已經全面勝過 Hybrid,那兩個引擎因此直接從產品移除,剩下的依賴授權全部乾淨。現在不發行的理由只剩一個:中割品質。目標使用者是靠作品吃飯的職業動畫師,在自研模型把品質帶到他們真的用得下去之前,我不想把一個「能跑但不夠好」的東西送到他們手上。決策過程見下方「授權評估」,自研進度見「自研中割模型」。

為什麼做這個

把勞力交給 AI,把藝術決策留給人

傳統手繪 2D 動畫一秒 24 格。動畫師畫的是原畫——動作的起點、最高點、落地點;中間的中割再補上去。三張原畫之間可能要補二十張,而那二十張幾乎沒有創作空間,純粹是體力活。這是最耗時、最重複,也最容易消磨創作熱情的環節。

近年的 AI 影格插值技術理論上能自動生成中割,但對動畫師來說有個致命問題:純自動化會奪走「意圖」的控制權。動作的快慢節奏、誇張與收斂、骨架的走向,這些都是動畫師的表演語言,不該交給黑箱決定。

ZeroCel 想回答的問題是:能不能讓 AI 承擔勞力,又把每一個藝術決策的最終決定權留給人?
專案概述

雙進程架構,CLI 與 GUI 平行客戶端

工作流:匯入原畫(PNG / PSD / 影片抽幀)→ AI 生成中間張 → 人工檢視修正 → 回饋自動學習 → 匯出 PNG 序列 / GIF / MP4。

整體採 C# WPF 前端 + Python FastAPI 後端雙進程架構,透過 HTTP REST(同步操作)與 WebSocket(推論 / 訓練進度推播)在本機通訊。前端啟動時自動偵測並拉起後端,前端結束時自動終止後端進程。CLI 與 GUI 被設計成後端的「平行客戶端」,彼此獨立而不互相依賴。

規模:C# 約 23,700 行 + 6,600 行 XAML;Python 後端約 17,300 行(34 個 API 端點);CLI 約 8,000 行;自研模型管線約 21,900 行;自動化測試三套全綠——後端 237 項、CLI 139 項、自研模型 17 組構造自驗。

後端 · 雙引擎 + 智能派工

針對不同動作與線稿,兩個互補的推論引擎

原本有四個引擎,其中兩個在 2026/08 移除——不是因為授權妥協,而是量測顯示它們已經沒有存在的理由(見下方「授權評估」)。派工架構保留,被派工的對象未來會逐步換成自研模型。

引擎原理適用場景
RIFE v4.18 光流插幀(PyTorch, IFNet_HDv3) 平滑連續的小動作補幀,全彩/線稿通用,速度最快;支援 t 外推做 overshoot。
TPS 骨架偵測 + Thin Plate Spline 網格變形(scipy RBF) 人物中割,支援部位鎖定與人工骨架編輯。

骨架偵測支援三種後端(MediaPipe / RTMPose / DWPose,17 或 33 點 COCO),模型尺寸 s/m/l 可選。

1

AutoRouter 自動派工

純 CPU 邏輯、可獨立測試的決策核心:素材判定(依明暗比例、飽和度、線稿乾淨度分類)→ 動作粗估(取兩張前景墨線遮罩的質心,算歐氏距離並正規化到影像對角線:小動作與大動作都走 RIFE、髒線稿走 TPS)→ 輸出完整派工計畫。動畫師可以先預覽派工計畫、確認後才送推論——一鍵智慧調度負責省事,「進階面板」永遠保留完整手動控制。

2

派工以圖層為單位

推論不是對整張合成圖做的,而是逐圖層進行,派工只看該層的像素——角色層與背景層各自會拿到適合自己的引擎,而不是被整張合成圖的平均特徵拖著走。

AI 個人化 · 自動微調閉環

整個過程不打斷工作流

1

隱式回饋收集

動畫師「鎖定 AI 原版/鎖定編輯版/刪除」的行為被記錄為訓練訊號,鎖定視為認可、刪除視為否決——不需要另外填任何評分。

2

自動排程與資源讓步

累積 ≥20 筆回饋、距上次 ≥6 小時、同日訓練 <2 次,於閒置時自動觸發(≥50 筆走緊急路徑,可 bypass 時間節流但仍須通過其餘檢查);動畫師一開始推論,訓練立即讓出 GPU

3

Delta 增量訓練,不堆疊

三元組(A, GT, B),Charbonnier loss + 負樣本 hinge loss,線稿素材另加墨線加權;每次都從基底模型重新以 delta 增量訓練——不堆疊,避免個人化讓品質悄悄退步。

4

驗收 Gate 與三層 delta

每一次微調都要通過 holdout 考古題驗收(相對改善 ≥5%);首次微調沒有既有 delta,對照組即為純 base 模型。考題池建不起來時一律判定失敗,不放行。三層 delta 持久化:pending.delta(驗收中)→ active.delta(生效)→ previous.delta(rollback 用);上線後由 implicit gate 持續監控刪除率,突增則自動回滾。

一個改對過的設計錯誤

初版的邏輯是「首次微調沒有對照組,所以免考直接套用,再靠刪除率監控」。聽起來合理,實際出了事故:首次免考 + holdout 池建不起來,等於把一個從未驗證過的模型直接套到使用者身上。修正是把「池空」從免考通過改成必定失敗,並讓首次微調的對照組取純 base 模型。「缺少驗證資訊時,預設該通過還是該失敗」是一道有明確答案的安全設計題——預設值要落在保守的那一邊。

前端 · WPF 動畫工作站

動畫師的控制權,落實到每一層

TimelineView / VM多軌時間軸、FPS、曝光格、多選框選、音軌波形(NAudio)與對齊。
CanvasView / VM畫布繪圖(筆刷 / 圖層)、洋蔥皮疊加、縮放平移、骨架編輯模式。
AiPanelView / VMAI 中割面板:推論會話、引擎 / 模型選擇、骨架偵測與編輯、中割風格曲線。
匯入匯出影片抽幀匯入對話框、MP4 / GIF 匯出、批次匯出視窗。
微調管理模型切換、微調清單管理、個人化參數與排程狀態。
1

骨架關鍵點鎖定 + 手動編輯

六組可勾選的部位(頭部 / 左臂 / 右臂 / 軀幹 / 左腿 / 右腿)+ A/B 錨點,在畫布上以骨架疊圖即時呈現,動畫師可逐點開關;TPS 引擎依鎖定點保持該部位不變形。動畫師也可直接在畫布拖拉骨架節點,引擎跳過自動偵測改用人工座標。

2

中割風格系統

Smooth / Exaggerated / Mechanical / 自訂 Bezier 曲線(BezierEditorView)直接對應動畫表演的不同節奏,轉為自訂 t_values 送後端。

3

Quick Flip · 模擬手翻紙檢查動作

按住 F 鍵 ±2 格鐘擺播放,模擬動畫師手翻紙檢查動作。

4

失敗要明講

推論輸出接近空白時(大動作下確實會發生,量測見下節),介面直接提示「動作幅度可能過大,建議改用其他引擎或手動處理」,而不是默默交出一張白圖

5

DrawingId 中心的儲存

LayerStore(各圖層像素,真相源)+ FrameStore(合成快取)分離。動畫的「一拍二」「一拍三」意味著同一張畫會曝光在多個格子上;若以格號當識別,同一張畫會被複製多份、編輯時就會不同步。改以 DrawingId 索引後,改一張畫則所有曝光到它的格子同時更新——這與動畫師的曝光表心智模型一致。

6

.zcel 專案格式 + 自動存檔

ZIP 容器內含 project.json、圖層 PNG、音軌、可選微調 delta.pt(載入時逐 entry 驗證路徑,防範 Zip Slip)。操作計數 + 閒置計時雙觸發、雙緩衝(autosave.zcel + .bak)、CrashRecoveryDialog。

CLI · 打包 · 研究區

從實驗到交付的完整鏈路

CLI 平行客戶端:中割生成、批次處理、匯出影片都能不開 GUI 完成。

打包發佈:自含式安裝——內嵌完整 Python 環境 + 全部套件 + 模型檔,使用者免裝任何依賴;以 Inno Setup 產生單一安裝檔,一鍵指令即可完成改版重建。安裝檔隨時可產出,暫不對外發行的理由見下方「授權評估」。

研究區:產品背後的實驗與訓練場——SIGGRAPH 2024 線稿向量化與 ICCV 2023 線稿中割論文的實作與再訓練,早期產品引擎的權重即出自這裡;各實驗環境彼此隔離,不污染產品環境。這條線的產出技術上有效,但商業上走不通,它現在的定位是自研模型的對照基線與經驗來源,而非產品的未來。

現在的主線

自研中割模型:從「不得不做」變成「為了做得更好」

目標是訓練一個吃真實手繪三元組、能在任意時間點生成中割的自有模型。訓練樣本是(原畫 A, 手繪中割, 原畫 B)+ t,而 t 取自律表上的真實格號——這是唯一能告訴模型「這張中割落在動作的哪個時間點」的資訊。

真實素材到位前,先用程序化合成資料(3D 骨架 → 線稿渲染,含轉面遮擋)把整條訓練管線驗證過一輪:花費 US$0、全在本機、給定 seed 完全可重現。

這一輪最有價值的產出不是模型,是三次推翻自己的結論。

指標本身要先用構造出的已知答案驗證過,才能拿它做決策

主指標(F1@2px)對「把墨塗滿」是加分的——早期看到的「進步」全是塗抹換來的。

同一個 epoch 數在不同資料量下意義完全不同

沿用產品端的 epoch 數,實際每個樣本只跑了 4 步梯度(單樣本收斂需 ~400 步)。該看的是每樣本步數。

教不了一個還畫不準的模型做精細控制

三種控制訊號全被模型無視;量測後發現模型自身誤差(3.2)是該分辨訊號(0.93)的三倍多。這是順序問題,不是技術問題。

目前站得住的正面結果:墨線加權 + 補足訓練步數後,大動作的 ok 率 40.3% → 50.7%、precision +55%,且經目視確認不是靠塗抹換來的。小動作上未微調的 base 仍較好——因此上線後仍應依動作幅度分派。

1

線稿塌陷

純像素損失在線稿上會讓微調後的模型輸出全白——因為線稿 99% 是白底,「交白卷」就是損失函數的最小解。陰險的是訓練 loss 一路下降、SSIM 甚至上升,只看曲線完全發現不了。修法是加入墨線加權的 Charbonnier loss,並在驗收時額外檢查線量。

2

默默交出白圖

量測發現 base RIFE 在大動作上有 15% 的輸出幾乎空白、41% 線量嚴重不足(非大動作則為 0%),而推理路徑對此完全沒有檢查。現已在輸出接近空白時主動提示動畫師。

這兩個缺陷都是在研究線量測出來、回頭修進出貨程式碼的。產品端的派工架構會被保留,但被派工的對象全部換成自研模型——使用者按下去之後仍是自動找最適合的模型生成,只是底下不再有第三方授權問題。

設計與工程上的取捨

最花心思的不是接模型,而是這幾個架構決策

引擎分離,而非單一引擎加開關

不同引擎對線稿乾淨度的需求是相反的,硬塞進同一個引擎用旗標切換,只會埋下難解的耦合。

兩層調度分得很清楚

粗粒度的「該用哪個引擎」(L1,AutoRouter)與細粒度的「引擎內部該用哪個 backend / 尺寸」(L2)是兩件事,刻意不混為一談——否則「換個骨架後端」會意外改變引擎選擇。

一鍵介面藏的是工程決策,不是工作流

把使用者不該煩惱的引擎選擇收起來,但動畫師真正該擁有的創作控制權一個都不能少——收進「進階」摺疊區,需要時隨手展開。

自動微調採三層 delta 與驗證閘門

每次都從基底模型重新訓練(不堆疊),通過驗證才切換,確保個人化不會讓品質悄悄退步;缺少驗證資訊時預設失敗而非預設通過。

合成訓練料一律不進 holdout

考卷必須是真人手繪——合成料的標準答案是數學算出來的,對模型過於友善,混進去分數就不代表任何東西。這條紀律寫成了程式檢查,違反會直接拋例外。

授權評估

為什麼一個做完的產品,被自己按住不發

產品完成度到達可打包發佈後,我對每一個依賴做了授權查核,當時的結論是不能出貨

RIFEMIT(hzwer/Practical-RIFE)— 商用無虞
AnimeInbetICCV 2023,程式碼僅限非商用 — ✗ 不可商用
MixamoLine240訓練 AnimeInbet 用的資料集,CC BY-NC-SA 4.0,且素材源自 Mixamo——Adobe 條款明文禁止其內容用於任何機器學習系統的訓練 — ✗ 雙重禁止

問題在於 AnimeInbet 不是可有可無的附加功能:核心的 Hybrid 引擎以它為基線,拿掉它等於拿掉大動作線稿中割的主力。評估過三條路——洽原作者取得商業授權(即使談成,核心能力仍架在他人授權上)、做一個「商用模式」降級開關(等於出貨一個主力功能被閹割的產品,而使用者不會知道為什麼),以及自研模型全面取代(工程量最大、時間最久)。選了第三條,並決定取代完成前不對外發行。

2026/08,答案來自一個沒被列進那三條路的方向:量測。把手上所有引擎放到同一批真實線稿上做對照,結果是 Hybrid在全區間都輸給新版 RIFE,而且它有 16% 的骨架偵測失敗率、RIFE 是 0%。換句話說,那個「不可取代的主力」早就不是主力了——它只是沒有人回頭量過。兩個引擎因此直接從產品移除,授權障礙隨之解除,剩下的依賴(RIFE,MIT)授權乾淨。

所以現在按住不發的理由換了一個,而且更單純:品質還不夠。自研模型的目的也跟著變了——它不再是「為了合法而不得不做的替代品」,而是「為了把中割做到職業動畫師真的用得下去」。

授權問題是被量測解掉的,不是被繞過的。
技術棧總覽

前後端分離的具體組成

前端C# .NET 10(WPF)· CommunityToolkit.Mvvm · DI(Microsoft.Extensions)· NAudio · NLog
後端Python 3.14 · FastAPI · uvicorn · PyTorch(CUDA)· ONNX Runtime · OpenCV
AI 引擎RIFE v4.18(光流,MIT)· TPS(骨架變形,自研實作)
骨架偵測MediaPipe · RTMPose · DWPose
測試pytest 三套:後端 25 支檔案 / 237 項(API、派工邏輯、拆段、版本等價性回歸、模組接線)· CLI 9 支 / 139 項 · 自研模型 17 組構造自驗
檔案格式自訂 .zcel 格式(以 ZIP 為基礎)
發佈Inno Setup + 內嵌 Python(自含環境)· 一鍵重建腳本
未來展望

先把底層換成自己的,再談跨平台

自研模型第一刀:通用取代

訓練一個不吃控制訊號的自研通用模型。這一刀的目的已經改了——授權問題 2026/08 就已經解除,它現在要解的是品質。合成料驗證早已完成,職業動畫師提供的真實手繪素材也已入庫,訓練跑在真料上。目前的量測位置很明確:在大動作上,微調後的模型確實贏過原廠模型(而且微調帶來的改善,是整個預訓練模型自身貢獻的三倍多);但在間距十幾格的中等動作上,它還輸給「直接複製隔壁那張原畫」。那就是還不能出貨的地方。

自研模型第二刀:控制條件化

讓模型直接吃骨架鎖定、深度等控制訊號。機制已經落地並可運作,但實驗證明現在教不動——模型自身誤差仍遠大於控制訊號的效果量。這是順序問題,必須等第一刀在真料上完成後再開始。

ZeroCel 2.0 跨平台

規劃以 Avalonia UI + SkiaSharp 重構視圖層,讓核心邏輯延伸到 iPad / Android,把這套工具帶到動畫師真正在用的手繪裝置上。

下載 · Download
ZeroCel 安裝程式

Windows 自含式安裝檔(Inno Setup,內嵌完整 Python 與 AI 推論環境)。技術上隨時可產出,但目前刻意暫不發行——現用的核心引擎之一僅授權非商用,正以自研模型全面取代中。

ZeroCel_Setup.exe · 約 2.5 GB · 中割品質達標後發行
目標使用者是靠作品吃飯的職業動畫師,產出的東西是要拿去商用的——因此寧可延後發行,也不出貨一個授權有疑慮的東西。詳見上方「授權評估」。