Archivi autore: Amministratore

Tutorial: clonare una voce con l’intelligenza artificiale usando Real Time Voice Cloning

Negli ultimi anni i progressi nel campo dell’intelligenza artificiale hanno reso possibile numerose applicazioni per quanto riguarda le immagini (riconoscimento degli oggetti, generazione di foto) e dei testi (bot, elaborazione del linguaggio naturale NLP, generazione di articoli).

Lo stesso vale anche per i dati sonori. Si pensi per esempio a quanto il riconoscimento vocale è migliorato, come gli assistenti vocali, capaci di distinguere le parole pronunciate molto più chiaramente rispetto al passato. Stessa cosa per la sintesi vocale. il discorso risultava più complesso per la generazione o la modificazione di file audio, ad esempio la clonazione di una voce.

Qualche tempo fa, una startup chiamata Lyrebird aveva messo su un sistema per clonare voci, e aveva avuto discreto successo. Ne avevo parlato anche io in questo articolo. Per quanto il risultato fosse lontano dalla perfezione (timbro semi robotico, dizione da sintetizzatore vocale), la direzione intrapresa era quantomeno incoraggiante.

Ecco come funziona Lyrebird: vengono mostrate all’utente una trentina di frasi da pronunciare, quasi degli scioglilingua, tipo: A loyal warrior will rarely worry why we rule. Trenta è il numero minimo e viene espressamente detto all’utente che più registrazioni il sistema ha a disposizione e migliore sarà il risultato. Dopo di che la voce viene generata.

Il problema di Lyrebird è che, di fatto, è possibile clonare solo la propria voce, perchè bisogna convincere qualcuno a pronunciare le 30 frasi indicate dal computer. Diversamente sarebbe stato molto più interessante poter clonare qualsiasi voce a partire da una registrazione.

Poi, finalmente, a novembre del 2019, è stato rilasciato Real Time Voice Cloning, un’implementazione di questo articolo pubblicata su Github. In sostanza, questo algoritmo permette di clonare una voce a partire da una registrazione audio di pochi secondi.

E’ possibile testare Real Time Voice Cloning usando questo notebook precompilato di Google Colab:

https://colab.research.google.com/github/ak9250/Real-Time-Voice-Cloning/blob/master/Real_Time_Voice_Cloning.ipynb

Per farlo funzionare bisogna accedere al proprio account di Google.

Una volta aperto il link vi troverete davanti ad alcune celle di codice, bisognerà eseguirle tutte, una per una, cliccando sul tasto play alla sinistra di ogni singola cella.

 

Arrivati all’ultima cella di codice, il sistema chiede di inserire il file audio contenente la voce da clonare. Per questo tutorial prenderemo come esempio la voce di Berlusconi.

Per il momento Real Time Voice Cloning è stato allenato solamente con voci in lingua inglese, e quindi funziona male in italiano. Per questo, sono andato a trovarmi un piccolo video, circa 10 secondi, dove Berlusconi parla in inglese. Ho salvato l’audio in un file mp3 e l’ho caricato su Google Colab. Per caricare un file su Colab, cliccare sul tasto upload nella sidebar laterale della pagina, come in immagine.

Dopo di che va inserito il l’indirizzo del file nell’ultima cella di codice, e poi si può premere invio.

A questo punto, viene chiesto di scrivere una frase da far dire alla voce clonata. Circa una ventina di parole.

Dopo pochi secondi viene prodotto un file audio wav “demo_output_00.wav”, salvato nella sidebar, all’interno della cartella Real-Time-Voice-Cloning. Il file può essere scaricato e riprodotto. Se non compare nessun file audio, cliccare su refresh.

 

 

 

 

Tutte le immagini che possono esistere

In questo articolo vorrei fare un piccolo ragionamento che ritengo molto interessante. Esso  parte da una domanda: quante sono le immagini che si possono rappresentare? Ovvero, esiste una cifra che esprima il numero massimo delle immagini che possono esistere?

Ad un primo momento, sembra di trovarsi di fronte a uno di quei dilemmi a cui è palesemente impossibile rispondere, come “quanti sono i granelli di sabbia della Terra?” o “quante sono le gocce d’acqua nel mare?”. Sì, esiste un numero finito di granelli di sabbia o di gocce d’acqua presenti sul nostro pianeta, ma è praticamente impossibile averne il numero esatto, contarle con precisa sicurezza. Se ne può fare una stima, un’approssimazione.

E invece per quanto riguarda le immagini, sappiamo perfettamente il loro numero. E’ una cifra calcolabile, ed è quanto andremo a fare adesso.

Si parte ovviamente dal presupposto che ogni immagine è un insieme di punti, detti pixel, quindi più pixel ha un’immagine, più la sua risoluzione è alta. Se per esempio essa ha 1000 pixel in orizzontale e 1000 pixel in verticale, il numero totale dei pixel di quella immagine sarà di 1000×1000= 1 milione, abbreviato in 1 mega-pixel. Oggi i moderni smartphone sono dotati di fotocamere da più di 10 megapixel, con circa 3000 pixel per ogni lato.

 

Nella foto qui in alto, di appena 24×24 pixel, è rappresentato un pesce: i suoi contorni sono appena distinguibili. Se si volessero rappresentare i tratti di una persona servirebbe molto più spazio.

Per calcolare il numero di tutte le immagini che possono esistere, serve innanzitutto stabilire di quale risoluzione debbano essere tali immagini. Supponiamo 64×64 (4096 pixel), il minimo per distinguere un volto all’interno di una foto.

In secondo luogo ci occorre stabilire lo standard di colore. Le foto “normali”, quelle degli smartphone, sono a colori e ogni pixel è indicato da tre valori tra 0 e 255 corrispondenti rispettivamente ad una tonalità di rosso, di verde e di blu. Ogni pixel viene quindi rappresentato da tre cifre (es: 3,10,45). Questo standard di colore è denominato truecolor o 24bit.

Un’immagine in bianco e nero, invece, occupa molta meno informazione. Ogni pixel è indicato da una sola cifra, cosi chè il “peso” complessivo del file diminuisce di un terzo. Lo standard in bianco e nero è anche detto 8bit, o grayscale, e usa le tonalità di grigio per descrivere i colori.

