Stabiele videoverspreiding

door Stabiele videoverspreiding

Voeg de afbeeldingen toe die je nodig hebt door ze te slepen of door lokale afbeeldingen te uploaden. Modellen worden snel verwerkt,

afbeelding 21
afbeelding 20

klik op de knop genereren hieronder. Begin hier met genereren omdat het draait op A100 videogeheugen. Het zal langer duren. Het beeld-naar-video effect verschijnt al na 177 seconden na het genereren.

afbeelding 22
afbeelding 22 1

Stabiele videoverspreiding is een stabiele video diffusiemodel voor hoge-resolutie, state-of-the-art tekst-naar-video en beeld-naar-video generatie. Onlangs werden latente diffusiemodellen voor 2D beeldsynthese getransformeerd in generatieve videomodellen door temporele lagen in te voegen en ze te fine-tunen op kleine video datasets van hoge kwaliteit. De trainingsmethoden in de literatuur variëren echter sterk en het veld moet het nog eens worden over een uniforme strategie voor videodata. In dit artikel identificeren en evalueren we drie verschillende stadia voor het succesvol trainen van een video LDM (Latent Diffusion Model): tekst-naar-beeld pre-training, video pre-training en hoge kwaliteit video fine-tuning.

Deze stabiele video diffusiemodel biedt een nieuwe methode voor het produceren van video's van hoge kwaliteit. Het neemt tekst of afbeeldingen als invoer en genereert realistische video's die gerelateerd zijn aan de invoerinhoud. Dit model heeft een breed toepassingspotentieel in filmproductie, virtual reality, game-ontwikkeling en andere gebieden.

Onderzoek naar stabiele videoverspreiding is cruciaal voor het verbeteren van de technologie voor het genereren van video. Het biedt onderzoekers een kader om trainingsmethoden en gegevensstrategieën voor modellen voor het genereren van video verder te onderzoeken om de kwaliteit en getrouwheid van gegenereerde video's te verbeteren.

Stabiliteit AI, een bekend bedrijf dat AI-tekeningen maakt, heeft eindelijk zijn intrede gedaan in de AI-gegenereerde video-industrie.

Afbeelding 18

Op dinsdag deze week, Stabiele videoverspreiding, een model voor het genereren van video's gebaseerd op Stable Diffusion, kwam uit en de AI-gemeenschap begon er meteen over te discussiëren.

Stabiele videoverspreiding beeld-videomodelkaart

Stabiele videoverspreiding (SVD) Beeld-naar-video is een diffusiemodel dat een stilstaand beeld als conditioneringsframe neemt en er een video van genereert.

640
640 1
640 2

(SVD) Image-to-Video is een latent diffusiemodel dat is getraind om korte videoclips te genereren vanuit een beeldconditionering. Dit model werd getraind om 25 frames te genereren met een resolutie van 576×1024 gegeven een contextframe van dezelfde grootte, verfijnd van SVD beeld naar video [14 frames]. We verfijnen ook de veelgebruikte f8-decoder voor temporele consistentie. Voor het gemak voorzien we het model ook van de standaard frame-wise decoder hier.

  • Ontwikkeld door: Stabiliteit AI
  • Gefinancierd door: Stabiliteit AI
  • Type model: Generatief beeld-videomodel
  • Afgestemd op het model: SVD beeld naar video [14 frames]

