Επεξεργασία Βίντεο με Τεχνητή Νοημοσύνη

Κοινοποίηση:

Αντικαθιστούμε μέρος ενός βίντεο με εικόνες από τεχνητή νοημοσύνη

Πληροφορίες

  • Βαθμός δυσκολίας: 2.5/5
    Προαπαιτούμενα:
  • Λογαριασμός στην πλατφόρμα Huggingface
  • Λογαριασμός στο Gmail

Περιεχόμενα:

  1. Τι θέλουμε να κάνουμε
  2. Deforum Stable Diffusion: Από κείμενο σε βίντεο
  3. Φτιάχνουμε μία Alpha Mask για την απομόνωση μέρους του βίντεο
  4. Αποτελέσματα

Τι θέλουμε να κάνουμε

Video by Yaroslav Shuraev: https://www.pexels.com/video/a-woman-dancing-4937780/
Επεξεργασία βίντεο με τεχνητή νοημοσύνη

Σε αυτό το tutorial θα χρησιμοποιήσουμε ένα stock βίντεο από την σελίδα pexels.com και θα αντικαταστήσουμε την πρωταγωνίστρια με εικόνες από την εφαρμογή τεχνητής νοημοσύνης Deforum Stable Diffusion.

Θα τρέξουμε την εφαρμογή από την online πλατφόρμα google colab. Θα δούμε πως μπορούμε να χρησιμοποιήσουμε ένα βίντεο σαν οδηγό και να αντικαταστήσουμε ένα μέρος του βίντεο με εικόνες που να ταιριάζουν σε μία ή περισσότερες περιγραφές κειμένου που μπορεί να δώσει ο χρήστης.

Deforum Stable Diffusion: Από κείμενο σε βίντεο

Η εφαρμογή που θα χρησιμοποιήσουμε για την δημιουργία του βίντεο ονομάζεται Deforum Stable Diffusion και μπορείτε να την βρείτε στην σελίδα μου στο github, ή να ακολουθήσετε κατευθείαν αυτόν τον σύνδεσμο για να την τρέξετε στο colab.

Το Deforun Stable Diffusion χρησιμοποιεί τα Α.Ι. μοντέλα της ανοιχτού-κώδικα εφαρμογής Stable Diffusion. Με την εφαρμογή Stable Diffusion μπορούμε να δημιουργούμε εικόνες από μία απλή περιγραφή κειμένου. To Deforum μας δίνει την δυνατότητα να φτιάξουμε αυτόματα ένα animation χρησιμοποιώντας μία η περισσότερες περιγραφές κειμένου. Η εφαρμογή θα δημιουργήσει μία σειρά από εικόνες και θα μεταβαίνει από την μία εικόνα στην άλλη με έναν εντυπωσιακό τρόπο δίνοντας ένα αποτέλεσμα σαν αυτό που είδαμε στην αρχή του άρθρου. 

Εκτός από την δημιουργία animation από το μηδέν, με το Deforum μπορούμε επίσης να χρησιμοποιήσουμε ένα βίντεο αναφοράς σαν είσοδο και η εφαρμογή θα “ζωγραφίσει” νέες εικόνες πάνω στο βίντεο, ακολουθώντας τις κινήσεις του ανθρώπου που απεικονίζεται.

Ανοίγοντας την εφαρμογή Deforum στο Colab, θα δούμε δύο βασικές ενότητες με ρυθμίσεις που μπορούμε να αλλάξουμε. Την ενότητα “Setup” και την ενότητα “Settings”.

Η ενότητα Setup αποτελείται από δύο μπλοκ κώδικα και η ενότητα Settings από άλλα τρία μπλοκ.

Αρχικά εκτελέστε τα δύο μπλοκ κώδικα του Setup χωρίς να κάνετε κάποια αλλαγή.

To Environment Setup θα εγκαταστήσει τα απαραίτητα πακέτα που χρειάζονται για να τρέξει η εφαρμογή

Το Path Setup θα κατεβάσει το Α.Ι. μοντέλο που θα χρησιμοποιηθεί στην συνέχεια από την πλατφόρμα Huggingface.