Volendo, si può risparmiare ancora più spazio usando lo standard di colore a 1 bit, chiamato monochrome, cioè monocromatico (un solo colore). Tale formato registra ogni pixel come 0 o 1: se è 0 corrisponderà al bianco, se è 1 al nero. In questo modo si crea un’immagine molto meno chiara di una in bianco e nero, ma comunque capace ancora di rappresentare un oggetto.

Immagine 24bit

Immagine 8bit

Immagine 1bit

 

 

 

 

 

So già che il numero che andremo a calcolare sarà molto grande, quindi devo giocoforza peccare di taccagneria e scegliere il formato 1bit perchè lo si possa scrivere in questa pagina senza strafare.

Qual’è quindi il numero esatto delle immagini che possono esistere allo standard di 1bit e con una risoluzione di 64×64 pixel?

Si tratta di elevare i colori possibili dell’1bit (cioè 2) per i pixel dell’immagine (4096) . Il risultato è il seguente:

1 044 388 881 413 152 506 691 752 710 716 624 382 579 964 249 047 383 780 384 233 483 283 953 907 971 557 456 848 826 811 934 997 558 340 890 106 714 439 262 837 987 573 438 185 793 607 263 236 087 851 365 277 945 956 976 543 709 998 340 361 590 134 383 718 314 428 070 011 855 946 226 376 318 839 397 712 745 672 334 684 344 586 617 496 807 908 705 803 704 071 284 048 740 118 609 114 467 977 783 598 029 006 686 938 976 881 787 785 946 905 630 190 260 940 599 579 453 432 823 469 303 026 696 443 059 025 015 972 399 867 714 215 541 693 835 559 885 291 486 318 237 914 434 496 734 087 811 872 639 496 475 100 189 041 349 008 417 061 675 093 668 333 850 551 032 972 088 269 550 769 983 616 369 411 933 015 213 796 825 837 188 091 833 656 751 221 318 492 846 368 125 550 225 998 300 412 344 784 862 595 674 492 194 617 023 806 505 913 245 610 825 731 835 380 087 608 622 102 834 270 197 698 202 313 169 017 678 006 675 195 485 079 921 636 419 370 285 375 124 784 014 907 159 135 459 982 790 513 399 611 551 794 271 106 831 134 090 584 272 884 279 791 554 849 782 954 323 534 517 065 223 269 061 394 905 987 693 002 122 963 395 687 782 878 948 440 616 007 412 945 674 919 823 050 571 642 377 154 816 321 380 631 045 902 916 136 926 708 342 856 440 730 447 899 971 901 781 465 763 473 223 850 267 253 059 899 795 996 090 799 469 201 774 624 817 718 449 867 455 659 250 178 329 070 473 119 433 165 550 807 568 221 846 571 746 373 296 884 912 819 520 317 457 002 440 926 616 910 874 148 385 078 411 929 804 522 981 857 338 977 648 103 126 085 903 001 302 413 467 189 726 673 216 491 511 131 602 920 781 738 033 436 090 243 804 708 340 403 154 190 336

Naturalmente è un po’ lungo. Ma a me ha sorpreso, perchè in effetti si tratta di un numero finito, e in esso ci sono tutte le immagini possibili e immaginabili a quella risoluzione. Considerando che in una foto 64×64 si può riconoscere un oggetto, per esempio una faccia, in questo numero ci sono tutti i volti delle persone che conoscete e che non conoscete, quelle che ci furono in passato e che ci saranno in futuro. C’è anche una foto della vostra faccia in ogni posizione immaginabile, in ogni espressione possibile, in ogni angolazione rappresentabile. C’è perfino una foto di Trump che bacia Obama. Qualsiasi cosa. E’ un numero che contempla ogni possibilità.

 

 

Generare testi con l’intelligenza artificiale: un tutorial su GPT-2

Nel febbraio 2019 OpenAI, l’organizzazione fondata da Elon Musk dedicata allo studio dell’intelligenza artificiale, rilasciava il modello GPT-2 (Generative Pretrained Transformer-2). Tramite un complesso sistema di reti neurali, dopo essere stato “allenato” con milioni e milioni di testi scritti, l’algoritmo era capace di generare testi leggibili sia in maniera condizionale (cioè dandogli una traccia, un suggerimento sull’argomento di cui deve scrivere), che non-condizionale (ovvero generando un testo a caso).

Del modello furono pubblicate 4 versioni: una small, conosciuta come 117M, una medium (345M), un modello large (774M) e infine il modello XL, detto anche 1.5B o 1558M. Questi acronimi corrispondono al numero di testi con cui l’algoritmo è stato allenato: si va dai 117 milioni del modello small fino ai 1.5 miliardi dell’ XL.

In particolare, quest’ultimo modello, si diceva, non sarebbe stato rilasciato perchè considerato troppo potente e possibilmente usato in modi non leciti (vedi fake news,..). Appena un mese fa invece, il 9 novembre scorso, OpenAI lo ha rilasciato, ed in pochi giorni erano disponibili dei demo per testare la potenza del 1.5B.

Per provarlo voi stessi, potete visitare il sito web Talk to transformer, creato dall’ingegnere canadese Adam King. Vi viene chiesto di inserire una frase o uno spunto per la generazione del testo e l’algoritmo farà da sè. Se siete indecisi su cosa chiedere, potete scegliere tra 9 suggerimenti (ricette di cucina, viaggio spaziale, html e perfino Il Signore degli Anelli).

In via generale, funziona solo in lingua inglese. Se provate a chiedergli qualcosa in italiano, molto probabilmente non capirà, per la semplice ragione che è stato allenato solo su testi anglosassoni. Inoltre, risponde alle domande ed è capace di parlare più o meno di qualsiasi cosa: da un argomento di fisica fino a tematiche riguardanti la società.

Gli ho chiesto per esempio chi fosse Napoleone Bonaparte. Ecco come ha risposto:

In pratica, apparte il suggerimento che ho dato (parlare di Napoleone), tutto il resto è stato scritto dall’intelligenza artificiale e risulta sintatticamente leggibile. L’unico problema è che alcuni dei fatti raccontati non sono veritieri o non hanno senso: ad esempio, viene menzionato il fatto che Napoleone sia nato a Boulogne, ma in realtà è nato ad Ajaccio.

Il testo generato si ferma a 150 parole: tale è il limite permesso dal sito web. E’ una limitazione comprensibile dal momento che per far funzionare un modello GPT-2 serve una scheda video con almeno 11 GB di RAM.

