Tehnologije

Commodore 64 pokreće AI za generiranje slika

Koristeći modificiranu verziju Python koda programer Nick Bild napravio je stotinjak retro inspiriranih spriteova 📷 Nick Bild
Mladen Smrekar utorak, 14. svibnja 2024. u 10:03

Programer Nick Bild zapitao se što bi bilo da su AI generatori slika postojali u osamdesetima, kakve bi one bile i za što bi se slike koristile? Sam je došao do mogućeg odgovora

Commodore 64, "debeljko" kako su mu tepali zbog simpatičnog, zaobljenog izgleda, bio je i ostao jedno od najpopularnijih 8-bitnih računala osamdesetih godina prošlog stoljeća. Širom svijeta prodan je u 17 milijuna primjeraka, a mnogi se i danas sa sjetom sjećaju igara koje su igrali na njemu, "The Sentinel", "Bubble Bobble", "Mayhem In Monster Land", "Impossible Mission", "Paradroid", "Wizball"... No, nitko nije očekivao da bi računalo predstavljeno davne 1982. godine danas moglo pokretati generativni AI za generiranje kreativnih retro spriteova. 

A upravo je to pošlo za rukom programeru Nicku Bildu koji je detaljno dokumentirao izrade generativnog AI alata za Commodore 64 koji se može koristiti za stvaranje 8 x 8 spriteova prikazanih u rezoluciji 64 x 64. 

Generativni algoritam

"AI generatori slika vrlo su popularni ovih dana, a rezultati se koriste u svim vrstama kreativnih projekata. Zbog toga sam se zapitao što bi bilo da su generatori slika postojali tijekom rane revolucije osobnih računala u osamdesetima, kakve bi one bile i za što bi se slike koristile?", objašnjava Bild kako je došao na ideju za ovaj poduhvat. 

Primjeri generiranih slika 📷 Nick Bild
Primjeri generiranih slika Nick Bild

Današnji algoritmi, poput Stable Diffusiona zahtijevaju ogromnu količinu računalnih resursa koji se na razuman način jednostavno ne mogu natjerati da rade na strojevima tog doba. No, uz malo truda, jednostavniji generativni algoritam mogao bi se koristiti za izradu slika, pomislio je Bild koji je probabilistički PCA algoritam odlučio prilagoditi za rad na Commodoreu 64.

Pojednostavljena logika

Koristeći modificiranu verziju Pythona koda napravio je stotinjak retro inspiriranih spriteova, predstavljenih kao binarni nizovi, uz pomoć proračunske tablice vlastite izrade. Te je podatke iskoristio za treniranje modela na modernom računalu s modificiranim skriptama. Niz vrijednosti parametara uključio je u skriptu stvorenu pojednostavljenom logikom, bez NumPyja ili drugih biblioteka, kako bi pokrenuo randomizaciju i generativne dijelove algoritma, objašnjava Bild. 

Broj ponavljanja kroz koje algoritam prolazi može varirati. Više ponavljanja općenito daje bolje rezultate, ali traje dulje. U 94 ponavljanja potrebno je oko 20 minuta za rad na C64. 📷 Nick Bild
Broj ponavljanja kroz koje algoritam prolazi može varirati. Više ponavljanja općenito daje bolje rezultate, ali traje dulje. U 94 ponavljanja potrebno je oko 20 minuta za rad na C64. Nick Bild

Ovo pojednostavljenje olakšalo je pretvaranje logike u BASIC kod kompatibilan s Commodore 64. Taj se kod zatim učitava na C64 kako bi se generirale jedinstvene slike koje odgovaraju distribuciji podataka o obuci. Konačno, 8x8 slike se proširuju na 64x64 i prikazuju na ekranu.

Bildovi izumi

Bild je prethodno na Hacksteru predstavio još neka zanimljiva rješenja. Njegov GigglyGram je Android aplikacija za razmjenu poruka uz pomoć MIT App Inventora koja koristi generativnu umjetnu inteligenciju kako bi vas pretvorio u duhovitog sugovornika s pametnim povratcima i memovima.

Izradio je Bild i alternativni Wii kontroler za igranje s D-padom te najlakši glasovni pomoćnik nalik GPT-u na svijetu koji koristi LLM otvorenog koda za odgovaranje na verbalne zahtjeve i radi 100% lokalno na RasPi 4. 

Ne trebaju vam ni internetska povezivost niti usluge temeljene na oblaku, kaže Bild. Pritiskom na tipku, zvuk se snima preko USB mikrofona, a taj se audio zapis prosljeđuje u softver za automatsko prepoznavanje govora Whisper koji generira prijepis zvuka.

Transkript se koristi za prompt TinyLlama-1.1B, LLM zapakiran kao llamafile. Odgovor LLM-a zatim se prosljeđuje u besplatni sintetizator govora eSpeak otvorenog koda za proizvodnju zvuka koji se reproducira na zvučniku spojenom na Raspberry Pi.