Voor onderzoeksdoeleinden raden we onze generatieve modellen Github archief (https://github.com/Stability-AI/generative-models), die de populairste diffusieraamwerken implementeert (zowel training als inferentie).

De bovenstaande grafiek evalueert de voorkeur van gebruikers voor SVD-Image-to-Video boven GEN-2 en PikaLabs. SVD-Image-to-Video heeft de voorkeur van menselijke stemmers in termen van videokwaliteit. Voor details over het gebruikersonderzoek verwijzen we naar de onderzoeksdocument

Het model is alleen bedoeld voor onderzoeksdoeleinden. Mogelijke onderzoeksgebieden en -taken zijn

  • Onderzoek naar generatieve modellen.
  • Veilig gebruik van modellen die schadelijke inhoud kunnen genereren.
  • De beperkingen en vooroordelen van generatieve modellen onderzoeken en begrijpen.
  • Genereren van kunstwerken en gebruik in design en andere artistieke processen.
  • Toepassingen in educatieve of creatieve tools.

Uitgesloten toepassingen worden hieronder beschreven.

Het model is niet getraind om feitelijke of waarheidsgetrouwe weergaven van mensen of gebeurtenissen te maken, en daarom valt het gebruik van het model om dergelijke inhoud te genereren buiten het bereik van de mogelijkheden van dit model. Het model mag niet worden gebruikt op een manier die in strijd is met Stability AI's Beleid voor acceptabel gebruik.

  • De gegenereerde video's zijn vrij kort (<= 4sec) en het model bereikt geen perfect fotorealisme.
  • Het model kan video's zonder beweging genereren, of zeer langzame camerabewegingen.
  • Het model kan niet worden bestuurd via tekst.
  • Het model kan geen leesbare tekst weergeven.
  • Gezichten en mensen in het algemeen worden mogelijk niet goed gegenereerd.
  • Het autoencoding-gedeelte van het model is lossy.

Het model is alleen bedoeld voor onderzoeksdoeleinden.

Bekijk https://github.com/Stability-AI/generative-models

Afbeelding 18

Generatieve modellen door Stability AI

steekproef1

21 november 2023

  • We brengen Stable Video Diffusion, een beeld-naar-videomodel, uit voor onderzoeksdoeleinden:
    • SVD: Dit model is getraind om 14 frames met een resolutie van 576×1024 te genereren, gegeven een contextframe van dezelfde grootte. We gebruiken de standaard afbeeldingsencoder uit SD 2.1, maar vervangen de decoder door een tijdsbewuste deflickering decoder.
    • SVD-XT: Dezelfde architectuur als SVD maar afgestemd op het genereren van 25 frames.
    • We bieden een streamlit demo scripts/demo/video_sampling.py en een zelfstandig python-script scripts/samenstellen/simpel_video_voorbeeld.py voor inferentie van beide modellen.
    • Naast het model brengen we een technisch verslag.

26 juli 2023

steekproef2

4 juli 2023

  • Een technisch rapport over SDXL is nu beschikbaar hier.

22 juni 2023

  • We brengen twee nieuwe verspreidingsmodellen uit voor onderzoeksdoeleinden:
    • SDXL-basis-0.9: Het basismodel werd getraind op verschillende beeldverhoudingen op afbeeldingen met een resolutie van 1024^2. Het basismodel gebruikt OpenCLIP-ViT/G en CLIP-ViT/L voor tekstcodering, terwijl het refiner model alleen het OpenCLIP model gebruikt.
    • SDXL-verfijner-0.9: De verfijner is getraind om kleine ruisniveaus van gegevens van hoge kwaliteit te denatureren en zal daarom naar verwachting niet werken als een tekst-naar-beeld model; in plaats daarvan moet het alleen worden gebruikt als een beeld-naar-beeld model.

Als u toegang wilt krijgen tot deze modellen voor uw onderzoek, kunt u een aanvraag indienen via een van de volgende links: SDXL-0.9-Basismodelen SDXL-0.9-Refiner. Dit betekent dat u een aanvraag kunt indienen voor een van de twee koppelingen - en als u deze krijgt - hebt u toegang tot beide. Meld u aan bij uw Hugging Face-account met het e-mailadres van uw organisatie om toegang aan te vragen. We zijn van plan om binnenkort (juli) een volledige release te doen.

Algemene filosofie

Modulariteit is koning. Deze repo implementeert een config-gestuurde aanpak waarbij we submodules bouwen en combineren door het aanroepen van instantiëren_van_config() op objecten gedefinieerd in yaml-configuraties. Zie configuraties/ voor veel voorbeelden.

Changelog van de oude ldm codebase

Voor training gebruiken we PyTorch Bliksemmaar het zou gemakkelijk moeten zijn om andere trainingswrappers rond de basismodules te gebruiken. De kernklasse van het diffusiemodel (voorheen LatentDiffusienu DiffusieEngine) is opgeschoond:

  • Geen uitgebreide subklassen meer! We behandelen nu alle soorten conditioneringsingangen (vectoren, reeksen en ruimtelijke conditioneringen en alle combinaties daarvan) in één enkele klasse: GeneralConditionerzie sgm/modules/encoders/modules.py.
  • We scheiden guiders (zoals classifier-vrije guiders, zie sgm/modules/diffusiemodules/guiders.py) van de samplers (sgm/modules/diffusiemodules/bemonstering.py), en de samplers zijn onafhankelijk van het model.
  • We nemen de "denoiser kader" voor zowel training als inferentie (meest opvallende verandering is waarschijnlijk de optie om continue tijdmodellen te trainen):
    • Discrete tijdmodellen (denoisers) zijn eenvoudigweg een speciaal geval van continue tijdmodellen (denoisers); zie sgm/modules/diffusiemodules/denoiser.py.
    • De volgende kenmerken zijn nu onafhankelijk: weging van de diffusieverliesfunctie (sgm/modules/diffusiemodules/denoiser_weging.py), preconditionering van het netwerk (sgm/modules/diffusiemodules/denoiser_scaling.py), en bemonstering van geluidsniveaus tijdens de training (sgm/modules/diffusiemodules/sigma_sampling.py).
  • Autocoderingsmodellen zijn ook opgeschoond.

1. Kloon de repo

git kloon [email protected]:Stability-AI/generative-models.git cd generatieve modellen

2. De virtualenv instellen

Hierbij wordt ervan uitgegaan dat je naar de generatieve modellen root na het klonen.

OPMERKING: Dit wordt getest onder python3.10. Voor andere python versies kun je versieconflicten tegenkomen.

PyTorch 2.0# installeer vereiste pakketten van pypi python3 -m venv .pt2 source .pt2/bin/activate pip3 install -r requirements/pt2.txt

3. Installeer sgm

pip3 installeren .

4. Installeer sdata voor opleiding

pip3 install -e git+https://github.com/Stability-AI/datapipelines.git@main#egg=sdata

Verpakking

Dit archief gebruikt PEP 517-conforme verpakking met Luik.

Om een distribueerbaar wiel te bouwen, installeer je luik en ren luik bouwen (met vermelding van -wiel zal het bouwen van een sdist overslaan, wat niet nodig is).

pip installeer luik
luik bouwen -t wiel

U vindt het gebouwde pakket in dist/. Je kunt het wiel installeren met pip installeer dist/*.whl.

Merk op dat het pakket niet specificeert momenteel afhankelijkheden; u moet de vereiste pakketten, afhankelijk van uw gebruikssituatie en PyTorch-versie, handmatig installeren.

We bieden een streamlit demo voor tekst-naar-beeld en beeld-naar-beeld sampling in scripts/demo/bemonstering.py. We geven bestands-hashes voor zowel het volledige bestand als voor alleen de opgeslagen tensoren in het bestand ( zie Model Spec voor een script om dat te evalueren). De volgende modellen worden momenteel ondersteund:

  • SDXL-basis-1.0Bestand Hash (sha256): 31e35c80fc4829d14f90153f4c74cd59c90b779f6afe05a74cd6120b893f7e5b Tensordata Hash (sha256): 0xd7a9105a900fd52748f20725fe52fe52b507fd36bee4fc107b1550a26e6ee1d7
  • SDXL-verfijner-1.0Bestand Hash (sha256): 7440042bbdc8a24813002c09b6b69b64dc90fded4472613437b7f55f9b7d9c5f Tensordata Hash (sha256): 0x1a77d21bebc4b4de78c474a90cb74dc0d2217caf4061971dbfa75ad406b75d81
  • SDXL-basis-0.9
  • SDXL-verfijner-0.9
  • SD-2.1-512
  • SD-2.1-768

Gewichten voor SDXL:

SDXL-1.0: De gewichten van SDXL-1.0 zijn beschikbaar (onder voorbehoud van een CreatieveML Open RAIL++-M licentie) hier:

SDXL-0.9: De gewichten van SDXL-0.9 zijn beschikbaar en onderworpen aan een onderzoekslicentie. Als u toegang wilt krijgen tot deze modellen voor uw onderzoek, kunt u een aanvraag indienen via een van de volgende links: SDXL-base-0.9 modelen SDXL-verfijner-0.9. Dit betekent dat u een aanvraag kunt indienen voor een van de twee koppelingen - en als u deze krijgt - hebt u toegang tot beide. Meld u aan bij uw Hugging Face-account met het e-mailadres van uw organisatie om toegang aan te vragen.

Plaats de gewichten na het verkrijgen in controleposten/. Start vervolgens de demo met

streamlit run scripts/demo/sampling.py --server.port

Afbeeldingen gegenereerd met onze code gebruiken de onzichtbaar watermerk bibliotheek om een onzichtbaar watermerk in te sluiten in de uitvoer van het model. We leveren ook een script om dat watermerk eenvoudig te detecteren. Merk op dat dit watermerk niet hetzelfde is als in eerdere Stable Diffusion 1.x/2.x versies.

Om het script uit te voeren heb je een werkende installatie nodig zoals hierboven of probeer een experimenteel importeren met slechts een minimaal aantal pakketten:python -m venv .detect source .detect/bin/activate pip install "numpy>=1.17" "PyWavelets>=1.1.1" "opencv-python>=4.1.0.25" pip install -no-deps invisible-watermark

Om het script uit te voeren heb je een werkende installatie nodig zoals hierboven beschreven. Het script is dan te gebruiken op de volgende manieren (vergeet niet om je virtuele omgeving van tevoren te activeren, bijv. bron .pt1/bin/activeren):# test een enkel bestand python scripts/demo/detect.py # test meerdere bestanden tegelijk python scripts/demo/detect.py ... # test alle bestanden in een specifieke map python scripts/demo/detect.py /*

We geven voorbeeldconfiguraties in instellingen/voorbeeld_training. Om een training te starten, voert u

python main.py --base configs/ configs/

waarbij configuraties van links naar rechts worden samengevoegd (latere configuraties overschrijven dezelfde waarden). Dit kan gebruikt worden om model-, training- en data-configuraties te combineren. Ze kunnen echter ook allemaal gedefinieerd worden in een enkele configuratie. Om bijvoorbeeld een pixelgebaseerde diffusiemodeltraining op basis van klassen te draaien op MNIST, startpython main.py -base configs/voorbeeld_training/toy/mnist_cond.yaml

OPMERKING 1: De niet-toy-dataset configuraties gebruiken configuraties/voorbeeld_training/imagenet-f8_cond.yamlconfigigs/voorbeeld_training/txt2img-clipl.yaml en configigs/voorbeeld_training/txt2img-clipl-legacy-ucg-training.yaml voor training moet worden aangepast, afhankelijk van de gebruikte dataset (die naar verwachting wordt opgeslagen in een tar-bestand in de webdataset-formaat). Om de delen te vinden die moeten worden aangepast, zoekt u naar opmerkingen die het volgende bevatten GEBRUIKER: in de respectieve configuratie.

OPMERKING 2: Dit archief ondersteunt zowel pytorch1.13 en pytorch2voor het trainen van generatieve modellen. Maar voor autoencodertraining zoals bijvoorbeeld in configs/voorbeeld_training/autoencoder/kl-f4/imagenet-attnfree-logvar.yamlalleen pytorch1.13 wordt ondersteund.

OPMERKING 3: Het trainen van latente generatieve modellen (zoals bijvoorbeeld in configuraties/voorbeeld_training/imagenet-f8_cond.yaml) moet het controlepunt worden opgehaald uit Knuffelend Gezicht en het vervangen van de CKPT_PATH plaatshouder in deze regel. Hetzelfde moet worden gedaan voor de meegeleverde tekst-naar-beeld-configuraties.

Conditioner

De GeneralConditioner wordt geconfigureerd via de conditioner_config. De enige eigenschap is emb_modellen, een lijst van verschillende inbeddingen (allemaal geërfd van AbstractEmbModel) die worden gebruikt om het generatieve model te conditioneren. Alle inbeddingen moeten aangeven of ze trainbaar zijn of niet (is_trainbaarstandaard Valse), wordt een begeleidingsuitval zonder classificatie gebruikt (ucg_tariefstandaard 0) en een invoertoets (input_key), bijvoorbeeld, txt voor tekstconditionering of cls voor klasse-conditionering. Bij het berekenen van conditioneringen krijgt de inbedder batch[input_key] als invoer. We ondersteunen momenteel conditioneringen van twee tot vier dimensies en conditioneringen van verschillende inbeddingen worden op gepaste wijze aan elkaar gekoppeld. Merk op dat de volgorde van de embedders in de conditioner_config is belangrijk.

Netwerk

Het neurale netwerk wordt ingesteld via de netwerk_config. Vroeger heette dit unet_config, wat niet algemeen genoeg is omdat we van plan zijn om te experimenteren met op transformator gebaseerde diffusie-backbones.

Verlies

Het verlies wordt geconfigureerd via verlies_config. Voor standaard diffusiemodeltraining moet je het volgende instellen sigma_sampler_config.

Zoals hierboven besproken is de sampler onafhankelijk van het model. In de sampler_configstellen we het type numerieke solver in, het aantal stappen, het type discretisatie, en bijvoorbeeld ook guidance wrappers voor classifier-free guidance.

Voor grootschalige training raden we aan de gegevenspijplijnen van onze datapijplijnen project. Het project is opgenomen in de requirement en wordt automatisch opgenomen bij het volgen van de stappen uit de Installatiegedeelte. Kleine map-achtige datasets moeten hier in het archief worden gedefinieerd (bijv. MNIST, CIFAR-10, ...), en een dict van gegevenssleutels/waarden retourneren, bijv.,voorbeeld = {"jpg": x, # dit is een tensor -1...1 chw "txt": "een mooie afbeelding"}

waarbij we afbeeldingen verwachten in -1...1, kanaal-eerst formaat.

nl_NL_formalDutch