Tuttavia, Google offre Tesla K80 e T4 nel suo ambiente di sviluppo Colab, una piattaforma dove chiunque può testare il proprio codice e usufruire gratuitamente di accelerazione GPU.

Proprio per questo, è stato creato un notebook jupiter pre-compilato dove testare il modello GPT-2:

https://colab.research.google.com/github/ilopezfr/gpt-2/blob/master/gpt-2-playground_.ipynb#scrollTo=tI-HVDbQS9dF

Usarlo non è difficile. Il primo passo è quello di cliccare sul pulsante play, nella prima cella di codice: (rimuovendo le cellette prima dei modelli 117M e 345M).

Google chiede l’autorizzazione prima di procedere. Una volta che l’installazione inizia, ci vorrà qualche minuto prima che si concluda.

Una volta fatto, siamo pronti a generare i primi testi. Basterà andare un po’ più’ giù fino al prossimo paragrafo: Unconditional sample generation.

Anche qui si tratta esclusivamente si cliccare il pulsante play. Eventualmente se lo desiderate potete cambiare le impostazioni per la generazione del testo, aggiungendo rimuovendo o modificando le flag indicate nella descrizione.

Con –model_name è indicato il tipo di modello da utilizzare (è preimpostato l’XL da 1558M). –nsamples indica invece il numero di testi da generare, mentre top_k e temperature indicano dei valori relativi alla diversità e casualità del testo.

Clicco anche io play. Aspetto qualche minuto, ed ecco che dopo un elenco interminabile di comandi e variabili, appaiono i miei primi 2 testi generati.

Il primo inizia con quello che sembra un articolo di giornale riguardo la presentazione di un libro, salvo che poi il testo generato collassa su se stesso e ripete per dieci volte la stessa frase.

Il secondo testo invece risulta più coerente. Sembrerebbe parlare di argomenti governativi statunitensi: non si tratta di un articolo di giornale ma piuttosto di un report, una specie di pamplet ministeriale. Anche questo testo, comunque, presenta dei “sintomi” di collassamento, in quanto dopo le prime due righe alterna frasi che iniziano tutte allo stesso modo, anche se si concludono diversamente.

In generale, dopo aver provato questo modello (non-condizionale) per diversi giorni, posso ben dire che esso produce il 70% delle volte manuali di istruzioni o articoli di giornale riguardanti notizie fantasiose o semi-inventate, mentre un 10% produce dialoghi, e un ulteriore 10% testi di saggistica su vari argomenti.

Sicuramente più coerente è però la generazione di testi condizionati. Nel pre-compilato di Colab, si può trovare subito dopo quella non-condizionata. In particolare ci riferiamo al paragrafo “text-completion”.

Anche questa volta, bisogna cliccare play per avviare la cella di codice, dopo di chè il modello chiede la traccia da suggerire:

Inserisco la domanda, premo il tasto invio della tastiera, e aspetto che i testi compaiano.

 

Il testo numero 1 sembra un saggio storico. E’ come se l’autore (l’intelligenza artificiale) si chiedesse chi fosse veramente Napoleone. Se fosse un genio, se avesse le capacità di diventare imperatore. E segue tutta un’argomentazione degna di nota.

Il testo numero 2 invece, pur risultando sintatticamente valido, tende a perdere di senso e racconta una storia romanzata della vita del generale francese.

Il modello condizionale di GPT-2 può essere utilizzato con qualunque input: potete chiedergli della Seconda Guerra Mondiale, come pure della Fusione nucleare, e così via. Se non centra l’argomento al primo tentativo, lo fa solitamente al secondo, e questo fa di GPT-2 un valido strumento di scrittura automatica di articoli e testi di vario tipo, ovviamente da controllare, perchè i dati prodotti tendono a non essere veritieri.

 

 

 

 

 

Qual’è la probabilità che un alpinista muoia in alta quota durante la sua carriera?

Lo scorso anno, la morte dell’alpinista Daniele Nardi ha avvicinato il grande pubblico al mondo dell’alpinismo d’alta quota, una disciplina nota per la sua bellezza ma anche per l’elevata pericolosità a cui i suoi sottopone i suoi seguaci. Quando si parla di alta quota si fa quasi sempre riferimento all’Himalaya e agli Ottomila, ovvero le montagne le cui cime svettano oltre gli otto chilometri sul livello del mare. Basti pensare che la montagna più alta che non si trovi in Asia è l’Aconcagua, che occupa “solo” la 136sima posizione.

In particolare per ognuno dei quattordici Ottomila, esiste un elenco più o meno dettagliato di coloro che hanno tentato l’ascesa, e anche un ulteriore elenco di chi, purtroppo, sulla montagna ci è rimasto. Con una semplice divisione è quindi possibile calcolare il rapporto vittime/ascese di ogni singolo Ottomila,e quindi avere una percentuale di rischio.

Annapurna 31.9%
K2 26.5%
Nanga Parbat 20.3%
Dhaulagiri I 15.4%
Kangchenjunga 14.1%
Manaslu 9.8%
Gasherbrum I 8.7%
Makalu 8.6%
Shishapangma 8.3%
Broad Peak 5.2%
Everest 3.9%
Lhotse 2.8%
Gasherbrum II 2.3%
Cho Oyu 1.4%
Fonte dati: Wikipedia – calcolo effettuato su dati 1950-2012[link]

Volendo prendere come riferimento la tabella, Daniele Nardi aveva il 20.3% di probabilità di rimanere sulla montagna. Tale è il death rate del Nanga Parbat, soprannominata la “Montagna assassina”.

Ma, facendo una piccola ricerca sulla storia di questo alpinista, si scopre che quello del 2019 non è stato il suo unico tentativo di ascesa sulla montagna: ce ne erano stati quattro, e precisamente nel 2011-12, 2012-13, 2014-15, 2015-16, con una “pausa” di due anni, dove si era dedicato alla spedizione Trans Limes sul Saltoro.

Qual’era quindi la reale probabilità di morte a cui Nardi andava incontro scalando per la quinta volta il Nanga Parbat? Quel 20% di cui parlano le statistiche si riferisce ad un singolo tentativo, ma quando si fanno più tentativi c’è sicuramente una probabilità più alta di rischio. Se si lancia una moneta per una volta, la probabilità che non esca testa (o croce) è esattamente del 50%, ma se la si lancia più volte questa probabilità si abbassa.

