FilmForge 畫面品質檢查 是做什麼的?
任何畫作都不能僅憑縮圖就放行進入影片。每幅畫作都必須以全尺寸讀取,對比其設定表,透過工具測量,評分,並得到三種判決之一。判決會清楚說明下一步行動及其成本:接受(免費)、以程式碼修正(免費,包含確切的呼叫指令)或重繪(2.75 點數,包含修正後的提示)。
路徑:以下的 scripts/、templates/ 和 config/ 是此技能內的資料夾(載入時顯示的基礎目錄),由 ./install.sh 放置。若從儲存庫的複本工作,它們分別是根目錄下的 tools/、templates/ 和 config/。
流程
- 聯絡表:批次檢視,以序列方式觀看(相鄰畫面是否能順利銜接?):
python3 scripts/contact_sheet.py build art/film --shotlist shotlist.yaml --out out/contact_sheet.jpg - 全尺寸檢視:檢視每幅畫作本身,而非縮圖。
- 100% 裁切:放大檢視重點區域:臉部、手部、對比例至關重要的主體,以及任何微小細節。
python3 scripts/contact_sheet.py zoom art/film/s03_x.png --out-dir out/zoom --grid 2x2或--box x0,y0,x1,y1影像閱讀器會對大型圖片進行降採樣;裁切才能顯示真實像素。 - 測量:測量色彩規則、調色盤與曝光值:
python3 scripts/ledger.py palette continuity.yaml --paintings art/film --shotlist shotlist.yaml它會回報每幅畫作的調色盤、與場景色彩腳本的色差 (delta E)、每個禁色規則佔畫面的比例,以及同一場景中相鄰畫面的曝光值跳躍(以級為單位)。 - 評分:依據評分標準(如下):九項標準,每項 0 到 2 分。
- 判決:根據以下規則做出判決。
- 記錄:在
qa.yaml中撰寫條目(格式如下),然後使用--qa qa.yaml重建聯絡表以顯示徽章。 - 回報:顯示判決計數、每個修復和重繪的各一行摘要,以及重繪所需的點數。
評分標準 (templates/qa-rubric.md 包含評分錨點)
| 標準 | 檢查內容 |
|---|---|
| 辨識度 (identity) | 臉部與服裝標記是否符合設定表 |
| 解剖結構 (anatomy) | 焦點主體的手部、眼睛、肢體 |
| 比例 (scale) | 每個比例鎖定與每個計數(在裁切中測量像素) |
| 風格 (style) | 外觀鎖定:媒材、線條、色彩、紋理 |
| 色彩 (colour) | 色彩腳本與禁色規則(來自 ledger.py palette)以及與相鄰畫面的曝光值 |
| 連續性 (continuity) | 記錄為此鏡頭列出的每個道具與狀態,且不超出其範圍 |
| 故事 (story) | 在兩秒鐘內能讀懂節奏 |
| 構圖 (composition) | 畫面佈局符合要求,視線能落在主體上,文字區域保持乾淨 |
| 乾淨度 (clean) | 沒有繪製的文字、浮水印、污漬或多餘的人物 |
測量比例: 在裁切中,測量主體及其參考物的像素尺寸,並與比例鎖定進行比較。引擎範例:蛾的寬度是 20 像素,而一根手指是 60 像素,但比例鎖定要求一隻張開的手(在此取景下至少 120 像素):只有其六分之一大小,比例 0 分,需重繪。
判決規則
- 接受:沒有任何標準為 0 分,總分 18 分中達 15 分或以上,且沒有測量違規。
- 修正:每個缺失都有對應的程式碼修復(如下表),且辨識度、比例或故事標準沒有 0 分。
- 重繪:辨識度、比例或故事標準為 0 分;焦點主體的解剖結構為 0 分;風格為 0 分;或有三個或以上的缺失。
使用點數前的程式碼修正 (painted-film-pipeline 模組)
| 缺失 | 模組與呼叫指令 |
|---|---|
| 一個物體色調錯誤(例如一條圍巾讓配角被誤認為主角) | grade.py IN OUT recolor:x0:y0:x1:y1:lo:hi:new_hue:sat |
| 出現禁色(例如結局前出現藍色) | grade.py IN OUT blue:0.3(將色帶往銀色拉動;保留=0.3)或使用 recolor 改為允許的色調 |
| 乾淨區域出現多餘人物 | 從位移後的乾淨區域進行貼片修補(參見 fix_s22.py 模式) |
| 裁切不佳、切線、頭部空間不當 | 在鏡頭的 crop: [x0, y0, x1, y1] 中指定原始像素座標 |
| 與相鄰畫面相比曝光或對比度異常 | 自動處理:匹配的色階調整會將每個圖板的 0.5% 和 99.5% 亮度百分位數映射到共同目標值 |
| 細節模糊 | 自動處理:僅在邊緣進行銳化的 Lanczos 4K 升採樣 |
| 畫面缺乏動態 | 使用程式碼生成動態(forge-motion),切勿重繪 |
每次修復會產生一個新檔案(_g),並重新測量,只有當測量通過時才會標記為 done: true。
詳細資訊與參數含義:參考 references/code-fixes.md。
重繪:診斷,然後修正
指出原因是提示中的某個插槽或參考資料:「比例鎖定從插槽 4 遺失」、「設定表附件順序錯誤」、「外觀描述被改寫」。完整寫出修正後的提示,檢查預算,然後交給 forge-painter。如果原因會影響其他鏡頭(例如記錄中遺失了一個鎖定),請務必說明:這是引擎層面的變更,而非單次重繪。
qa.yaml 條目格式
- shot: s02
file: art/film/s02_last_match.png
checked: [全尺寸畫面, 100% 2x2 裁切, 記錄調色盤]
scores: {identity: 1, anatomy: 2, scale: 2, style: 2, colour: 0, continuity: 2, story: 2, composition: 2, clean: 2}
total: 15
max: 18
measured: {no_gold_pct: 4.4, script_dE: 5}
verdict: fix
notes: 來自火柴的金色光芒覆蓋了畫面的 4.4%(規則允許在 s05 之前為 2%),並且染黃了帽子。
fix:
problem: 金色光芒,色調 38 到 58
module: painted-film-pipeline pipeline/grade.py (recolor)
call: python grade.py s02_last_match.png s02_last_match_g.png recolor:250:250:700:650:38:58:22:0.8
params: {box: [250, 250, 700, 650], hue_band: [38, 58], new_hue: 22, sat: 0.8}
why_not_repaint: 僅一個色調範圍在一個選區內
verify: ledger.py palette 顯示 _g 檔案的金色區域低於 2.0%;帽子在 100% 檢視下顯示為紅色
done: false
重繪條目則使用 repaint: {cause, prompt_changes, credits, corrected_prompt} 取代 fix。
來自實際製作的案例發現
- 比例(重繪): 五個 Simorgh 影格中,戴勝鳥被畫得比女孩小很多(s21、s25、s33、s36、s39)。程式碼無法令人信服地放大已繪製的主體;它們被排程以其真實尺寸重繪,而原因(提示或設定表上缺乏比例)變成了一個引擎層級的規則。
- 色彩(修正): 影片結束前,藍色悄悄滲入畫面;透過將色帶往銀色拉動,在程式碼中修復了它們。
- 透過色彩辨識(修正): 一個配角的圍巾顏色與主角相同,導致他被誤認為主角;在一個選區內進行色調範圍重新著色修正了此問題。
- 多餘人物(修正): 一個在乾淨畫面中的額外人物,透過從位移後的乾淨區域進行貼片修補移除。
- 繪本的大門: 臉部需符合參考資料;使用正確的外觀與色彩腳本顏色;文字區域保持極度平靜;頁面的主題圖案必須出現;它能讓你感受到其相襯文字行的情感。任何一項失敗都必須重做。
絕對禁止
- 僅從縮圖或聯絡表就接受畫面。
- 重繪程式碼可以修復的問題,或使用程式碼「修復」會破壞故事正確性的問題。
- 通過任何測量規則失敗的畫作,即使它看起來沒問題。
閘門檢查清單(針對批次)
- 每幅畫作均已全尺寸讀取,包含臉部、手部及比例關鍵主體的裁切
- 已執行
ledger.py palette;每個錯誤都在判決中說明 - 每幅畫作在 qa.yaml 中都有條目,包含評分、判決及下一步行動
- 聯絡表已重建並帶有徽章,且已檢視
參考資料
references/code-fixes.md:每項修復的參數、如何選擇它們,以及如何驗證