Εκτελώντας το μπλοκ “Path Setup” θα σας ζητηθεί το όνομα χρήστη σας στην πλατφόρμα Huggingface και ένα Access Token.

Για να βρείτε ή για να δημιουργήσετε ένα νέο Access Token στην πλατφόρμα Huggingface, θα μεταβείτε στην σελίδα https://huggingface.co/settings/tokens. Ή θα πλοηγηθείτε στις ρυθμίσεις χρήστη, πατώντας στην εικόνα χρήστη πάνω δεξιά → Settings → Access Tokens.

Εύρεση Access Token από την πλατφόρμα HuggingFace

Αφού κατέβει το μοντέλο, μπορούμε να προχωρήσουμε με τις ρυθμίσεις στο πρώτο μπλοκ της ενότητας “Settings”.

Μπορείτε να πειραματιστείτε με όλες τις διαθέσιμες ρυθμίσεις, αλλά εδώ θα εστιάσουμε στις πιο βασικές.

Πριν προχωρήσουμε όμως θα χρειαστεί να ανεβάσουμε το βίντεο που θέλουμε να επεξεργαστούμε στο google colab.

Για να το κάνουμε αυτό, πατάμε το εικονίδιο του φακέλου στα αριστερά της οθόνης για να δούμε τα αρχεία που έχουμε φορτωμένα στο colab, και στην συνέχεια πατάμε το πρώτο εικονίδιο με το βελάκι που δείχνει προς τα πάνω για να ανεβάσουμε το αρχείο του βίντεο οδηγού.

Πλοήγηση στα αρχεία του Colab
Ανέβασμα αρχείων στο Colab

Το αρχείο μας το έχουμε ονομάσει “video_in.mp4” και για να αναφερθούμε σε αυτό στο κώδικα μας, θα χρησιμοποιούμε όλη τη διαδρομή του αρχείου δηλαδή το “/content/video_in.mp4”.

Πέρα από το βασικό μας αρχείο θα χρειαστεί να ανεβάσουμε και ένα αρχείο βίντεο “μάσκας”.

Αν παρατηρήσετε το επεξεργασμένο βίντεο της εισαγωγής, αλλάζει μόνο η φιγούρα της κοπέλας, αλλά όχι το background του βίντεο. Αυτό το καταφέρνουμε χρησιμοποιώντας το βίντεο μάσκας που αναφέραμε παραπάνω.

Παράδειγμα μάσκας Alpha

Χρησιμοποιώντας μία τέτοια μάσκα, το Deforum θα “ζωγραφίσει” μόνο στα μαύρα σημεία του βίντεο, αφήνοντας ανεπηρέαστο το υπόλοιπο βίντεο.

Υπάρχουν πολλοί τρόποι να δημιουργήσουμε ένα βίντεο μάσκας. Εμείς θα επιλέξουμε την αυτόματη Α.Ι. επιλογή. Στην επόμενη ενότητα θα σας δείξω πως θα το κάνουμε πολύ εύκολα χρησιμοποιώντας άλλη μία εφαρμογή του colab.

Προς το παρόν θα ολοκληρώσουμε τις ρυθμίσεις μας στο Deforum!

Ρυθμίσεις:

H σημαντικότερη ρύθμιση εδώ είναι το animation_mode. Επιλέγουμε σαν τιμή το Video Input για να δηλώσουμε πως θέλουμε να χρησιμοποιήσουμε ένα βίντεο σαν οδηγό.

Στο πεδίο max_frames ορίζουμε πόσα καρέ θα είναι το βίντεο που θα δημιουργηθεί. Αυτή η τιμή καθορίζεται από την διάρκεια του βίντεο οδηγού και τα καρέ ανά δευτερόλεπτο που θέλουμε να χρησιμοποιήσουμε. Αν το βίντεο οδηγός πχ. είναι 30 δευτερόλπετα σε διάρκεια. Χρησιμοποιώντας 24 fps (frames per second) θα έχουμε σύνολο 30 * 24 = 720 max_frames.

Το πεδίο strength_schedule ορίζει τον βαθμό στον οποίο η προηγούμενη εικόνα θα επηρεάσει την δημιουργία της επόμενης.