Nel caso di Nardi, è come se la moneta da lanciare avesse quattro facce: tre uguali di colore bianco, che rappresentano l’eventualità favorevole, e una di colore nero, che rappresenta invece quella sfavorevole.

Ad un singolo, primo tentativo, la probabilità di ritornare sano e salvo è dell’80%. Ma cosa succede al secondo tentativo? La probabilità rimane la stessa, o invece cambia?

Vediamolo subito. Si tratta di capire quante chances ci sono di che escano due facce bianche di seguito. E cioè bisogna elevare la probabilità precedente (80%) al quadrato, ovvero (4/5)^2., che è uguale a 9/16, tradotto in percentuale 64% (0.64).

Le probabilità di salvarsi al secondo tentativo di ascesa del Nanga Parbat, erano già scese dall’ 80% al 64% quando nell’inverno del 2014 Nardi di recò per la seconda volta sulla montagna.

Calcoliamo a quanto corrispondeva tale probabilità al quinto tentativo di ascesa. Si tratta di elevare 4/5 alla quinta, quindi 1024/3125, ovvero 0.327 (33%). C’erano quindi ben 67 probabilità su 100 che Nardi rimanesse su quella montagna, una percentuale alta, non paragonabile nemmeno al death rate dell’Ottomila più pericoloso, l’Annapurna.

Volendo proseguire con il calcolo, il rischio di Nardi avrebbe sfiorato il 100% dopo la ventesima ascesa (99,9%) pur senza arrivare mai a raggiungere un valore discreto pari a 100, in quanto parliamo pur sempre di un ambito probabilistico.

Ma ampliando il ragionamento e comprendendo tutti gli alpinisti degli Ottomila, facciamo la somma del death rate di ogni singola montagna dividendola per il numero delle stesse, cioè 14. In questo modo si può calcolarne il valore medio: 11,3%.

C’è quindi circa una probabilità sfavorevole su nove per ogni singola ascesa di un gigante della Terra. Ovviamente si tratta di un valore molto meno preciso rispetto a quello di ogni singola montagna, ma è utile per calcolare la percentuale di rischio a cui gli alpinisti d’alta quota vanno incontro durante la loro carriera, perché usano tentare la scalata di più montagne e non concentrarsi sempre su una sola.

Ebbene, in questo caso, un alpinista avrebbe il 59% di probabilità favorevole al quinto tentativo (11/100 elevato alla quinta), a differenza del 89% del primo. Mentre tale probabilità si abbasserebbe al 34% al decimo tentativo, fino a toccare il 10% al ventunesimo e lo zero ideale al 44esimo. Tuttavia sappiamo che ci sono alpinisti che hanno più di quaranta spedizioni all’attivo e che sono (per fortuna) ancora vivi, e risulta quindi evidente che tale probabilità sia una approssimazione del valore reale di rischio, il quale risponde sia alla scelta delle montagne da scalare sia in parte anche ad ogni singolo alpinista.

 

 

 

 

10 skill immancabili per il tuo dispositivo Alexa

Si avvicina il nuovo anno, e come non mai Amazon sta pubblicizzando i suoi assistenti vocali Echo su internet e in tv. Colto dalla curiosità, ne ho comprato anche io uno, e dopo averne provato le funzionalità, ho deciso di stillare una mia personale lista di quelle che ritengo siano le migliori skill per Alexa. Non si tratta di una classifica in ordine di merito, ma si proprone di raggruppare le skill più interessanti.

1. Fai silenzio

Quando qualcuno in casa vi stressa, grazie ad Alexa potrete mandarglielo a dire. Basterà pronunciare la frase “Alexa, apri Fai silenzio” e fare il nome del disturbatore (supponiamo “Mamma”) e Alexa inizierà a dire compulsivamente:

“Mamma smettila di parlare, perchè stai stressando”
“Mamma smettila di parlare, perchè stai stressando”
“Mamma smettila di parlare, perchè stai stressando”…

 

2. Cattive intenzioni

Quando vengono ospiti a casa Alexa è troppo gentile con loro per i vostri gusti? Nessun problema. Insegnatele un po’ di cattiveria con questa skill di offese gratuite. Basta dire ad Alexa: “apri cattive intenzioni” e fare il nome della persona con cui dovrà sfrogarsi.

O più direttamente: “Alexa, chiedi a cattive intenzioni di insultare Tizio

3. Akinator

Come poteva mancare? Permettete ad Alexa di trasformarsi nel genio del web grazie a questa skill. Per chi non lo conoscesse, Akinator cerca di indovinare un personaggio (del mondo della tv e del cinema, della letteratura o dei cartoni, dello spettacolo o di internet) a quale il giocatore sta pensando, attraverso una serie di domande.

Per avviarlo dite ad Alexa: ““gioca con Akinator” o “Alexa, apri Akinator”

4. Signora che urla

Nel mondo patinato e ricercato dell’intelligenza artificiale di Amazon, una perla rara è abissata tra le liste di skill. Si tratta ovviamente dell’anziana signora che ha coniato il motto Maledetti!, protagonista del fuorionda di un collegamento di SkyTg.

Chi non vorrebbe ascoltarla nel proprio salotto? O farne risuonare l’acuta profondità davanti a un amico o durante un pranzo con i parenti.

“Alexa, Apri la signora urlona”

5. Posta mail

Un utility carino che permette di inviare e-mail direttamente dal dispositivo Echo, comunicando con Alexa e senza dover piggiare nessun tasto. Per far partire la skill serve dire ad Alexa “apri posta mail” e successivamente dettare indirizzo e-mail del destinatario e contenuto del messaggio.

Alexa provvederà ad inviare una copia dell’e-mail inviata anche alla vostra casella mail.

5. Esatto, risposta sbagliata

Il gioco consiste nel rispondere a 10 domande nel minor tempo possibile, ma il punto è che non bisogna dare la risposta giusta, bensì quella sbagliata. Se sbagliate, e date quindi la risposta giusta, dovrete riniziare da capo.

“Alexa, apri esatto risposta sbagliata”

6. Escape room

Tra le più valutate skill di Alexa, Escape room può essere la compagnia ideale per una serata in compagnia di Alexa, ancora meglio se con famiglia o amici. Il gioco ricalca il format originale dell’escape room: in sostanza, una stanza nella quale si è intrappolati e da cui bisogna uscire.

