動画アップスケール・動画修復
基本的な考え方や手法は、アップスケール・画像修復 とほぼ同じです。
-
- 解像度を上げる
-
- 失われたディテールをそれらしく補い、画質を整える
ただし大きな違いが一つあり、動画では 時間方向のつながり(フリッカーしないこと) が重要になります。
静止画用アップスケーラを「1フレームずつ」当てるだけでも一応は動画アップスケールになりますが、時間的な一貫性を持たないため、チラつきがでる可能性があります。
やはり、動画専用のアップスケーラーを使ったほうが良いでしょう。
現在のSoTAを2つだけ紹介します。
静止画用のアップスケーラーを動画に使うことは出来ませんが、その逆は特に問題ありません。
むしろ静止画専用のものより性能がよく、実際よく使われています。
SeedVR2
numz/ComfyUI-SeedVR2_VideoUpscaler
動画のアップスケールに特化し、1ステップで生成できるようにしています。
修復レベルで使えるほど非常に高性能ですが、非常に重いです。
FlashVSR
lihaoyun6/ComfyUI-FlashVSR_Ultra_Fast

{
"id": "d3268a79-1642-49b7-abca-afe8eabefcbf",
"revision": 0,
"last_node_id": 6,
"last_link_id": 4,
"nodes": [
{
"id": 2,
"type": "VHS_LoadVideo",
"pos": [
663.323141360561,
634.7620900749006
],
"size": [
253.279296875,
628.3644045064377
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"name": "meta_batch",
"shape": 7,
"type": "VHS_BatchManager",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": null
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
1
]
},
{
"name": "frame_count",
"type": "INT",
"links": null
},
{
"name": "audio",
"type": "AUDIO",
"links": null
},
{
"name": "video_info",
"type": "VHS_VIDEOINFO",
"links": [
3
]
}
],
"properties": {
"cnr_id": "comfyui-videohelpersuite",
"ver": "6e7f63867584bb1fb4944d36172e7f98436da9a1",
"Node name for S&R": "VHS_LoadVideo"
},
"widgets_values": {
"video": "7.mp4",
"force_rate": 0,
"custom_width": 0,
"custom_height": 0,
"frame_load_cap": 0,
"skip_first_frames": 0,
"select_every_nth": 1,
"format": "AnimateDiff",
"choose video to upload": "image",
"videopreview": {
"hidden": false,
"paused": false,
"params": {
"filename": "7.mp4",
"type": "input",
"format": "video/mp4",
"force_rate": 0,
"custom_width": 0,
"custom_height": 0,
"frame_load_cap": 0,
"skip_first_frames": 0,
"select_every_nth": 1
}
}
}
},
{
"id": 4,
"type": "VHS_VideoInfoLoaded",
"pos": [
992.7530493528476,
924.9067122404671
],
"size": [
247.837890625,
106
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"name": "video_info",
"type": "VHS_VIDEOINFO",
"link": 3
}
],
"outputs": [
{
"name": "fps🟦",
"type": "FLOAT",
"links": [
4
]
},
{
"name": "frame_count🟦",
"type": "INT",
"links": null
},
{
"name": "duration🟦",
"type": "FLOAT",
"links": null
},
{
"name": "width🟦",
"type": "INT",
"links": null
},
{
"name": "height🟦",
"type": "INT",
"links": null
}
],
"properties": {
"cnr_id": "comfyui-videohelpersuite",
"ver": "6e7f63867584bb1fb4944d36172e7f98436da9a1",
"Node name for S&R": "VHS_VideoInfoLoaded"
},
"widgets_values": {}
},
{
"id": 3,
"type": "VHS_VideoCombine",
"pos": [
1323.428325432686,
634.7620900749006
],
"size": [
376.3275432341816,
812.7750563924108
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 2
},
{
"name": "audio",
"shape": 7,
"type": "AUDIO",
"link": null
},
{
"name": "meta_batch",
"shape": 7,
"type": "VHS_BatchManager",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": null
},
{
"name": "frame_rate",
"type": "FLOAT",
"widget": {
"name": "frame_rate"
},
"link": 4
}
],
"outputs": [
{
"name": "Filenames",
"type": "VHS_FILENAMES",
"links": null
}
],
"properties": {
"cnr_id": "comfyui-videohelpersuite",
"ver": "6e7f63867584bb1fb4944d36172e7f98436da9a1",
"Node name for S&R": "VHS_VideoCombine"
},
"widgets_values": {
"frame_rate": 8,
"loop_count": 0,
"filename_prefix": "FlashVSR",
"format": "video/h264-mp4",
"pix_fmt": "yuv420p",
"crf": 19,
"save_metadata": true,
"trim_to_audio": false,
"pingpong": false,
"save_output": true,
"videopreview": {
"hidden": false,
"paused": false,
"params": {
"filename": "FlashVSR_00001.mp4",
"subfolder": "",
"type": "output",
"format": "video/h264-mp4",
"frame_rate": 24,
"workflow": "FlashVSR_00001.png",
"fullpath": "D:\\AI\\ComfyUI_windows_portable\\ComfyUI\\output\\FlashVSR_00001.mp4"
}
}
}
},
{
"id": 1,
"type": "FlashVSRNode",
"pos": [
986.0897619994128,
634.7620900749006
],
"size": [
259.5867768595042,
226
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "frames",
"type": "IMAGE",
"link": 1
}
],
"outputs": [
{
"name": "image",
"type": "IMAGE",
"links": [
2
]
}
],
"properties": {
"aux_id": "lihaoyun6/ComfyUI-FlashVSR_Ultra_Fast",
"ver": "059b725cde725fde1d367a40fe5fead9c0a751bd",
"Node name for S&R": "FlashVSRNode"
},
"widgets_values": [
"FlashVSR-v1.1",
"tiny",
2,
true,
true,
256,
1234,
"fixed"
],
"color": "#232",
"bgcolor": "#353"
}
],
"links": [
[
1,
2,
0,
1,
0,
"IMAGE"
],
[
2,
1,
0,
3,
0,
"IMAGE"
],
[
3,
2,
3,
4,
0,
"VHS_VIDEOINFO"
],
[
4,
4,
0,
3,
4,
"FLOAT"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.693433494944134,
"offset": [
136.176777994939,
-331.11780271126634
]
},
"frontendVersion": "1.34.3",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
複数フレームをまとめて処理し、時間方向のブレやフリッカーを抑えています。
リアルタイム寄りの処理速度を実現できる設計で、高速・軽量なので、とりあえずこちらを試してみるのがいいでしょう。