Το πεδίο diffusion_cadence ορίζει πόσο ομαλό θα είναι το animation. Μικρές τιμές ισοδυναμούν με πιο έντονες εναλλαγές στις εικόνες που δημιουργούνται.

video_init_path: Σε αυτό το πεδίο θα βάλουμε την διαδρομή που βρίσκεται το βίντεο οδηγός μας, δηλαδή “/content/video_in.mp4”

use_mask_video: Εδώ θα κάνουμε “τικ” στο κουτάκι για να πούμε στο Deforum να κάνει χρήση ενός βίντεο μάσκας.

video_mask_path: Και εδώ θα βάλουμε την διαδρομή του βίντεο μάσκας που θα ανεβάσουμε στην συνέχεια. Το βίντεο θα το ονομάσουμε mask.mp4, οπότε η διαδρομή του θα είναι “/content/mask.mp4”.

Παράδειγμα ρυθμίσεων:

Animation:
  animation_mode: Video Input
  max_frames: 720
Motion Parameters:
  strength_schedule: 0: (0.75)
Coherence:
  diffusion_cadence: 3
Video Input:
  video_init_path: "/content/video_in.mp4"
  use_mask_video: x (checked)
  video_mask_path: "/content/mask.mp4"

Στο δεύτερο μπλοκ κώδικα θα γράψουμε τις περιγραφές που θα δημιουργήσουν τις εικόνες μας. Ο αριθμός στα αριστερά της φράσης ορίζει το καρέ από το οποίο και έπειτα θα αρχίσει να εφαρμόζεται η κάθε περιγραφή. Μπορούμε να χρησιμοποιήσουμε όσες διαφορετικές περιγραφές θέλουμε.

Αυτές είναι οι περιγραφές που χρησιμοποιήθηκαν για το παράδειγμα της εισαγωγής.

animation_prompts = {
  "0": "a painting of a a death girl dancing with her hands, highly detailed, hd, trending on artstation",  
  "250": "a painting of a young girl dancing with her hands, highly detailed, hd, trending on artstation",
  "500": "a painting of a ghost girl dancing with her hands, highly detailed, hd, trending on artstation",
}

Τέλος, στο τρίτο μπλοκ κώδικα θα ρυθμίσουμε τις διαστάσεις του βίντεο που θέλουμε να παράγουμε. 

Image Settings
  W: 720
  H: 405
Batch Settings
  seed_behavior: fixed

Είμαστε σχεδόν έτοιμοι να τρέξουμε το παράδειγμά μας. Όμως μας λείπει το βίντεο μάσκας που είδαμε προηγουμένως.

Φτιάχνουμε μία Alpha Mask για την απομόνωση μέρους του βίντεο

Όπως είπαμε, θέλουμε να επεξεργαστούμε το βίντεο μας με την βοήθεια του Deforum, αλλά δεν θέλουμε να αλλάξουμε όλη την εικόνα. Θέλουμε να αντικαταστήσουμε μόνο την γυναικεία φιγούρα.

Για να το κάνουμε αυτό θέλουμε να δημιουργήσουμε μία “Alpha” μάσκα από το βίντεο οδηγό που έχουμε κατεβάσει. Η alpha μάσκα ουσιαστικά θα μαυρίσει μόνο την ανθρώπινη φιγούρα στο βίντεο και θα αφήσει λευκό το περιβάλλον.

Αυτή την διαδικασία θα την κάνουμε αυτόματα με μια δεύτερη εφαρμογή του colab που θα βρείτε σε αυτό το σύνδεσμο.

Σε αυτό το colab θα βρούμε 7 μπλοκ κώδικα που πρέπει να εκτελέσουμε.

Πατάμε το βελάκι στο πρώτο μπλοκ με το όνομα “Upload your video”, ώστε να ανεβάσουμε το βίντεο οδηγό που έχουμε κατεβάσεις. (Αναφέρομαι στο ίδιο βίντεο που ανεβάσαμε στο Deforum)

Στα υπόλοιπα βήματα δεν χρειάζεται κάποια αλληλεπίδραση με τον χρήστη, συνεπώς μπορούμε να τα εκτελέσουμε όλα μαζί με μία συντόμευση και να περιμένουμε απλά το αποτέλεσμα.