Ci sono attualmente quattro stanze che si possono scegliere, ognuna riferita ad un livello di difficoltà diverso (facile/medio/difficile/bonus).

7. Canto degli uccelli

Trovarsi fuori, su un prato al sole di prima mattina? Ma anche no. Alexa pensa anche a questo. Canto degli uccelli è una delle skill più usate di Alexa. Utile per trovare un po’ di relax ogni tanto in compagnia di una melodia mai scontata e mai banale.

“Alexa, apri Canto degli Uccelli”

8. Ping!

Un altro utility che per alcuni sarà molto utile. Come suggerisce il nome, questa skill serve a controllare il ping di qualsiasi sito web, al fine di testarne la velocità.

Per aprirla chiamate Alexa dicendo ““Alexa, apri ping dominio” o “Alexa, apri ping dominio e controlla www.google.it”

9. Scuse per non uscire

Ecco una skill della quale nessuno potrà fare veramente a meno. Quando qualcuno (perchè ci sarà  sempre qualcuno che lo farà) vi inviterà ad uscire e voi non ne avrete minimamente voglia, chiedete un consiglio ad Alexa. Si potrebbe dimostrare molto più efficace delle scuse che vi siete inventate/i in passato.

“Alexa, usa Scuse per non uscire”

“Alexa, chiedi a Scuse per non uscire come posso tirare il pacco a Luca”

10. Tira lo sciacquone

Ultima di questa lista, ma non per importanza. Questa skill è senza dubbio la più importante e fondamentale di tutte. Nessuno può dirsi veramente completo se non la usa almeno una volta. Come nella vita d’altronde.

“Alexa, apri Tira Lo Sciacquone”

“Alexa, Tira Lo Sciacquone”

Guida all’uso di StyleGAN per generare immagini con l’intelligenza artificiale (usando Colab)

Questo tutorial spiega come usare il tool di generazione di immagini StyleGAN per mezzo dell’ambiente di sviluppo Google Colab, dotato di accelerazione GPU e TPU gratuita. Colab, abbreviazione di Colaboratory, è messo a disposizione da parte di Google per piccole ricerche che richiedano hardware non sempre alla portata di tutti (Tesla K80/ Tesla T4). Colab può essere usato per 12 ore, al termine delle quali il runtime si disconnette e i dati vengono cancellati.

Allenare StyleGAN richiede giorni di training, e cioè necessita più sessioni di Colab. Bisognerà quindi, prima dello scadere delle 12 ore del runtime, salvare i dati per poter poi far ripartire il calcolo dal punto in cui lo avevano precedentemente fermato.

Detto ciò, il primo passo da fare è quello di collegarci a Google Colab:

https://colab.research.google.com

Selezioniamo File>New Python 3 Notebook dal menù in cima alla pagina:

 

Abbiamo quindi creato il notebook su cui far partire StyleGAN. Si dovrebbe presentare come in immagine:

 

StyleGAN richiede accelerazione GPU, cioè una scheda grafica su cui distribuire numerose operazioni di calcolo. Selezioniamo quindi dal menù in cima alla pagina Edit>Notebook settings.

Si dovrebbe aprire una finestra come questa, dalla quale selezioniamo la voce GPU come acceleratore hardware. Clicchiamo su ‘Save’ per salvare l’opzione selezionata.

A questo punto tutto è pronto per installare StyleGAN. Scriviamo quindi il codice seguente nella cella di codice (rettangolo grigio) e clicchiamo il tasto play. Questo passo provvede a clonare il programma da Github.

!git clone https://github.com/NVlabs/stylegan.git

 

Passiamo ora al dataset, cioè all’insieme di immagini che forniremo all’algoritmo per imparare a generarne altre simili.

Carichiamo quindi tutte le nostre immagini su Google Drive, all’interno di una cartella che chiamiamo “dataset”. Per accedere alle immagini su Google Colab, dobbiamo montare collegare Google Drive, cioè importare tutti i contenuti all’interno del nostro Colab. Clicchiamo quindi su “Mount drive” nella sidebar laterale di Colab, come in immagine:

Apparirà quindi una cella di codice nello spazio di lavoro. Eseguiamola. Una volta terminato avremo importato i contenuti di Google Drive, i quali saranno visibili

nella sezione “Files” della sidebar a sinistra, all’interno della cartella “drive”.

 

 

StyleGAN richiede che tutte le immagini siano dello stesso formato e abbiano le stesse dimensioni. Per assicurarci di questo installiamo Augmentor, il quale provvederà a ritagliare tutte le foto nella dimensione 512×512, o, in alternativa, a quella che specificherete.

Prima di farlo, creiamo però una cartella dove contenere le immagini ritagliate. Copiate ed eseguite questo codice in una nuova cella. Esso provvederà a creare una cartella apposita all’interno di Stylegan.

import os
if not os.path.exists('/content/stylegan/immagini'):
    os.makedirs('/content/stylegan/immagini')

 

Passiamo quindi all’installazione di Augmentor. Apriamo una nuova cella e incolliamo questo codice. Al posto di “path/to/images” inserite l’indirizzo della cartella “dataset” che abbiamo importato da Google Drive (dovrebbe apparire più o meno così: “/content/drive/My Drive/dataset“). L’altro indirizzo da specificare è quello di destinazione delle immagini, ovvero come precedemente specificato “/content/stylegan/immagini”.

!pip install Augmentor
 p = Augmentor.Pipeline("/path/to/images", "/content/stylegan/immagini", save_format="JPEG")
 p.resize(probability=1.0, width=512, height=512)
 p.random_color(probability=1.0,min_factor=0.5,max_factor=0.9)
 p.process()
 p.sample(3000)

 

In particolare il comando p.sample(numero) stabilisce a quante immagini allargare il dataset. Nel machine learning infatti servono molti elementi con cui effettuare il training e quindi, nel caso le immagini a disposizione non fossero di numero sufficiente (almeno 1000), Augmentor ne creerà 3000, modificando piccoli parametri come rotazione e colore ad ogni singola foto in modo da ottenere da ogni singola immagine più copie con cui far allenare StyleGAN.

Una volta fatto ciò indichiamo al programma la cartella dove si trovano le immagini, affinché lui le configuri come dataset. Il codice seguente fa partire il file dataset_tool.py, e crea un nuovo dataset chiamato smalls a partire dalla cartella immagini.

!python /content/stylegan/dataset_tool.py create_from_images datasets/smalls/ /content/stylegan/immagini/

 

