Add tests with/without new parseq override option.
parent
745f94729b
commit
c9335770fc
|
|
@ -74,7 +74,52 @@
|
|||
|
||||
'''
|
||||
# ---
|
||||
# name: test_with_parseq_inline
|
||||
# name: test_with_parseq_inline_with_overrides
|
||||
'''
|
||||
1
|
||||
00:00:00,000 --> 00:00:00,016
|
||||
F#: 0; Cadence: True; Seed: 56; Angle: 0; Tr.C.X: 0.500; Tr.C.Y: 0.500; Zoom: 1.002; TrX: 0; TrY: 0; TrZ: 0; RotX: 0; RotY: 0; RotZ: 0; PerFlT: 0; PerFlP: 0; PerFlG: 0; PerFlFV: 53; Noise: 0.040; StrSch: 0.650; CtrstSch: 1; CFGSch: 7; P2PCfgSch: 1.500; SubSSch: 55; SubSStrSch: 0; CkptSch: model1.ckpt; StepsSch: 25; SeedSch: 55; SamplerSchedule: Euler a; ClipskipSchedule: 2; NoiseMultiplierSchedule: 1.050; MaskSchedule: {video_mask}; NoiseMaskSchedule: {video_mask}; AmountSchedule: 0.050; KernelSchedule: 5; SigmaSchedule: 1; ThresholdSchedule: 0; AspectRatioSchedule: 1; FieldOfViewSchedule: 70; NearSchedule: 200; CadenceFlowFactorSchedule: 1; RedoFlowFactorSchedule: 1; FarSchedule: 10000; HybridCompAlphaSchedule: 0.500; HybridCompMaskBlendAlphaSchedule: 0.500; HybridCompMaskContrastSchedule: 1; HybridCompMaskAutoContrastCutoffHighSchedule: 100; HybridCompMaskAutoContrastCutoffLowSchedule: 0; HybridFlowFactorSchedule: 1; Prompt: Parseq prompt! --neg neg parseq prompt!
|
||||
|
||||
2
|
||||
00:00:00,016 --> 00:00:00,033
|
||||
F#: 1; Cadence: False; Seed: 56; Angle: 30.111; Tr.C.X: 0.500; Tr.C.Y: 0.500; Zoom: 1.003; TrX: 0; TrY: 0; TrZ: 0; RotX: 0; RotY: 0; RotZ: 0; PerFlT: 0; PerFlP: 0; PerFlG: 0; PerFlFV: 53; Noise: 0.040; StrSch: 0.650; CtrstSch: 1; CFGSch: 7; P2PCfgSch: 1.500; SubSSch: 56; SubSStrSch: 0.100; CkptSch: model1.ckpt; StepsSch: 25; SeedSch: 55.100; SamplerSchedule: Euler a; ClipskipSchedule: 2; NoiseMultiplierSchedule: 1.050; MaskSchedule: {video_mask}; NoiseMaskSchedule: {video_mask}; AmountSchedule: 0.050; KernelSchedule: 5; SigmaSchedule: 1; ThresholdSchedule: 0; AspectRatioSchedule: 1; FieldOfViewSchedule: 70; NearSchedule: 200; CadenceFlowFactorSchedule: 1; RedoFlowFactorSchedule: 1; FarSchedule: 10000; HybridCompAlphaSchedule: 0.500; HybridCompMaskBlendAlphaSchedule: 0.500; HybridCompMaskContrastSchedule: 1; HybridCompMaskAutoContrastCutoffHighSchedule: 100; HybridCompMaskAutoContrastCutoffLowSchedule: 0; HybridFlowFactorSchedule: 1; Prompt: Parseq prompt! --neg neg parseq prompt!
|
||||
|
||||
3
|
||||
00:00:00,033 --> 00:00:00,050
|
||||
F#: 2; Cadence: True; Seed: 56; Angle: 14.643; Tr.C.X: 0.500; Tr.C.Y: 0.500; Zoom: 1.003; TrX: 0; TrY: 0; TrZ: 0; RotX: 0; RotY: 0; RotZ: 0; PerFlT: 0; PerFlP: 0; PerFlG: 0; PerFlFV: 53; Noise: 0.040; StrSch: 0.650; CtrstSch: 1; CFGSch: 7; P2PCfgSch: 1.500; SubSSch: 56; SubSStrSch: 0.200; CkptSch: model1.ckpt; StepsSch: 25; SeedSch: 55.200; SamplerSchedule: Euler a; ClipskipSchedule: 2; NoiseMultiplierSchedule: 1.050; MaskSchedule: {video_mask}; NoiseMaskSchedule: {video_mask}; AmountSchedule: 0.050; KernelSchedule: 5; SigmaSchedule: 1; ThresholdSchedule: 0; AspectRatioSchedule: 1; FieldOfViewSchedule: 70; NearSchedule: 200; CadenceFlowFactorSchedule: 1; RedoFlowFactorSchedule: 1; FarSchedule: 10000; HybridCompAlphaSchedule: 0.500; HybridCompMaskBlendAlphaSchedule: 0.500; HybridCompMaskContrastSchedule: 1; HybridCompMaskAutoContrastCutoffHighSchedule: 100; HybridCompMaskAutoContrastCutoffLowSchedule: 0; HybridFlowFactorSchedule: 1; Prompt: Parseq prompt! --neg neg parseq prompt!
|
||||
|
||||
4
|
||||
00:00:00,050 --> 00:00:00,066
|
||||
F#: 3; Cadence: False; Seed: 56; Angle: -8.348; Tr.C.X: 0.500; Tr.C.Y: 0.500; Zoom: 1.003; TrX: 0; TrY: 0; TrZ: 0; RotX: 0; RotY: 0; RotZ: 0; PerFlT: 0; PerFlP: 0; PerFlG: 0; PerFlFV: 53; Noise: 0.040; StrSch: 0.650; CtrstSch: 1; CFGSch: 7; P2PCfgSch: 1.500; SubSSch: 56; SubSStrSch: 0.300; CkptSch: model1.ckpt; StepsSch: 25; SeedSch: 55.300; SamplerSchedule: Euler a; ClipskipSchedule: 2; NoiseMultiplierSchedule: 1.050; MaskSchedule: {video_mask}; NoiseMaskSchedule: {video_mask}; AmountSchedule: 0.050; KernelSchedule: 5; SigmaSchedule: 1; ThresholdSchedule: 0; AspectRatioSchedule: 1; FieldOfViewSchedule: 70; NearSchedule: 200; CadenceFlowFactorSchedule: 1; RedoFlowFactorSchedule: 1; FarSchedule: 10000; HybridCompAlphaSchedule: 0.500; HybridCompMaskBlendAlphaSchedule: 0.500; HybridCompMaskContrastSchedule: 1; HybridCompMaskAutoContrastCutoffHighSchedule: 100; HybridCompMaskAutoContrastCutoffLowSchedule: 0; HybridFlowFactorSchedule: 1; Prompt: Parseq prompt! --neg neg parseq prompt!
|
||||
|
||||
5
|
||||
00:00:00,066 --> 00:00:00,083
|
||||
F#: 4; Cadence: True; Seed: 56; Angle: -27.050; Tr.C.X: 0.500; Tr.C.Y: 0.500; Zoom: 1.003; TrX: 0; TrY: 0; TrZ: 0; RotX: 0; RotY: 0; RotZ: 0; PerFlT: 0; PerFlP: 0; PerFlG: 0; PerFlFV: 53; Noise: 0.040; StrSch: 0.650; CtrstSch: 1; CFGSch: 7; P2PCfgSch: 1.500; SubSSch: 56; SubSStrSch: 0.400; CkptSch: model1.ckpt; StepsSch: 25; SeedSch: 55.400; SamplerSchedule: Euler a; ClipskipSchedule: 2; NoiseMultiplierSchedule: 1.050; MaskSchedule: {video_mask}; NoiseMaskSchedule: {video_mask}; AmountSchedule: 0.050; KernelSchedule: 5; SigmaSchedule: 1; ThresholdSchedule: 0; AspectRatioSchedule: 1; FieldOfViewSchedule: 70; NearSchedule: 200; CadenceFlowFactorSchedule: 1; RedoFlowFactorSchedule: 1; FarSchedule: 10000; HybridCompAlphaSchedule: 0.500; HybridCompMaskBlendAlphaSchedule: 0.500; HybridCompMaskContrastSchedule: 1; HybridCompMaskAutoContrastCutoffHighSchedule: 100; HybridCompMaskAutoContrastCutoffLowSchedule: 0; HybridFlowFactorSchedule: 1; Prompt: Parseq prompt! --neg neg parseq prompt!
|
||||
|
||||
6
|
||||
00:00:00,083 --> 00:00:00,100
|
||||
F#: 5; Cadence: False; Seed: 56; Angle: -31.856; Tr.C.X: 0.500; Tr.C.Y: 0.500; Zoom: 1.004; TrX: 0; TrY: 0; TrZ: 0; RotX: 0; RotY: 0; RotZ: 0; PerFlT: 0; PerFlP: 0; PerFlG: 0; PerFlFV: 53; Noise: 0.040; StrSch: 0.650; CtrstSch: 1; CFGSch: 7; P2PCfgSch: 1.500; SubSSch: 56; SubSStrSch: 0.500; CkptSch: model1.ckpt; StepsSch: 25; SeedSch: 55.500; SamplerSchedule: Euler a; ClipskipSchedule: 2; NoiseMultiplierSchedule: 1.050; MaskSchedule: {video_mask}; NoiseMaskSchedule: {video_mask}; AmountSchedule: 0.050; KernelSchedule: 5; SigmaSchedule: 1; ThresholdSchedule: 0; AspectRatioSchedule: 1; FieldOfViewSchedule: 70; NearSchedule: 200; CadenceFlowFactorSchedule: 1; RedoFlowFactorSchedule: 1; FarSchedule: 10000; HybridCompAlphaSchedule: 0.500; HybridCompMaskBlendAlphaSchedule: 0.500; HybridCompMaskContrastSchedule: 1; HybridCompMaskAutoContrastCutoffHighSchedule: 100; HybridCompMaskAutoContrastCutoffLowSchedule: 0; HybridFlowFactorSchedule: 1; Prompt: Parseq prompt! --neg neg parseq prompt!
|
||||
|
||||
7
|
||||
00:00:00,100 --> 00:00:00,116
|
||||
F#: 6; Cadence: True; Seed: 56; Angle: -20.298; Tr.C.X: 0.500; Tr.C.Y: 0.500; Zoom: 1.004; TrX: 0; TrY: 0; TrZ: 0; RotX: 0; RotY: 0; RotZ: 0; PerFlT: 0; PerFlP: 0; PerFlG: 0; PerFlFV: 53; Noise: 0.040; StrSch: 0.650; CtrstSch: 1; CFGSch: 7; P2PCfgSch: 1.500; SubSSch: 56; SubSStrSch: 0.600; CkptSch: model1.ckpt; StepsSch: 25; SeedSch: 55.600; SamplerSchedule: Euler a; ClipskipSchedule: 2; NoiseMultiplierSchedule: 1.050; MaskSchedule: {video_mask}; NoiseMaskSchedule: {video_mask}; AmountSchedule: 0.050; KernelSchedule: 5; SigmaSchedule: 1; ThresholdSchedule: 0; AspectRatioSchedule: 1; FieldOfViewSchedule: 70; NearSchedule: 200; CadenceFlowFactorSchedule: 1; RedoFlowFactorSchedule: 1; FarSchedule: 10000; HybridCompAlphaSchedule: 0.500; HybridCompMaskBlendAlphaSchedule: 0.500; HybridCompMaskContrastSchedule: 1; HybridCompMaskAutoContrastCutoffHighSchedule: 100; HybridCompMaskAutoContrastCutoffLowSchedule: 0; HybridFlowFactorSchedule: 1; Prompt: Parseq prompt! --neg neg parseq prompt!
|
||||
|
||||
8
|
||||
00:00:00,116 --> 00:00:00,133
|
||||
F#: 7; Cadence: False; Seed: 56; Angle: 1.688; Tr.C.X: 0.500; Tr.C.Y: 0.500; Zoom: 1.004; TrX: 0; TrY: 0; TrZ: 0; RotX: 0; RotY: 0; RotZ: 0; PerFlT: 0; PerFlP: 0; PerFlG: 0; PerFlFV: 53; Noise: 0.040; StrSch: 0.650; CtrstSch: 1; CFGSch: 7; P2PCfgSch: 1.500; SubSSch: 56; SubSStrSch: 0.700; CkptSch: model1.ckpt; StepsSch: 25; SeedSch: 55.700; SamplerSchedule: Euler a; ClipskipSchedule: 2; NoiseMultiplierSchedule: 1.050; MaskSchedule: {video_mask}; NoiseMaskSchedule: {video_mask}; AmountSchedule: 0.050; KernelSchedule: 5; SigmaSchedule: 1; ThresholdSchedule: 0; AspectRatioSchedule: 1; FieldOfViewSchedule: 70; NearSchedule: 200; CadenceFlowFactorSchedule: 1; RedoFlowFactorSchedule: 1; FarSchedule: 10000; HybridCompAlphaSchedule: 0.500; HybridCompMaskBlendAlphaSchedule: 0.500; HybridCompMaskContrastSchedule: 1; HybridCompMaskAutoContrastCutoffHighSchedule: 100; HybridCompMaskAutoContrastCutoffLowSchedule: 0; HybridFlowFactorSchedule: 1; Prompt: Parseq prompt! --neg neg parseq prompt!
|
||||
|
||||
9
|
||||
00:00:00,133 --> 00:00:00,150
|
||||
F#: 8; Cadence: True; Seed: 56; Angle: 22.806; Tr.C.X: 0.500; Tr.C.Y: 0.500; Zoom: 1.004; TrX: 0; TrY: 0; TrZ: 0; RotX: 0; RotY: 0; RotZ: 0; PerFlT: 0; PerFlP: 0; PerFlG: 0; PerFlFV: 53; Noise: 0.040; StrSch: 0.650; CtrstSch: 1; CFGSch: 7; P2PCfgSch: 1.500; SubSSch: 56; SubSStrSch: 0.800; CkptSch: model1.ckpt; StepsSch: 25; SeedSch: 55.800; SamplerSchedule: Euler a; ClipskipSchedule: 2; NoiseMultiplierSchedule: 1.050; MaskSchedule: {video_mask}; NoiseMaskSchedule: {video_mask}; AmountSchedule: 0.050; KernelSchedule: 5; SigmaSchedule: 1; ThresholdSchedule: 0; AspectRatioSchedule: 1; FieldOfViewSchedule: 70; NearSchedule: 200; CadenceFlowFactorSchedule: 1; RedoFlowFactorSchedule: 1; FarSchedule: 10000; HybridCompAlphaSchedule: 0.500; HybridCompMaskBlendAlphaSchedule: 0.500; HybridCompMaskContrastSchedule: 1; HybridCompMaskAutoContrastCutoffHighSchedule: 100; HybridCompMaskAutoContrastCutoffLowSchedule: 0; HybridFlowFactorSchedule: 1; Prompt: Parseq prompt! --neg neg parseq prompt!
|
||||
|
||||
10
|
||||
00:00:00,150 --> 00:00:00,166
|
||||
F#: 9; Cadence: False; Seed: 56; Angle: 32.209; Tr.C.X: 0.500; Tr.C.Y: 0.500; Zoom: 1.004; TrX: 0; TrY: 0; TrZ: 0; RotX: 0; RotY: 0; RotZ: 0; PerFlT: 0; PerFlP: 0; PerFlG: 0; PerFlFV: 53; Noise: 0.040; StrSch: 0.650; CtrstSch: 1; CFGSch: 7; P2PCfgSch: 1.500; SubSSch: 56; SubSStrSch: 0.900; CkptSch: model1.ckpt; StepsSch: 25; SeedSch: 55.900; SamplerSchedule: Euler a; ClipskipSchedule: 2; NoiseMultiplierSchedule: 1.050; MaskSchedule: {video_mask}; NoiseMaskSchedule: {video_mask}; AmountSchedule: 0.050; KernelSchedule: 5; SigmaSchedule: 1; ThresholdSchedule: 0; AspectRatioSchedule: 1; FieldOfViewSchedule: 70; NearSchedule: 200; CadenceFlowFactorSchedule: 1; RedoFlowFactorSchedule: 1; FarSchedule: 10000; HybridCompAlphaSchedule: 0.500; HybridCompMaskBlendAlphaSchedule: 0.500; HybridCompMaskContrastSchedule: 1; HybridCompMaskAutoContrastCutoffHighSchedule: 100; HybridCompMaskAutoContrastCutoffLowSchedule: 0; HybridFlowFactorSchedule: 1; Prompt: Parseq prompt! --neg neg parseq prompt!
|
||||
|
||||
|
||||
'''
|
||||
# ---
|
||||
# name: test_with_parseq_inline_without_overrides
|
||||
'''
|
||||
1
|
||||
00:00:00,000 --> 00:00:00,050
|
||||
|
|
|
|||
|
|
@ -14,17 +14,21 @@
|
|||
|
||||
# Contact the authors: https://deforum.github.io/
|
||||
|
||||
import os
|
||||
import json
|
||||
from scripts.deforum_api_models import DeforumJobStatus, DeforumJobStatusCategory, DeforumJobPhase
|
||||
import math
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
import requests
|
||||
from moviepy.editor import VideoFileClip
|
||||
import glob
|
||||
from pathlib import Path
|
||||
from utils import wait_for_job_to_complete, wait_for_job_to_enter_phase, wait_for_job_to_enter_status, API_BASE_URL
|
||||
from utils import (API_BASE_URL, wait_for_job_to_complete,
|
||||
wait_for_job_to_enter_phase, wait_for_job_to_enter_status)
|
||||
|
||||
from scripts.deforum_api_models import (DeforumJobPhase, DeforumJobStatus,
|
||||
DeforumJobStatusCategory)
|
||||
from scripts.deforum_helpers.subtitle_handler import get_user_values
|
||||
|
||||
|
||||
def test_simple_settings(snapshot):
|
||||
with open('tests/testdata/simple.input_settings.txt', 'r') as settings_file:
|
||||
deforum_settings = json.load(settings_file)
|
||||
|
|
@ -105,7 +109,7 @@ def test_3d_mode(snapshot):
|
|||
assert clip.size == [deforum_settings['W'], deforum_settings['H']] , "Video dimensions are not as expected"
|
||||
|
||||
|
||||
def test_with_parseq_inline(snapshot):
|
||||
def test_with_parseq_inline_without_overrides(snapshot):
|
||||
with open('tests/testdata/simple.input_settings.txt', 'r') as settings_file:
|
||||
deforum_settings = json.load(settings_file)
|
||||
|
||||
|
|
@ -113,6 +117,7 @@ def test_with_parseq_inline(snapshot):
|
|||
parseq_data = json.load(parseq_file)
|
||||
|
||||
deforum_settings['parseq_manifest'] = json.dumps(parseq_data)
|
||||
deforum_settings["parseq_non_schedule_overrides"] = False
|
||||
|
||||
response = requests.post(API_BASE_URL+"/batches", json={
|
||||
"deforum_settings":[deforum_settings],
|
||||
|
|
@ -140,6 +145,42 @@ def test_with_parseq_inline(snapshot):
|
|||
assert clip.size == [deforum_settings['W'], deforum_settings['H']] , "Video dimensions are not as expected"
|
||||
|
||||
|
||||
def test_with_parseq_inline_with_overrides(snapshot):
|
||||
with open('tests/testdata/simple.input_settings.txt', 'r') as settings_file:
|
||||
deforum_settings = json.load(settings_file)
|
||||
|
||||
with open('tests/testdata/parseq.json', 'r') as parseq_file:
|
||||
parseq_data = json.load(parseq_file)
|
||||
|
||||
deforum_settings['parseq_manifest'] = json.dumps(parseq_data)
|
||||
deforum_settings["parseq_non_schedule_overrides"] = True
|
||||
|
||||
response = requests.post(API_BASE_URL+"/batches", json={
|
||||
"deforum_settings":[deforum_settings],
|
||||
"options_overrides": {
|
||||
"deforum_save_gen_info_as_srt": True,
|
||||
"deforum_save_gen_info_as_srt_params": get_user_values(),
|
||||
}
|
||||
})
|
||||
response.raise_for_status()
|
||||
job_id = response.json()["job_ids"][0]
|
||||
jobStatus = wait_for_job_to_complete(job_id)
|
||||
|
||||
assert jobStatus.status == DeforumJobStatusCategory.SUCCEEDED, f"Job {job_id} failed: {jobStatus}"
|
||||
|
||||
# Ensure parameters used at each frame have not regressed
|
||||
srt_filenname = os.path.join(jobStatus.outdir, f"{jobStatus.timestring}.srt")
|
||||
with open(srt_filenname, 'r') as srt_file:
|
||||
assert srt_file.read() == snapshot
|
||||
|
||||
# Ensure video format is as expected
|
||||
video_filename = os.path.join(jobStatus.outdir, f"{jobStatus.timestring}.mp4")
|
||||
clip = VideoFileClip(video_filename)
|
||||
expected_frame_count = len(parseq_data['rendered_frames'])
|
||||
assert clip.fps == parseq_data['options']['output_fps'] , "Video FPS does not match input settings"
|
||||
assert math.ceil(clip.duration * clip.fps) == expected_frame_count, "Video frame count does not match input settings"
|
||||
assert clip.size == [deforum_settings['W'], deforum_settings['H']] , "Video dimensions are not as expected"
|
||||
|
||||
# def test_with_parseq_url():
|
||||
|
||||
def test_with_hybrid_video(snapshot):
|
||||
|
|
|
|||
|
|
@ -44,7 +44,8 @@
|
|||
"options": {
|
||||
"input_fps": 20,
|
||||
"bpm": 140,
|
||||
"output_fps": 20,
|
||||
"output_fps": 60,
|
||||
"cadence": 2,
|
||||
"cc_window_width": 0,
|
||||
"cc_window_slide_rate": 1,
|
||||
"cc_use_input": false
|
||||
|
|
|
|||
Loading…
Reference in New Issue