Πως να Φτιάξω Ένα Βίντεο Κλιπ με Τεχνητή Νοημοσύνη

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

Φτιάχνουμε Ένα Βίντεο Κλίπ με Εικόνες από Κείμενο και Animation που Αντιδρά Αυτόματα στο Τραγούδι

Πληροφορίες

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

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

  1. Τι θέλουμε να κάνουμε
  2. Deforum Stable Diffusion: Από κείμενο σε βίντεο
  3. Κάνουμε το βίντεο να αντιδρά στον ήχο
  4. Αποτελέσματα

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

Παράδειγμα βίντεο κλιπ από τεχνητή νοημοσύνη

Δείτε ολόκληρο το βίντεο κλιπ πατώντας εδώ!

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

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

Και στην συνέχεια θα δούμε πως μπορούμε να κάνουμε κάποια στοιχεία του βίντεο να αντιδρούν αυτόματα σε ορισμένα στοιχεία του τραγουδιού που θέλουμε (πχ. στα drums, ή κάποιο άλλο ηχητικό στοιχείο).

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

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

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

Ανοίγοντας την εφαρμογή 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”.

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

Αρχικά ορίζουμε το animation_mode. Μπορούμε να επιλέξουμε είτε 2D είτε 3D. Αυτή η επιλογή θα επηρεάσει το εφέ κίνησης ανάμεσα στις εικόνες που θα δημιουργηθούν στην συνέχεια.

Στο πεδίο max_frames ορίζουμε πόσες εικόνες θέλουμε να δημιουργήσουμε. Αν βάλουμε πχ. 800 frames και θέλουμε να φτιάξουμε ένα animation με 24 fps (frames per second) θα δημιουργηθεί ένα animation 800 / 24 = 33 δευτερολέπτων.

Το πεδίο angle ορίζει την περιστροφή που θέλουμε να έχει το animation σε κάθε χρονική στιγμή. Οι τιμές που παίρνει είναι της μορφής 0: (2). Αυτό σημαίνει ότι την χρονική στιγμή μηδέν (0) θα έχουμε 2 μονάδες δεξιόστροφη περιστροφή. Αν θέλουμε συνεχίζουμε να αλλάζουμε την περιστροφή σε άλλες χρονικές στιγμές θα δώσουμε μία τιμή της μορφής:  0: (2), 50: (-1). Αυτό σημαίνει ότι στο καρέ 50, η περιστροφή θα αλλάξει σε 1 μονάδα αριστερόστροφα.

Η ίδια λογική ακολουθείται και για την τιμή του πεδίου zoom. Με το πεδίο zoom ορίζουμε πόση μεγέθυνση θέλουμε να εφαρμόζεται στις εικόνες κάθε χρονική στιγμή. Το zoom (1.00) ισοδυναμεί με 100% μεγέθυνση και δεν έχει κάποιο αντίκτυπο.

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

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

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

Animation:
  animation_mode: 2D
  max_frames: 800
Motion Parameters:
  angle: 0: (0) 
  zoom: 0: (1.00)
  strength_schedule: 0: (0.75)
Coherence:
  diffusion_cadence: 2

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

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

animation_prompts = {
  "0": "a grayscale painting of a beautiful lonely girl waving goodbye, highly detailed, hd, trending on artstation",  
  "200": "a grayscale painting of void post mortem, highly detailed, hd, trending on artstation",
  "400": "a grayscale painting of a gray prison corridors, highly detailed, hd, trending on artstation",
  "600": "a grayscale painting of the feeling of loneliness, highly detailed, hd, trending on artstation"
}

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

Image Settings
  W: 720
  H: 405

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

Κάνουμε το βίντεο να αντιδρά στον ήχο

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

Θέλουμε το animation να ζουμάρει πιο έντονα με κάθε χτύπο των drums του κομματιού.

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

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

Σκοπός αυτής της εφαρμογής είναι να χωρίσει το μουσικό μας κομμάτι σε βασικά στοιχεία όπως ο ήχος των drums, του μπάσου, τα φωνητικά κτλ. 

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

Εκτελούμε το πρώτο μπλοκ κώδικα για να εγκαταστήσουμε τις απαραίτητες βιβλιοθήκες.

Εκτελούμε το δεύτερο μπλοκ κώδικα για να ανεβάσουμε το τραγούδι που θέλουμε.
Μόλις εκτελέσουμε το μπλοκ, θα εμφανιστεί το κουμπί “Browse” που θα πατήσουμε για να βρούμε το κομμάτι που θέλουμε να ανεβάσουμε από τον υπολογιστή μας.

Στο βήμα 4 επιλέγουμε ποιο κομμάτι του τραγουδιού μας θέλουμε να χρησιμοποιήσουμε για να οδηγήσει την κίνηση του animation. Εγώ επέλεξα τα drums.

Στο βήμα 7 βάζουμε τα fps που θέλουμε να έχει το τελικό animation.

Αφου ολοκληρώσαμε τις ρυθμίσεις μπορούμε να επιστρέψουμε στο βήμα 3 και να εκτελέσουμε όλα τα μπλοκ κώδικα που υπολείπονται αυτόματα.

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

Σε αυτό το σημείο ολοκληρώθηκε η δουλειά μας σε αυτήν την εφαρμογή. Μπορείτε να τα αντιγράψετε το αποτέλεσμα του βήματος 8 και να το κάνετε επικόλληση στην τιμή του πεδίου zoom στο deforum, και το αποτέλεσμα του βήματος 9 στην τιμή του πεδίου angle.

0: (1.03), 1: (1.03), 2: (1.03), 3: (1.03), 4: (1.03), 5: (1.03), 6: (1.03), ...... 717: (1.03), 718: (1.03), 719: (1.03), 
0: (1), 50: (-1), 100: (-1), 150: (1), 200: (-1), 250: (1), 300: (0), 350: (-1), 400: (1), 450: (-1), 500: (-1), 550: (1), 600: (-1), 650: (1), 700: (-1), 

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

Στο βήμα 5 βλέπουμε να τυπώνεται η κυματομορφή των drums του τραγουδιού μας. 

Κυματομορφή Drums

Θα περάσουμε την κυματομορφή μας από ένα φίλτρο HPSS (Harmonic Percussive Source Separation), έτσι ώστε να κρατήσουμε μόνο τις πιο σημαντικές αλλαγές. Αν κρατούσαμε την αρχική κυματομορφή οι αλλαγές στο zoom θα ήταν πολύ συχνές και το animation θα ήταν πολύ απότομο.

Κυματομορφή Drums με Hpss φιλτράρισμα

Τέλος, κρατάμε το πλάτος, κανονικοποιημένο στο εύρος μεταξύ 0 έως 1. Έτσι η τιμή του zoom σε κάθε καρέ θα καθορίζεται συναρτήσει του πλάτους της κυματομορφής των drums, ακολουθώντας την σχέση που ορίζεται στο βήμα 7 (1.03 + amplitude**2).

Διάγραμμα με το κανονικοποιημένο πλάτος των drums

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

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

Αφου κάνουμε επικόλληση τις τιμές για το angle και το zoom στα αντίστοιχα πεδία, εκτελούμε όλα τα μπλοκ κώδικα που απομένουν με την σειρά.

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

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

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

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

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

fps: 24
max_frames: 800

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

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

Α.Ι. Video Clip with Deforum Stable Diffusion

Μπορείτε να δείτε και το σχετικό βίντεο στο κανάλι του Tech to me About it: https://youtu.be/0Nv5qQMt1o4