A questo punto, va fatta un’ultima modifica al file train.py per impostare alcuni parametri, ovvero specificare quale dataset di immagini utilizzeremo (un data “custom”, cioè personalizzato, che abbiamo chiamato smalls nel passaggio precedente), e quante GPU utilizzeremo nel calcolo (in questo caso 1, cioè quella che Colab ci mette a disposizione).

Colab non permette di modificare i file tramite un editor, quindi sarà necessario scaricare train.py dalla cartella stylegan, quindi cancellarlo da Colab una volta scaricato (tasto destro del mouse sul file e clic su “Delete”), e poi effettuare l’upload della versione modificata.

Per settare un parametro va rimosso il cancelletto # di fronte alla riga corrispondente. Le righe,già modificate secondo i nostri parametri, sono quelle mostrate nell’immagine seguente.

Per spostare i file all’interno di Colab, può ritornare utile usare questo codice in python:

import shutil
shutil.move('/content/cartelladovesitrovailfile', '/content/cartelladovespostareilfile')

 

Una volta modificato il file train.py, è possibile fare partire il training vero e proprio:

!python /content/stylegan/train.py

 

StyleGAN provvederà a salvare una copia del lavoro svolto ogni 10 tick, ovvero all’incirca ogni 1000 iterazioni. La copia viene salvata con il nome di network_snapshot_numero dell’iterazione corrispondente.pkl

tick 1     kimg 140.3    lod 7.00  minibatch 256  time 16m 19s      sec/tick 418.8   sec/kimg 2.99    maintenance 560.3  gpumem 3.8 
network-snapshot-000140        time 4m 57s       fid50k 411.7487  
tick 2     kimg 280.6    lod 7.00  minibatch 256  time 30m 44s      sec/tick 348.9   sec/kimg 2.49    maintenance 515.8  gpumem 3.8 
tick 3     kimg 420.9    lod 7.00  minibatch 256  time 36m 34s      sec/tick 347.7   sec/kimg 2.48    maintenance 2.8    gpumem 3.8 
tick 4     kimg 561.2    lod 7.00  minibatch 256  time 42m 26s      sec/tick 348.7   sec/kimg 2.49    maintenance 3.3    gpumem 3.8 
tick 5     kimg 681.5    lod 6.87  minibatch 128  time 52m 00s      sec/tick 570.3   sec/kimg 4.74    maintenance 3.0    gpumem 4.2 
tick 6     kimg 801.8    lod 6.66  minibatch 128  time 1h 03m 16s   sec/tick 673.2   sec/kimg 5.60    maintenance 3.4    gpumem 4.2 
tick 7     kimg 922.1    lod 6.46  minibatch 128  time 1h 14m 37s   sec/tick 677.9   sec/kimg 5.63    maintenance 2.8    gpumem 4.2 
tick 8     kimg 1042.4   lod 6.26  minibatch 128  time 1h 25m 58s   sec/tick 677.5   sec/kimg 5.63    maintenance 3.1    gpumem 4.2 
tick 9     kimg 1162.8   lod 6.06  minibatch 128  time 1h 37m 22s   sec/tick 681.0   sec/kimg 5.66    maintenance 3.1    gpumem 4.2 
tick 10    kimg 1283.1   lod 6.00  minibatch 128  time 1h 48m 37s   sec/tick 672.1   sec/kimg 5.59    maintenance 2.8    gpumem 4.2 
network-snapshot-001283        time 5m 03s       fid50k 331.6563  

 

È necessario ricordarsi di salvare l’ultimo snapshot prima dello scadere delle 12 ore concesse da Google Colab. La creazione e il download del file è molto lenta (circa 300 MB di peso) e possono essere necessarie alcune decine di minuti.

Per riprendere il training al punto in cui si era rimasti, creiamo una nuova sessione su Colab, cliccando su Runtime > Reset all runtimes dal menù in cima alla pagina. Ricordiamoci di selezionare nuovamente un’accelerazione GPU per il nostro lavoro. Carichiamo il file pkl  precedentemente scaricato e, e rieseguiamo nuovamente ogni punto di questo tutorial.

Prima di avviare il training nuovamente sarà però necessario modificare il file training_loop.py all’interno della cartella options di StyleGAN, specificando dove si trova il file pkl, e da quale iterazione riprendere, come mostrato nell’immagine successiva.

Come rimuovere la voce da una canzone online (in modo automatico e in pochi secondi)

Togliere la voce da una canzone è un procedimento che può richiedere molto tempo e che, spesso,è accessibile solo a chi sa usare determinati programmi di editing audio. Esiste però un sito web che promette di fare il lavoro al posto nostro in modo automatico ed estremamente veloce: si chiama Vocal Remover , e riesce a rimuovere completamente la voce dalle canzoni grazie all’utilizzo delle reti neurali.

A queste reti infatti sono state fatte ascoltare prima canzoni con la voce, e, successivamente, canzoni senza voce. Così hanno imparato a riconoscere le canzoni che hanno un timbro vocale al loro interno e a rimuoverlo.

Usare Vocal Remover è molto semplice. E’ necessario caricare il file mp3 della canzone, o in alternativa inserire l’URL del video youtube dove la canzone è contenuta. In pochi secondi il sito ci restituisce delle anteprime della canzone con la voce rimossa.

Scaricare il file in mp3 costa 3,99 dollari. In alternativa è possibile scegliere 3 piani di pagamento: Small (3 canzoni al prezzo di 7,99 dollari, Regular 10 canzoni a 19,99 dollari, o Premium 50 canzoni a 59,99 dollari).

Come creare un deepfake: tutorial introduttivo per chi non lo ha mai fatto

Fino a qualche anno fa, il fotoritocco era un’arte nel quale si cimentavano solo gli esperti del settore, e che spesso comportava ore e ore di controlli manuali per curare ogni particolare e realizzare un falso più autentico possibile.

Oggi, più precisamente da qualche anno a questa parte, i progressi nel machine learning hanno consentito di fare grandi passi in avanti, e modificare una foto è diventato un processo quasi automatico. È possibile compiere operazioni di face-swapping (cioè mettere la faccia di una persona nel corpo di un’altra) in maniera che il risultato appaia quasi indistinguibile agli occhi di un osservatore: i prodotti di queste operazioni si chiamano deepfake e nell’ultimo anno sono diventati estremamente popolari.

