ฉางหลิว, รุยลี่, จางไคตง, หยุนเว่ยหลาน, ตงหลิว
[ Paper
] / [ Project
] / [ Models (Huggingface)
] / [ DAVIS-Edit (HuggingFace)
] / [ Models (wisemodel)
] / [ DAVIS-Edit (wisemodel)
] / [ Models (ModelScope)
] / [ DAVIS-Edit (ModelScope)
]
StableV2V
StableV2V
(บรรทัดคำสั่ง)StableV2V
StableV2V
StableV2V
(Gradio Demo)DAVIS-Edit
หากคุณมีคำถามใดๆ เกี่ยวกับงานนี้ โปรดอย่าลังเลที่จะเริ่มประเด็นใหม่หรือเสนอการประชาสัมพันธ์
StableV2V
StableV2V
นำเสนอกระบวนทัศน์ใหม่ในการตัดต่อวิดีโอในลักษณะที่สอดคล้องกันของรูปร่าง โดยเฉพาะอย่างยิ่งการจัดการสถานการณ์การแก้ไขเมื่อผู้ใช้แจ้งทำให้เกิดการเปลี่ยนแปลงรูปร่างอย่างมีนัยสำคัญกับเนื้อหาที่แก้ไข นอกจากนี้ StableV2V
ยังแสดงความยืดหยุ่นที่เหนือกว่าในการจัดการแอปพลิเคชันดาวน์สตรีมที่หลากหลาย โดยพิจารณาจากการแจ้งเตือนผู้ใช้ที่หลากหลายจากรูปแบบที่แตกต่างกัน
<กลับสู่สารบัญ>
DAVIS-Edit
ที่เสนอไปยัง ModelScopeStableV2V
โดยมีภาพประกอบโดยละเอียดแสดงไว้ในส่วนนี้DAVIS-Edit
ที่เสนอไปยัง wisemodel.cnDAVIS-Edit
ไปยัง repo ชุดข้อมูล HuggingFace ของเรา และอัปโหลดน้ำหนักโมเดลที่จำเป็นทั้งหมดของ StableV2V
ไปยัง repo โมเดล HuggingFace ของเราStableV2V
DAVIS-Edit
ที่คัดสรรแล้วไปยัง repo HuggingFace ของเรา StableV2V
ไปยัง repo HuggingFace ของเรา <กลับสู่สารบัญ>
StableV2V
├── LICENSE
├── README.md
├── assets
├── datasets <----- Code of datasets for training of the depth refinement network
├── models <----- Code of model definitions in different components
├── runners <----- Code of engines to run different components
├── inference.py <----- Script to inference StableV2V
├── train_completion_net.py <----- Script to train the shape-guided depth completion network
└── utils <----- Code of toolkit functions
<กลับสู่สารบัญ>
เรามีบรรทัดคำสั่งเพียงคลิกเดียวเพื่อติดตั้งการขึ้นต่อกันทั้งหมดที่โค้ดต้องการ ขั้นแรก สร้างสภาพแวดล้อมเสมือนด้วย conda
:
conda create -n stablev2v python=3.10
จากนั้นคุณสามารถดำเนินการบรรทัดต่อไปนี้เพื่อติดตั้งการพึ่งพาด้วย pip
:
bash install_pip.sh
คุณยังสามารถติดตั้งการพึ่งพาด้วย conda
โดยปฏิบัติตามบรรทัดคำสั่งด้านล่าง:
bash install_conda.sh
จากนั้นคุณก็พร้อมที่จะใช้งาน conda activate stablev2v
ก่อนที่คุณจะเริ่มกระบวนการอนุมาน คุณต้องเตรียมน้ำหนักแบบจำลองที่ StableV2V
ต้องการ
แบบอย่าง | ส่วนประกอบ | ลิงค์ |
---|---|---|
ระบายสีตามตัวอย่าง | กฟภ | Fantasy-Studio/Paint-by-Example |
สอนPix2Pix | กฟภ | timbrooks/instruct-pix2pix |
เอสดี อินเพนท์ | กฟภ | botp/stable-diffusion-v1-5-inpainting |
ControlNet + SD Inpaint | กฟภ | รุ่น ControlNet ที่ lllyasviel |
ประตูใดก็ได้ | กฟภ | xichenhku/AnyDoor |
แพ | อส | Google Drive |
มิดาส | อส | Link |
U2-Net | อส | Link |
เครือข่ายการปรับแต่งเชิงลึก | อส | Link |
SD เวอร์ชัน 1.5 | ซีไอจี | stable-diffusion-v1-5/stable-diffusion-v1-5 |
ControlNet (ความลึก) | ซีไอจี | lllyasviel/control_v11f1p_sd15_depth |
Ctrl-อะแดปเตอร์ | ซีไอจี | hanlincs/Ctrl-Adapter ( i2vgenxl_depth ) |
I2VGen-XL | ซีไอจี | ali-vilab/i2vgen-xl |
เมื่อคุณดาวน์โหลดตุ้มน้ำหนักโมเดลทั้งหมดแล้ว ให้วางไว้ในโฟลเดอร์ checkpoints
บันทึก
หากสภาพแวดล้อมเครือข่ายของคุณสามารถเข้าถึง HuggingFace ได้ คุณสามารถใช้ Repo ID ของ HuggingFace ได้โดยตรงเพื่อดาวน์โหลดโมเดล มิฉะนั้น เราขอแนะนำเป็นอย่างยิ่งให้คุณเตรียมตุ้มน้ำหนักแบบจำลองไว้ภายในเครื่อง
โดยเฉพาะอย่างยิ่ง ตรวจสอบให้แน่ใจว่าคุณได้แก้ไขไฟล์การกำหนดค่าของ AnyDoor
ที่ models/anydoor/configs/anydoor.yaml
ด้วยเส้นทางของตุ้มน้ำหนักที่ผ่านการฝึกอบรม DINO-v2:
(at line 83)
cond_stage_config:
target: models.anydoor.ldm.modules.encoders.modules.FrozenDinoV2Encoder
weight: /path/to/dinov2_vitg14_pretrain.pth
<กลับสู่สารบัญ>
StableV2V
(บรรทัดคำสั่ง) คุณอาจอ้างถึงบรรทัดคำสั่งต่อไปนี้เพื่อเรียกใช้ StableV2V
:
python inference.py --raft-checkpoint-path checkpoints/raft-things.pth --midas-checkpoint-path checkpoints/dpt_swin2_large_384.pt --u2net-checkpoint-path checkpoints/u2net.pth --stable-diffusion-checkpoint-path stable-diffusion-v1-5/stable-diffusion-v1-5 --controlnet-checkpoint-path lllyasviel/control_v11f1p_sd15_depth --i2vgenxl-checkpoint-path ali-vilab/i2vgen-xl --ctrl-adapter-checkpoint-path hanlincs/Ctrl-Adapter --completion-net-checkpoint-path checkpoints/depth-refinement/50000.ckpt --image-editor-type paint-by-example --image-editor-checkpoint-path /path/to/image/editor --source-video-frames examples/frames/bear --external-guidance examples/reference-images/raccoon.jpg --prompt " a raccoon " --outdir results
การโต้แย้ง | การตั้งค่าเริ่มต้น | จำเป็นหรือไม่ | คำอธิบาย |
---|---|---|---|
อาร์กิวเมนต์ของโมเดล | - | - | - |
--image-editor-type | - | ใช่ | อาร์กิวเมนต์เพื่อกำหนดประเภทโปรแกรมแก้ไขรูปภาพ |
--image-editor-checkpoint-path | - | ใช่ | เส้นทางน้ำหนักโมเดลสำหรับโปรแกรมแก้ไขรูปภาพ ที่ PFE ต้องการ |
--raft-checkpoint-path | checkpoints/raft-things.pth | ใช่ | เส้นทางของน้ำหนักโมเดลสำหรับ RAFT ซึ่ง ISA กำหนด |
--midas-checkpoint-path | checkpoints/dpt_swin2_large_382.pt | ใช่ | เส้นทางของน้ำหนักโมเดลสำหรับ MiDaS ที่กำหนดโดย ISA |
--u2net-checkpoint-path | checkpoints/u2net.pth | ใช่ | เส้นทางของน้ำหนักโมเดลสำหรับ U2-Net ซึ่ง ISA ต้องการเพื่อรับมาสก์การแบ่งส่วนของเฟรมวิดีโอ (จะถูกแทนที่ด้วย SAM ในอนาคตอันใกล้นี้) |
--stable-diffusion-checkpoint-path | stable-diffusion-v1-5/stable-diffusion-v1-5 | ใช่ | เส้นทางของน้ำหนักโมเดลสำหรับ SD เวอร์ชัน 1.5 ที่กำหนดโดย CIG |
--controlnet-checkpoint-path | lllyasviel/control_v11f1p_sd15_depth | ใช่ | เส้นทางของน้ำหนักโมเดลสำหรับ ControlNet (ความลึก) ที่ CIG ต้องการ |
--ctrl-adapter-checkpoint-path | hanlincs/Ctrl-Adapter | ใช่ | เส้นทางของน้ำหนักโมเดลสำหรับ Ctrl-Adapter ซึ่ง CIG ต้องการ |
--i2vgenxl-checkpoint-path | ali-vilab/i2vgen-xl | ใช่ | เส้นทางของตุ้มน้ำหนักแบบจำลองสำหรับ I2VGen-XL ที่กำหนดโดย CIG |
--completion-checkpoint-path | checkpoints/depth-refinement/50000.ckpt | ใช่ | เส้นทางของตุ้มน้ำหนักแบบจำลองสำหรับ I2VGen-XL ที่กำหนดโดย CIG |
อาร์กิวเมนต์อินพุต | - | - | - |
--source-video-frames | - | ใช่ | เส้นทางของเฟรมวิดีโออินพุต |
--prompt | - | ใช่ | ข้อความแจ้งของวิดีโอที่แก้ไข |
--external-guidance | - | ใช่ | อินพุตภายนอกสำหรับโปรแกรมแก้ไขรูปภาพ หากคุณใช้ Paint-by-Example , InstructPix2Pix และ AnyDoor |
--outdir | results | ใช่ | เส้นทางของไดเร็กทอรีเอาต์พุต |
--edited-first-frame | - | เลขที่ | เส้นทางของเฟรมที่แก้ไขครั้งแรกที่กำหนดเอง โดยที่โปรแกรมแก้ไขรูปภาพจะไม่ถูกใช้หากกำหนดค่าอาร์กิวเมนต์นี้ |
--input-condition | - | เลขที่ | เส้นทางของแผนที่เชิงลึกที่ได้รับการควบคุม เราดึงแผนที่เชิงลึกโดยตรงจากเฟรมวิดีโอต้นฉบับด้วย MiDaS หากไม่ได้กำหนดค่าอาร์กิวเมนต์นี้ |
--input-condition | - | เลขที่ | เส้นทางของแผนที่เชิงลึกที่ได้รับการควบคุม เราดึงแผนที่เชิงลึกโดยตรงจากเฟรมวิดีโอต้นฉบับด้วย MiDaS หากไม่ได้กำหนดค่าอาร์กิวเมนต์นี้ |
--reference-masks | - | เลขที่ | เส้นทางของมาสก์การแบ่งส่วนของรูปภาพอ้างอิง กำหนดโดย AnyDoor เราจะแยกมาสก์การแบ่งส่วนออกจากรูปภาพอ้างอิงโดยอัตโนมัติ หากไม่ได้กำหนดค่าอาร์กิวเมนต์นี้ |
--image-guidance-scale | 1.0 | เลขที่ | ไฮเปอร์พารามิเตอร์ที่ต้องการโดย InstructPix2Pix |
--kernel-size | 9 | เลขที่ | ขนาดเคอร์เนลของการดำเนินการขยายไบนารี เพื่อให้แน่ใจว่ากระบวนการวางครอบคลุมขอบเขตของเนื้อหาที่แก้ไข |
--dilation-iteration | 1 | เลขที่ | การวนซ้ำสำหรับการดำเนินการขยายแบบไบนารี |
--guidance-scale | 9.0 | เลขที่ | มาตราส่วนคำแนะนำแบบไม่มีลักษณนาม |
--mixed-precision | แฟน16 | เลขที่ | ความแม่นยำของโมเดลใน StableV2V |
--n-sample-frames | 16 | เลขที่ | จำนวนเฟรมวิดีโอของวิดีโอที่แก้ไข |
--seed | 42 | เลขที่ | เมล็ดสุ่ม. |
บันทึก
ประเด็นเฉพาะบางประการที่คุณอาจให้ความสนใจเพิ่มเติมขณะอนุมาน:
--image-editor-checkpoint-path
เส้นทางจะถูกส่งมอบโดยอัตโนมัติไปยังโปรแกรมแก้ไขที่เกี่ยวข้องตาม --image-editor-type
ของคุณ ดังนั้นโปรดอย่ากังวลเกี่ยวกับข้อโต้แย้งเพิ่มเติมในโค้ดเบสPaint-by-Example
, InstructPix2Pix
, AnyDoor
คุณจะต้องกำหนดค่าอาร์กิวเมนต์ --external-guidance
ซึ่งสอดคล้องกับรูปภาพอ้างอิงและคำแนะนำผู้ใช้ตามลำดับxformers
ในปัจจุบัน ซึ่งอาจทำให้เกิดสิ่งแปลกปลอมในผลลัพธ์ที่สร้างขึ้น ปัญหาดังกล่าวอาจได้รับการแก้ไขในอนาคตหากเป็นไปได้ StableV2V
หากต้องการสเก็ตช์ภาพโดยมนุษย์ คุณต้องวาดด้วยตนเองบนอุปกรณ์ภายนอก เช่น แท็บเล็ต จากนั้นจึงส่งออกผลลัพธ์เพื่อใช้ในภายหลัง โดยเฉพาะอย่างยิ่งเราได้รับภาพร่างที่วาดด้วยมือบนแอปพลิเคชัน iPad Sketchbook
. ตัวอย่างภาพร่างที่วาดด้วยมืออาจมีลักษณะดังนี้:
ControlNet (scribble)
เพื่อสร้างเฟรมแรกที่แก้ไข เมื่อคุณได้ภาพร่างที่วาดด้วยมือแล้ว ขั้นตอนต่อไปคือการได้เฟรมแรกที่แก้ไข ในการทำเช่นนั้น เราใช้ ControlNet (scribble)
ซึ่งคุณต้องเตรียมน้ำหนักโมเดลของ ControlNet (scribble)
และ SD Inpaint
ไว้ล่วงหน้า สมมติว่าเราใส่ภาพร่างที่วาดด้วยมือก่อนหน้านี้ไว้ที่ inputs/hand-drawn-sketches
คุณสามารถดำเนินการบรรทัดคำสั่งต่อไปนี้ได้โดยการรัน ControlNet (scribble)
:
python scripts/inference_controlnet_inpaint.py --controlnet-checkpoint-path lllyasviel/control_v11p_sd15_scribble --stable-diffusion-checkpoint-path botp/stable-diffusion-v1-5-inpainting --prompt " an elephant " --input-mask inputs/masks/bear.png --controlnet-guidance inputs/hand-drawn-sketches/bear-elephant-sketch.png --outdir results/sketch-guided-result.png
ผลลัพธ์อาจดูเหมือน:
ในที่สุดคุณก็พร้อมที่จะสร้างวิดีโอที่แก้ไขทั้งหมดแล้ว เราเสนอตัวอย่างบรรทัดคำสั่งดังต่อไปนี้:
python inference.py --raft-checkpoint-path checkpoints/raft-things.pth --midas-checkpoint-path checkpoints/dpt_swin2_large_384.pt --u2net-checkpoint-path checkpoints/u2net.pth --stable-diffusion-checkpoint-path stable-diffusion-v1-5/stable-diffusion-v1-5 --controlnet-checkpoint-path lllyasviel/control_v11f1p_sd15_depth --i2vgenxl-checkpoint-path ali-vilab/i2vgen-xl --ctrl-adapter-checkpoint-path hanlincs/Ctrl-Adapter --completion-net-checkpoint-path checkpoints/depth-refinement/50000.ckpt --source-video-frames examples/frames/bear --edited-first-frame inputs/edited-first-frames/bear-elephant.png --prompt " an elephant walking on the rocks in a zoo " --outdir results
ด้วยการกำหนดค่า --edited-first-frame
โค้ดเบสจะข้ามขั้นตอนการแก้ไขเฟรมแรกโดยอัตโนมัติ ซึ่งเราจะเห็นภาพวิดีโอต้นฉบับและวิดีโอที่แก้ไขด้านล่าง:
<กลับสู่สารบัญ>
StableV2V
ก่อนที่คุณจะทาสีเฟรมวิดีโอแรก เราขอแนะนำให้คุณขยายมาสก์การแบ่งส่วนที่มีคำอธิบายประกอบ (ถ้ามี) โดยใช้สคริปต์ต่อไปนี้:
python scripts/run_dilate_mask.py --input-folder inputs/masks/car-turn.png --output-folder inputs/dilated-masks --kernel-size 15 --iterations 1
หน้ากากแบบเดิม (ซ้าย) และแบบขยาย (ขวา) อาจมีลักษณะดังนี้:
IOPaint
เพื่อสร้างเฟรม Inpaint แรก เราขอแนะนำให้คุณใช้ไลบรารี IOPaint
เพื่อความสะดวกในการใช้งาน หากต้องการติดตั้ง คุณสามารถเรียกใช้:
pip install iopaint
จากนั้นคุณจะสามารถรัน LaMa
ผ่านทางไลบรารีได้:
iopaint run --model=lama --image inputs/frames/car-turn/00000.jpg --mask inputs/dilated-masks/car-turn.png --output inputs/edited-first-frames/
เฟรมแรกดั้งเดิมและที่ทาสีไว้อาจมีลักษณะดังนี้:
ในที่สุดคุณก็พร้อมที่จะสร้างวิดีโอที่แก้ไขทั้งหมดแล้ว เราเสนอตัวอย่างบรรทัดคำสั่งดังต่อไปนี้:
python inference.py --raft-checkpoint-path checkpoints/raft-things.pth --midas-checkpoint-path checkpoints/dpt_swin2_large_384.pt --u2net-checkpoint-path checkpoints/u2net.pth --stable-diffusion-checkpoint-path stable-diffusion-v1-5/stable-diffusion-v1-5 --controlnet-checkpoint-path lllyasviel/control_v11f1p_sd15_depth --i2vgenxl-checkpoint-path ali-vilab/i2vgen-xl --ctrl-adapter-checkpoint-path hanlincs/Ctrl-Adapter --completion-net-checkpoint-path checkpoints/depth-refinement/50000.ckpt --source-video-frames examples/frames/car-turn --edited-first-frame inputs/edited-first-frame/car-turn-inpainted.png --prompt " an elephant walking on the rocks in a zoo " --outdir results
ด้วยการกำหนดค่า --edited-first-frame
โค้ดเบสจะข้ามขั้นตอนการแก้ไขเฟรมแรกโดยอัตโนมัติ ซึ่งเราจะเห็นภาพวิดีโอต้นฉบับและวิดีโอที่แก้ไขด้านล่าง:
<กลับสู่สารบัญ>
StableV2V
(Gradio Demo) นอกจากนี้เรายังเสนอการสาธิต gradio เพื่อทดลองใช้ StableV2V
ผ่าน UI แบบโต้ตอบ ก่อนที่คุณจะไป เราขอแนะนำให้คุณทำตามคำแนะนำในส่วนนี้เพื่อเตรียมน้ำหนักโมเดลที่จำเป็นทั้งหมดไว้ในเครื่อง (ในโฟลเดอร์ ./checkpoints
checkpoints) จากนั้น อย่าลังเลที่จะทดสอบโดยเรียกใช้:
python app.py
ในรูปต่อไปนี้ เราจะสาธิตการทำงานของโมดูลต่างๆ ในการสาธิต Gradio ของเรา:
โปรดอย่าลังเลที่จะเริ่มประเด็นใหม่หรือเสนอ PR หากมีคำถามเพิ่มเติมเกี่ยวกับการสาธิต
<กลับสู่สารบัญ>
DAVIS-Edit
เราสร้าง DAVIS-Edit
ตามโครงสร้างข้อมูลเดียวกันกับโครงสร้าง DAVIS
ดังแสดงด้านล่าง:
DAVIS-Edit
├── Annotations <----- Official annotated masks of DAVIS
├── bear
├── blackswan
├── ...
└── train
├── JPEGImages <----- Official video frames of DAVIS
├── bear
├── blackswan
├── ...
└── train
├── ReferenceImages <----- Annotated reference images for image-based editing on DAVIS-Edit
├── bear.png
├── blackswan.png
├── ...
└── train.png
├── .gitattributes
├── README.md
├── edited_video_caption_dict_image.json <----- Annotated text descriptions for image-based editing on DAVIS-Edit
└── edited_video_caption_dict_text.json <----- Annotated text descriptions for text-based editing on DAVIS-Edit
โดยเฉพาะอย่างยิ่ง edited_video_caption_dict_image.json
และ edited_video_caption_dict_text.json
ถูกสร้างขึ้นเป็นพจนานุกรม Python โดยมีคีย์เป็นชื่อของโฟลเดอร์วิดีโอใน JPEGImages
ตัวอย่างเช่นใน edited_video_caption_dict_text.json
:
{
"bear" : {
"original" : " a bear walking on rocks in a zoo " ,
"similar" : " A panda walking on rocks in a zoo " ,
"changing" : " A rabbit walking on rocks in a zoo "
},
# ...
}
คำอธิบายประกอบของรูปภาพอ้างอิงมีสองโฟลเดอร์ย่อย กล่าวคือ similar
และ changing
ซึ่งสอดคล้องกับคำอธิบายประกอบสำหรับ DAVIS-Edit-S
และ DAVIS-Edit-C
ตามลำดับ โดยที่โครงสร้างถูกสร้างขึ้นในชื่อโฟลเดอร์เดียวกันกับใน JPEGImages
.
เราขอแนะนำอย่างยิ่งให้คุณจัดทำดัชนีองค์ประกอบต่างๆ ใน DAVIS-Edit
ผ่าน ไฟล์คำอธิบายประกอบ โดยเฉพาะคุณอาจอ้างถึงสคริปต์ด้านล่าง:
import os
import json
from tqdm import tqdm
from PIL import Image
# TODO: Modify the configurations here to your local paths
frame_root = 'JPEGImages'
mask_root = 'Annotations'
reference_image_root = 'ReferenceImages/similar' # Or 'ReferenceImages/changing'
annotation_file_path = 'edited_video_caption_dict_text.json'
# Load the annotation file
with open ( annotation_file_path , 'r' ) as f :
annotations = json . load ( f )
# Iterate all data samples in DAVIS-Edit
for video_name in tqdm ( annotations . keys ()):
# Load text prompts
original_prompt = annotations [ video_name ][ 'original' ]
similar_prompt = annotations [ video_name ][ 'similar' ]
changing_prompt = annotations [ video_name ][ 'changing' ]
# Load reference images
reference_image = Image . open ( os . path . join ( reference_image_root , video_name + '.png' ))
# Load video frames
video_frames = []
for path in sorted ( os . listdir ( os . path . join ( frame_root , video_name ))):
if path != 'Thumbs.db' and path != '.DS_store' :
video_frames . append ( Image . open ( os . path . join ( frame_root , path )))
# Load masks
masks = []
for path in sorted ( os . listdir ( os . path . join ( mask_root , video_name ))):
if path != 'Thumbs.db' and path != '.DS_store' :
masks . append ( Image . open ( os . path . join ( frame_root , path )))
# (add further operations that you expect in the lines below)
<กลับสู่สารบัญ>
YouTube-VOS
เราใช้ YouTube-VOS
เพื่อดำเนินกระบวนการฝึกอบรมเครือข่ายการปรับแต่งเชิงลึกตามรูปร่างของเรา ก่อนที่คุณจะเริ่มกระบวนการฝึกอบรม คุณต้องดาวน์โหลดวิดีโอต้นฉบับและคำอธิบายประกอบจากลิงก์นี้ก่อน เมื่อดาวน์โหลดแล้ว ข้อมูลจะเป็นไปตามโครงสร้างด้านล่าง:
youtube-vos
├── JPEGImages <----- Path of source video frames
├── Annotations <----- Path of segmentation masks
└── meta.json <----- Annotation file for the segmentation masks
MiDaS
เพื่อใส่คำอธิบายประกอบแผนที่ความลึก เมื่อเฟรมวิดีโอพร้อมแล้ว ขั้นตอนต่อไปคือการใส่คำอธิบายประกอบในแผนที่เชิงลึกที่เกี่ยวข้อง ตรวจสอบให้แน่ใจว่าคุณดาวน์โหลดตุ้มน้ำหนักโมเดล MiDaS
จากลิงก์นี้โดยเฉพาะ จากนั้น คุณสามารถดำเนินการบรรทัดคำสั่งต่อไปนี้ด้วยสคริปต์อัตโนมัติของเรา:
python scripts/extract_youtube_vos_depths.py --midas-path checkpoints/dpt_swin2_large_384.pt --dataset-path data/youtube-vos/JPEGImages --outdir data/youtube-vos/DepthMaps
U2-Net
เพื่อใส่คำอธิบายประกอบมาสก์รูปร่างเฟรมแรก เครือข่ายการปรับแต่งเชิงลึกของเราใช้ช่องทางเครือข่ายเพิ่มเติมเพื่อใช้มาสก์รูปร่างเฟรมแรกเป็นแนวทาง ดังนั้น คุณจึงต้องใส่คำอธิบายประกอบสำหรับชุดข้อมูล YouTube-VOS
ขั้นแรก ตรวจสอบให้แน่ใจว่าคุณดาวน์โหลดตุ้มน้ำหนักโมเดล U2-Net
จากลิงก์นี้ จากนั้น คุณดำเนินการบรรทัดคำสั่งต่อไปนี้ด้วยสคริปต์อัตโนมัติของเรา:
python scripts/extract_youtube_vos_shapes.py --video-root data/youtube-vos/JPEGImages --model-dir checkpoints/u2net.pth --outdir data/youtube-vos/FirstFrameMasks
ในที่สุดคุณก็พร้อมที่จะดำเนินการกระบวนการฝึกอบรมด้วยบรรทัดคำสั่งต่อไปนี้:
python train_completion_net.py --video-path data/youtube-vos/JPEGImages --shape-path data/youtube-vos/FirstFrameMasks --max-train-steps 50000 --outdir results/shape-guided-depth-refinement --checkpoint-freq 2000 --validation-freq 200
ตุ้มน้ำหนักแบบจำลองที่ได้รับการฝึกจะถูกบันทึกไว้ที่ results/checkpoints
และสามารถตรวจสอบการแสดงผลลัพธ์ขั้นกลางได้ผ่าน tensorboard
โดยบันทึกบันทึกไว้ที่ results/tensorboard
<กลับสู่สารบัญ>
โปรดดูหน้าโครงการของเราสำหรับผลลัพธ์เพิ่มเติมและการเปรียบเทียบที่ดำเนินการโดย StableV2V
<กลับสู่สารบัญ>
หากคุณพบว่างานนี้มีประโยชน์ต่อการวิจัยของคุณ หรือใช้เกณฑ์มาตรฐานการทดสอบ DAVIS-Edit
ของเรา โปรดอ้างอิงรายงานของเรา:
@misc{liu-etal-2024-stablev2v,
title={StableV2V: Stablizing Shape Consistency in Video-to-Video Editing},
author={Chang Liu and Rui Li and Kaidong Zhang and Yunwei Lan and Dong Liu},
year={2024},
eprint={2411.11045},
archivePrefix={arXiv},
primaryClass={cs.CV},
}
<กลับสู่สารบัญ>
<กลับสู่สารบัญ>
repo นี้ได้รับการแก้ไขอย่างมากโดยอิงจาก Diffusers, Ctrl-Adapter, AnyDoor และ RAFT เราขอขอบคุณผู้เขียนอย่างจริงใจสำหรับการใช้งานที่เพ้อฝัน
<กลับสู่สารบัญ>