Πατάμε μέσα στο πλαίσιο του μπλοκ 2 και πατάμε τα πλήκτρα CTRL+F10 στο πληκτρολόγιο μας. Αυτή η συντόμευση θα εκτελέσει αυτόματα όλα τα μπλοκ από το σημείο που βρισκόμαστε μέχρι το τέλος. Περιμένουμε να ολοκληρωθεί η εκτέλεση των μπλοκ 2 έως 7.

Παράδειγμα δημιουργίας αυτόματης μάσκας alpha από βίντεο οδηγό.

Σε αυτό το σημείο ολοκληρώθηκε η δουλειά μας σε αυτήν την εφαρμογή. Αποθηκεύουμε το βίντεο μάσκας κάνοντας δεξί κλικ και “αποθήκευση βίντεο ώς” → mask.mp4.

Παρατηρούμε ότι η μάσκα δεν είναι τέλεια, αλλά θα κάνει την δουλειά της για το παράδειγμα μας. Η ποιότητα της μάσκας εξαρτάται από την ποιότητα του αρχικού βίντεο οδηγού.

Η εφαρμογή που χρησιμοποιήσαμε χωρίζει το αρχικό βίντεο σε ξεχωριστά καρέ – εικόνες. Έπειτα, χρησιμοποιεί ένα ΑΙ μοντέλο για να αναγνωρίσει ανθρώπινες μορφές στην κάθε εικόνα και δημιουργεί μία αντίστοιχη μάσκα. Τέλος, ανασυνθέτει όλες τις εικόνες από τις μάσκες σε ένα ενιάιο βίντεο μάσκας.

Αποτελέσματα

Επιστρέφουμε στο Colab notebook του Deforum Stable Diffusion.

Έχουμε κάνει όλες τις απαραίτητες ρυθμίσεις, οπότε το μόνο που μένει είνει να ανεβάσουμε και το βίντεο μάσκας που φτιάξαμε μόλις στην άλλη εφαρμογή.

Ανέβασμα του αρχείου μάσκας “mask.mp4”

Εκτελούμε όλα τα μπλοκ κώδικα που έχουν μείνει

Πατώντας το κουμπί του Load Settings ξεκινάει η δημιουργία των εικόνων. Από κάτω θα βλέπουμε κάθε καρέ που δημιουργείται σιγά σιγά. Η διαδικασία είναι πολύ χρονοβόρα και εξαρτάται από τον συνολικό αριθμό των καρέ που θέλουμε να δημιουργήσουμε.

Μόλις ολοκληρωθεί η εκτέλεση αυτού του μπλοκ, σημαίνει ότι έχουν δημιουργηθεί όλα τα απαραίτητα καρέ για την δημιουργία του βίντεο μας. Οπότε το μόνο που μένει είναι να δέσουμε όλα τα καρέ μεταξύ τους και να φτιάξουμε το βίντεο μας.

Πηγαίνουμε στην ενότητα “Create Video From Frames” και συμπληρώνουμε τις σωστές τιμές για τα fps και τον αριθμό των καρε.

Τα fps πρέπει να ταυτίζονται με τον αριθμό που συμπληρώσαμε προηγουμένως κατά την δημιουργία των τιμών του zoom. Συνεπώς εδώ θα επιλέξουμε 24fps.

max_frames βάζουμε επίσης 720 όπως και στο πεδίο των ρυθμίσεων προηγουμένως.

fps: 24
max_frames: 720

Πατάμε το βελάκι για την εκτέλεση του κώδικα και σε λίγα δευτερόλεπτα βλέπουμε το βίντεο να εμφανίζεται από κάτω.

Μπορούμε να το παρακολουθήσουμε κατευθείαν από τον browser ή να το κατεβάσουμε στον υπολογιστή μας, κάνοντας δεξί κλικ και “αποθήκευση βίντεο ως”.

Αποτέλεσμα επεξεργασίας βίντεο με το Deforum, χρησιμοποιώντας βίντεο οδηγό σαν είσοδο.