Quale dei due è quello vero?

Per realizzarli non servono grandi competenze: può farli chiunque, scaricando un semplice tool da usare nel proprio computer. La creazione di un deepfake richiede però tempo (da alcune ore ad alcuni giorni per la realizzazione di un video, a seconda della scheda grafica che si usa) e si consiglia l’uso di una scheda grafica da almeno 2GB di RAM.

Maggiore è la RAM della scheda grafica in uso, minore sarà il tempo impiegato per creare il video. Nella media, servono 72 ore per creare un deepfake con una GPU da 8 GB, ma il tutto dipende dai casi e dalla precisione che si vuole ottenere.

Un buon deepfake è considerato tale se il training ha impiegato almeno 100 -300 mila iterazioni. Ma in alcuni casi si ottengono risultati accettabili anche dopo le prime 30-50 mila iterazioni. In generale questi sono i tempi necessari per una singola iterazione a seconda della quantità di RAM della scheda grafica in uso:

2 GB  → 10-15 secondi a iterazione

8 GB → 2-3 secondi a iterazione

11 GB→ 1-2 secondi a iterazione

16 GB → 0.5-0.8 secondi a iterazione

Volendo si può usare anche la propria CPU, cioè il processore del proprio computer, ma ci vorrebbero settimane di attesa per la creazione del video.

Google offre gratuitamente una Tesla K80 da 11 GB nel suo ambiente di sviluppo Colab. Questo il link del notebook precompilato per creare deepfake (con DeepFaceLab): 
https://colab.research.google.com/github/chervonij/DFL-Colab/blob/master/DFL_Colab_Demo.ipynb

Chi ha una scheda grafica NVIDIA si ricordi di scaricare ed installare il toolkit CUDA prima di iniziare a creare il proprio deepfake. Link al download: https://developer.nvidia.com/cuda-downloads

Il primo passo è quello di scaricarsi i tool: i più usati sono FakeApp, DeepFaceLab e OpenFaceSwap. DeepFaceLab viene solitamente preferito agli altri due per la facilità d’uso, oltre per il fatto che permette di creare deepfakes anche con schede grafiche diverse dalle NVIDIA.

Per scaricarlo cliccate questo link:

mega.nz/#!eGRk0KpQ!pwLhNEf3zTuyquO2kZIGICrVc_iSv-ZwrswQah5YYKU

Una volta estratto l’archivio, troverete al suo interno questo contenuto:

Ci sono due cartelle, e un gran numero di file eseguibili. A noi interessa solamente la cartella “workspace” e alcuni di questi file eseguibili.

Andiamo quindi dentro la cartella workspace:

Al suo interno sono presenti due file video: “data_dst” e “data_src”. Essi sono i video sorgente e il video destinazione per la creazione dei deepfake. Il “video_src” è quello dove c’è la faccia che volete traslare mentre “video_dst” è il video in cui volete inserire la faccia.

Se ad esempio volete fare un deepfake dove Di Maio parla nel corpo di Salvini, “video_src” dovrà contenere un video di Di Maio, mente “video_dst” dovrà contenerne uno di Salvini.

Potete quindi cancellare i “data_dst” e “data_src” che trovate nella cartella e rimpiazzarli con i vostri nuovi “data_dst” e “data_src” da impiegare per la creazione del deepfake.

Il prossimo passo è ritornare nella cartella “DeepFaceLab” e cliccare sul file eseguibile “extract images from video data src“. Questo file estrarrà tutti i fotogrammi del video sorgente.

Il file eseguibile si presenterà a voi in questo modo. Vi chiede in quale formato volete salvare le immagini: cliccate invio e il programma inizierà ad estrarre le immagini.

– Se all’inizio non compare nessuna scritta, basta aspettare qualche secondo.-

Una volta compiuta questa operazione, noterete che tutti i fotogrammi estratti sono raccolti nella cartella “data_src” contenuta in “workspace”.

Come secondo passo, fate partire il file eseguibile “data_src extract faces MT best GPU“: questo programma estrarrà i volti dai fotogrammi raccolti nell’operazione precedente.

Tali volti saranno salvati nella sottocartella “aligned” della cartella “data_src” contenuta in workspace.

Successivamente, eseguire i file  data_src sort by similar histogram e data_src check result.

A questo punto recatevi nella cartella aligned, contenente tutti i volti estratti, e cancellate quelli che non rappresentano la faccia interamente, o sono stati estratti male (ad esempio al contrario).

Fatto questo, abbiamo raccolto un dataset con tutti i volti della faccia da translare.

Facciamo quindi lo stesso per il video di destinazione. Cliccare quindi sul file eseguibile “extract PNG from video data_dst FULL FPS“: saranno estratti, come nel caso precedente, tutti i fotogrammi del video.

Successivamente, il file data_dst extract faces MT (or DLIB) best GPU permetterà a sua volta di estrarre i volti dai fotogrammi precedentemente ricavati.

Infine, clicchiamo su data_dst sort by similar histogram data_dst check results. Quest’ultimo aprirà un programma, chiamato XNViewMP, che mostrerà tutti i volti estratti con tanto di landmark facciali. Controllateli ed eliminate quelli che non sono ben allineati con i tratti visivi.

In questo caso si può notare che il volto non è stato estratto correttamente.

Una volta controllati i volti estratti dai video sorgente e destinazione, la preparazione dei nostri dataset sarà terminata.

Potremo quindi iniziare ad allenare il nostro programma e creare il deepfake. Questa operazione viene detta training, che per l’appunto vuol dire “allenamento” in lingua inglese.

Troverete vari file eseguibili per fare questo: DF, H64, H128, LIAEF128, SAE

H64 e SAE funzionano con schede grafiche da 2GB di RAM o superiore.

H128: 3GB di RAM o superiore.

DF e LIAEF128: 5GB di RAM o superiore

Noi usiamo il più semplice tra tutti, l’H64, impiegato, oltre che in DeepFaceLab, anche in FakeApp.

Clicchiamo quindi su “train H64“.

Vi verrà chiesto quale scheda grafica usare. Se cliccate invio il programma sceglierà automaticamente quella dalle migliori prestazioni.

Successivamente, vi saranno alcune preferenze tra cui scegliere. Potete tranquillamente skipparle cliccando invio a ogni passo (in questo modo verrà impostato il valore predefinito).

