讓動畫師專注在最關鍵的畫格,把繁瑣重複的中割工作交給 AI——而且,主導權始終在人的手上。
傳統手繪 2D 動畫裡,「中割」是最耗時、最重複,也最容易消磨創作熱情的環節。一個動作往往需要動畫師手動補上大量過渡畫格。
近年的 AI 影格插值技術理論上能自動生成中割,但對動畫師來說有個致命問題:純自動化會奪走「意圖」的控制權。動作的快慢節奏、誇張與收斂、骨架的走向,這些都是動畫師的表演語言,不該交給黑箱決定。
CelFlow 想回答的問題是:能不能讓 AI 承擔勞力,又把每一個藝術決策的最終決定權留給人?工作流:匯入原畫(PNG / PSD / 影片抽幀)→ AI 生成中間張 → 人工檢視修正 → 回饋自動學習 → 匯出 PNG 序列 / GIF / MP4。
整體採 C# WPF 前端 + Python FastAPI 後端雙進程架構,透過 HTTP REST(同步操作)與 WebSocket(推論 / 訓練進度推播)在本機 127.0.0.1:8765 通訊。前端啟動時自動偵測並拉起後端,前端結束時自動終止後端進程。CLI 與 GUI 被設計成後端的「平行客戶端」,彼此獨立而不互相依賴。
| 引擎 | 原理 | 適用場景 |
|---|---|---|
| RIFE v4.26 | 光流插幀(PyTorch, IFNet_HDv3) | 平滑連續的小動作補幀,全彩/線稿通用,速度最快;支援 t 外推做 overshoot。 |
| TPS | 骨架偵測 + Thin Plate Spline 網格變形(scipy RBF) | 人物中割,支援部位鎖定與人工骨架編輯。 |
| AnimeInbet | 線稿幾何化為頂點+邊圖,GNN 圖融合(ICCV 2023) | 乾淨線稿的中割,每段產 1 張置中中割。 |
| Hybrid | AnimeInbet 基線 + 雙側 TPS warp 補位 + sanity guard | 大動作線稿中割(核心複合引擎)。 |
骨架偵測支援三種後端(MediaPipe / RTMPose / DWPose,17 或 33 點 COCO),模型尺寸 s/m/l 可選。
純 CPU 邏輯、可獨立測試的決策核心:素材判定(依 dark_ratio、飽和度、線稿乾淨度分類)→ 動作粗估(前景 bbox 位移,小走 RIFE、中走 TPS/AnimeInbet、大走 Hybrid)→ 輸出 DispatchPlan(含引擎選擇、拆段計畫、線稿增強旗標與推薦理由)。/infer/plan 端點可只預覽派工計畫不送推論,動畫師確認後才提交——一鍵智慧調度負責省事,「進階面板」永遠保留完整手動控制。
/infer/*(start、range、plan、cancel、status、detect_skeleton)· /models/*(列出 / 切換 / 載入)· /finetune/* 與 /auto_finetune/*(完整 CRUD、delta 匯入匯出)· /video/*(順序解碼、正確處理 VFR)· /psd/* · /export/*(MP4 / GIF 合成)· /ws/{session_id}(progress / complete / error / finetune_progress 推播)· /health。測試位於 backend/tests/(pytest)。
動畫師「鎖定 AI 原版(pos)/ 鎖定編輯版(pos_edited)/ 刪除(neg)」的行為被記錄為訓練訊號(feedback.jsonl,按引擎分桶),鎖定視為認可、刪除視為否決。
累積 ≥20 筆回饋且距上次 ≥6 小時,於閒置時自動觸發訓練(≥50 筆走緊急路徑);動畫師一開始推論,訓練立即讓出 GPU——見於 ai/finetune_scheduler.py。
三元組(A, GT, B),Charbonnier loss + 負樣本 hinge loss;每次都從基底模型重新以 delta 增量訓練——不堆疊,避免個人化讓品質悄悄退步。
首次微調走 implicit gate(直接套用,監控刪除率);後續走 validation gate(holdout 考古題池,相對改善 ≥5% 才通過)。三層 delta 持久化:pending.delta(驗收中)→ active.delta(生效)→ previous.delta(rollback 用),刪除率突增自動回滾。
| TimelineView / VM | 多軌時間軸、FPS、曝光格、多選框選、音軌波形(NAudio)與對齊。 |
| CanvasView / VM | 畫布繪圖(筆刷 / 圖層)、洋蔥皮疊加、縮放平移、骨架編輯模式。 |
| AiPanelView / VM | AI 中割面板:推論會話、引擎 / 模型選擇、骨架偵測與編輯、中割風格曲線。 |
| 匯入匯出 | 影片抽幀匯入對話框、MP4 / GIF 匯出、批次匯出視窗。 |
| 微調管理 | 模型切換、微調清單管理、個人化參數與排程狀態。 |
六組可勾選的部位 + A/B 錨點,在畫布上以骨架疊圖即時呈現,動畫師可逐點開關;TPS 引擎依鎖定點保持該部位不變形。動畫師也可直接在畫布拖拉骨架節點,引擎跳過自動偵測改用人工座標。
Smooth / Exaggerated / Mechanical / 自訂 Bezier 曲線(BezierEditorView)直接對應動畫表演的不同節奏,轉為自訂 t_values 送後端。
按住 F 鍵 ±2 格鐘擺播放,模擬動畫師手翻紙檢查動作。
LayerStore(各圖層像素,真相源)+ FrameStore(合成快取)分離;一張圖可曝光多格,以 DrawingId 而非格號識別。
ZIP 容器內含 project.json、圖層 PNG、音軌、可選微調 delta.pt(載入時有 Zip Slip 防護)。操作計數 + 閒置計時雙觸發、雙緩衝(autosave.celf + .bak)、CrashRecoveryDialog。
使用者資料集中於 %LOCALAPPDATA%\CelFlow\(projects、autosave、feedback、finetunes、logs)。
CLI(cli/celflow_cli.py):interpolate(中割生成)· batch(批次處理)· export(匯出影片)· frames / info / validate(幀操作、專案資訊、檔案驗證)· serve(啟動後端)。tools/批次匯出.bat 讓非工程使用者拖曳 .celf 檔即完成「中割 + 匯出 MP4」。
打包發佈(dist/):自含式安裝——內嵌完整 Python 3.14 環境 + 全部套件 + 模型檔,使用者免裝任何依賴;以 Inno Setup(CelFlow.iss)產生 CelFlow_Setup_1.0.1.exe。一鍵改版 rebuild.bat:dotnet publish → 複製後端 / CLI → ISCC 編譯(約 20 分鐘)。
研究區 hybrid_p0/:產品背後的實驗與訓練場。deepsketch/(SIGGRAPH 2024 深度學習線稿向量化)· animeinbet/(ICCV 2023 線稿中割論文實作與再訓練,產品用的 Hybrid 權重即出自這裡)· ml240_data/(MixamoLine240 訓練資料集)+ p1/p2_pipeline/(處理管線)。各實驗有獨立 venv,與產品環境隔離。
不同引擎對線稿乾淨度的需求是相反的,硬塞進同一個引擎用旗標切換,只會埋下難解的耦合。
粗粒度的「該用哪個引擎」(L1,AutoRouter)與細粒度的「引擎內部該用哪個 backend / 尺寸」(L2)是兩件事,刻意不混為一談。
把使用者不該煩惱的引擎選擇收起來,但動畫師真正該擁有的創作控制權一個都不能少——收進「進階」摺疊區,需要時隨手展開。
每次都從基底模型重新訓練(不堆疊),通過驗證才切換,確保個人化不會讓品質悄悄退步。
| 前端 | C# .NET 10(WPF)· CommunityToolkit.Mvvm · DI(Microsoft.Extensions)· NAudio · NLog |
| 後端 | Python 3.14 · FastAPI · uvicorn · PyTorch(CUDA)· ONNX Runtime · OpenCV |
| AI 引擎 | RIFE v4.26(光流)· TPS(骨架變形)· AnimeInbet(GNN)· Hybrid(複合) |
| 骨架偵測 | MediaPipe · RTMPose · DWPose |
| 檔案格式 | 自訂 .celf 格式(以 ZIP 為基礎) |
| 發佈 | Inno Setup + 內嵌 Python(自含環境)· 一鍵 rebuild.bat |
規劃以 Avalonia UI + SkiaSharp 重構視圖層,讓核心邏輯延伸到 iPad / Android,把這套工具帶到動畫師真正在用的手繪裝置上。
核心 Hybrid 引擎已整合上線並通過測試,後續的 AnimeInbet 微調則刻意延後——等累積足夠的真實使用數據、確認確有需求後再決定啟動,避免為了做而做。
Windows 安裝檔(Inno Setup)。由於整合了完整的 AI 推論環境(PyTorch / CUDA / 全套模型),安裝檔較大,下載前請確認網路與磁碟空間。