Una volta iniziato il training, potrete notare la comparsa di una finestra dove verranno mostrate le anteprime dei progressi fatti nella creazione del vostro deepfake, oltre che al numero di interazioni compiute. Maggiore sarà il numero di interazioni, migliore è il risultato che otterrete.

Solitamente, i primi cambiamenti delle anteprime si iniziano a vedere dopo il primo migliaio di iterazioni.

Quando terminerà il training? A deciderlo siete soltanto voi. Quando le anteprime vi sembreranno abbastanza autentiche, allora potrete cliccare invio e chiudere il file H64.

A questo punto, per creare il file video, ovvero il deepfake vero e proprio, tornate nella cartella principale di DeepFaceLab aprite il file eseguibile “convert H64” ( o “convert SAE” se avete usato il training SAE).

L’ultimo file eseguibile su cui cliccare è “converted to mp4”, o “converted to avi” nel qual caso avrete un video in formato .avi. Nella cartella workspace verrà quindi creato il video, denominato “result.mp4”.

 

7 divertenti tool online di Intelligenza Artificiale (2019)

Negli ultimi tempi l’Intelligenza Artificiale è un topic in netta ascesa. Quello che spesso si sente dire, e cioè che i sistemi automatici finiranno per sostituire l’uomo a livello lavorativo, non è lontano dal vero. Il punto è che, nella nostra esperienza quotidiana, computer e smartphone si limitano ad eseguire operazioni piuttosto semplici: scrivere in Word, navigare su internet: tutte operazioni statiche di tipo input/output mediate da linguaggi di programmazione.

Nelle applicazioni di Intelligenza Artificiale invece, vengono usati modelli computazionali che ricalcano la mente umana, di cui sono esempio le reti neurali. I computer imparano quindi a fare da sé. E le applicazioni pratiche di questo tipo di sistemi non si sono fatte attendere: andiamo a vederne alcune diventate popolari sul web:

1. This Person does not exist

Che cosa hanno in comune tutte le persone mostrate nell’immagine qui sopra? Una sola, e cioè che nessuna esiste veramente. Sono state tutte generate automaticamente dall’Intelligenza Artificiale, usando StyleGan, l’ultimo modello di Reti Antagoniste Generative (GAN) rilasciato a febbraio 2019. Le GAN sono basate su due reti neurali: una propone l’immagine, l’altra la contesta finché le due non trovano un accordo. In questo modo si creano delle foto che risultano autentiche all’occhio umano.

Per generare una foto, ecco il link a This Person Does Not Exist.

 

2. Lyrebird

Mandare messaggi vocali su Whatsapp vi stanca troppo? Nessun problema. Sappiate che esiste un tool che fa al caso vostro. Si tratta di Lyrebird, un sito web che permette di generare una copia della vostra voce usando l’Intelligenza Artificiale.

Lyrebird (termine inglese per Menura) è un genere di uccelli canori, denominati anche Uccelli Lira. Essi sono capaci di emulare i suoni che sentono. Il suo omonimo nel web fa altrettanto. Una volta creato l’account, basterà leggere un minimo di 28 frasi per generare la vostra voce virtuale. Attualmente è disponibile solo il modello di voce anglosassone, quindi potrete generare la vostra voce in lingua inglese.

 

3. IBM Watson Text to Speech

Implementato con Watson, l’intelligenza artificiale di IBM, il servizio di text-to-speech del colosso americano del tech offre un’ottima qualità di voce e la possibilità di inserire pause e velocità di dizione per mezzo dell’Expressive SSML. Per ora disponibile solo una voce in lingua italiana.

 

4. Google Autodraw

Se vi piace disegnare ma non siete dei Giotto, Google ha pensato a una soluzione per voi. Usando Autodraw sarà possibile creare dei veri e propri capolavori, dal momento che a correggervi c’è niente-poco-di-meno che l’Intelligenza Artificiale.

Il tool funziona così: voi provate a disegnare qualcosa, e Autodraw tenta di capire che cos’è e lo perfeziona. Ovviamente potete aiutarlo anche voi, dandogli un piccolo suggerimento.

 

5. Lobe

Non tutti si accontentano di vedere applicazioni di Intelligenza Artificiale fatte da altri: alcuni vogliono esserne parte attiva e sviluppare qualcosa di innovativo. Spesso però la mole di conoscenze, software e attrezzature necessarie per iniziare con il machine learning costituisce un ostacolo. Proprio per questo siti come Lobe.ai sono estremamente utili.

Tramite questo tool sarà possibile costruire e allenare i propri modelli di deep learning tramite un’interfaccia semplice ed intuitiva.

 

6. Google Photoscan

Le nostre foto. Le nostre amate foto. Oggi, si sa, i nostri album sono in formato digitale e spesso in cloud, ma cosa ne sarà di tutti i vecchi scatti del passato? Google ha pensato a una soluzione, e ha creato Photoscan. Questa app usa l’Intelligenza Artificiale per correggere, ritagliare e migliorare la qualità delle vecchie foto per poterle salvare negli album digitali.

Link download Google Play

Link download Apple Store

 

7. This Rental does not exist

Creato sulla scia di This Person does not exist e degli altri tool composti con le reti GAN, This Rental does not exist genera annunci immobiliari di appartamenti che non esistono. A differenza delle persone finte, qui però possiamo sperimentare maggiormente la potenza dell’Intelligenza Artificiale, in quanto ad essere finte non sono solo le foto dell’appartamento, ma anche il titolo, il testo dell’annuncio, oltre al nome e la foto del proprietario. Per sviluppare This Rental does not exist , i creatori hanno allenato i loro algoritmi con oltre 40 milioni di annunci immobiliare provenienti da AirBnb.

Come opacizzare,oscurare o pixelare parte di un’immagine online

Se avete bisogno di nascondere parte di una foto e non volete scaricare software di ritocco, potete farlo direttamente online in modo veloce e gratuito con Marky.space

Con questo intuitivo tool online, sarà possibile selezionare una qualsiasi foto dal vostro computer, e con un solo clic selezionare l’area da opacizzare. Facendo invece doppio clic si può decidere quale tipo di sfocatura utilizzare, e cioè se sfocare in modo generico, o pixelare, o ancora oscurare totalmente l’area selezionata.

Una volta deciso lo stile di sfocatura basta cliccare in alto al sinistra il tasto ‘download’ per poter scaricare l’immagine modificata.