Olen 19-vuotias itseoppinut ohjelmoija Suomesta, jolla on monipuoliset ohjelmointitaidot sekä intohimo tekoälyyn. Minulla on viiden vuoden kokemus Pythonista, ja omaan vahvan perustan JavaScriptistä, HTML:stä ja CSS:stä. Lisäksi minulla on jonkin verran kokemusta Rustista ja opettelen parhaillaan C/C++:n perusteita.

smb-ppo

Ensimmäisessä tekoälyprojektissani käytin OpenAI:n gym-retroa luodakseni tekoälyn, joka pystyi onnistuneesti suorittamaan Super Mario Bros -pelistä monta tasoa. Parantaakseni mallin suorituskykyä toteutin kuvan esikäsittelytekniikoita, kuten harmaasävyjen skaalaus ja peli-ikkunan pienentäminen. Lisäksi loin mukautetun skenaariotiedoston palkintojen ja rangaistusten määrittelemiseksi. Samalla se määrittää milloin yksittäisen jakson pitäisi päättyä.

Käytin neuroverkkoa varten stable-baselines3:n PPO-algoritmia, ja pystyin onnistuneesti kouluttamaan mallin suorittamaan tason loppuun suhteellisen nopeasti.

Tämä projekti toimi arvokkaana johdatuksena tekoälyn alaan ja lujitti kiinnostustani aihetta kohtaan. Oli ilahduttavaa seurata, kuinka tekoäly oppi ja parantui ajan myötä. Koin kokeilun eri parametrien ja verkon säätöjen kanssa erityisen palkitsevana osa projektia.

Kaiken kaikkiaan tämä projekti oli arvokas oppimiskokemus, ja olen innokas jatkamaan tekoälyn mahdollisuuksien tutkimista tulevaisuudessa.

nn-tool

Tässä projektissa kehitin työkalun, jolla voi luoda neuroverkkoja helposti käyttäen vain NumPy-kirjastoa. Projekti oli haastava mutta palkitseva kokemus, sillä neuroverkon matematiikka oli määritettävä käsin. Neuroverkkoon ohjelmoin olio-ohjelmoinnin perusteita noudattaen tiheän kerroksen (Dense) ja useita aktivointikerroksia. Lisäksi otin mukaan kaksi häviöfunktiota, Cross-Entropy Loss ja Mean Squared Error, jotka tarjoavat vaihtoehtoja sekä luokittelu- että regressio-ongelmiin. Nopeuttaakseni harjoittelua toteutin myös cuda-kiihdytetyn CuPy-version samasta työkalusta.

Yksi tämän projektin jännittävimmistä puolista oli mahdollisuus kokeilla eri parametreja ja tarkkailla verkon suorituskykyä. Käytin MNIST-tietokantaa esittelyaineistona ja olin tyytyväinen nähdessäni verkon luokittelevan numerot oikein erittäin suurella todennäköisyydellä. Lopulta onnistuin saavuttamaan yli 98 prosentin tarkkuuden.

Tulokset olivat erityisen ilahduttavia, sillä ne olivat osoitus kehittämäni verkon toimivuudesta.

Matematiikan koodaaminen käsin oli arvokas oppimiskokemus. Se oli mielestäni hyvä tapa saada syvällisempi ymmärrys neuroverkkojen perusperiaatteista. Nautin myös haasteesta kehittää toimiva neuroverkko ilman valmiita kirjastoja.

Kaiken kaikkiaan tämä projekti vahvisti kiinnostustani tekoälyn ja koneoppimisen alaa kohtaan. Olen innostunut jatkamaan näiden teknologioiden mahdollisuuksien tutkimista tulevaisuudessa. Suunnittelen parantaa työkalua lisäämällä lisää kerroksia, aktivointifunktioita ja optimoijia.

netatmoapi

Tässä projektissa kehitin Python-kääreen Netatmo Connect API:lle. Tämän projektin tavoitteena oli tehdä kehittäjille helpoksi käyttää Netatmo Connect API:a Pythonista käsin. Tämän paketin avulla on helppo olla vuorovaikutuksessa Netatmo Connect API:n kanssa ja suorittaa tehtäviä, kuten hakea tietoja Netatmo-laitteista ja hallita niitä.

Yksi tämän wrapperin tärkeimmistä ominaisuuksista on, että se on avointa lähdekoodia ja saatavilla PyPi:stä, joten kehittäjien on helppo asentaa ja käyttää sitä. Näin kehittäjien on helppo integroida Netatmo Connect API osaksi projektejaan ja automatisoida Netatmo-laitteisiin liittyviä tehtäviä.

Vaikka seurasin API-dokumentaatiota ja tulkitsin sitä haluamallani tavalla, kehitysprosessi oli suhteellisen suoraviivainen. Tässä projektissa oli kyse enemmänkin työni jakamisesta julkisesti ja totuttelemista siihen, että projekteistani tehdään avoimen lähdekoodin projekteja. Pystyin ymmärtämään API:n ja sen päätepisteet ja sitten toteuttamaan ne tavalla, joka oli helppokäyttöinen Python kehittäjille. Minun oli myös otettava huomioon kunkin päätepisteen eri parametrit ja vaihtoehdot ja varmistettava, että niitä oli helppo käyttää wrapperissa.

Kaiken kaikkiaan tämä projekti oli loistava tilaisuus jakaa työtäni julkisesti ja tutustua enemmän avoimen lähdekoodin kehitykseen. Odotan innolla, että pääsen jatkossakin työskentelemään avoimen lähdekoodin projektien parissa ja osallistumista kehittäjäyhteisön toimintaan. Netatmo on sittemmin muuttanut API:nsa toimintaa, joten tätä projektia ei enää ylläpidetä.

kakkulaari.fi

Ensimmäisenä web-kehitysprojektinani kehitin verkkosivuston harrastelijaleipuri-äidilleni, joka valmistaa oikeita esineitä muistuttavia kakkuja. Tavoite oli esitellä hänen leivonnaisiaan ja tarjota hänen seuraajillensa alusta, jossa voi helposti ihailla hänen kakkujaan ja nähdä hänen luovaa työtänsä.

Käytin Instagramin API:a noutaakseni kaikki hänen kuvansa ja sijoitin ne verkkosivuille. Toteutin myös hakujärjestelmän, jonka avulla käyttäjät voivat etsiä tiettyjä kakkuja käyttämällä hashtageja avainsanoina. Lisäksi sisällytin suodatinominaisuuden, jonka avulla käyttäjät voivat selata makeita tai suolaisia leivonnaisia.

Tämä projekti oli ensimmäinen kokemukseni web-kehityksestä, ja olin innoissani haasteesta luoda verkkosivusto. Tein tiivistä yhteistyötä äitini kanssa ymmärtääkseni hänen näkemyksensä. Prosessi oli hauska ja luova, ja nautin eri web-kehitystekniikoiden oppimisesta ja soveltamisesta.

Kaiken kaikkiaan tämä projekti oli hieno oppimiskokemus, ja olen ylpeä lopputuotteesta. Odotan innolla, että pääsen jatkossakin parantamaan web-kehitystaitojani ja luomaan lisää verkkosivustoja tulevaisuudessa.

ruokaboksi-arkisto

Tässä projektissa kehitin reseptiarkiston yksityiseen käyttöön. Projektin tavoitteena oli luoda työkalu, jonka avulla ruokakassi-reseptejä on helppo järjestää ja hakea. Arkisto mahdollistaa reseptien suodattamisen niiden ainesosien mukaan. Ainesosat eriteltiin yli 1000 reseptistä tekoälyn avulla. Lisäksi se sisältää ominaisuuden, jonka avulla käyttäjät voivat tarkastella reseptiä, ohjeita ja sen ainesosia sekä niiden määrää.

Tällä reseptiarkistosivustolla käyttäjät voivat suodattaa ja lajitella reseptejä niiden ainesosien perusteella. Sivuston vasemmalla puolella käyttäjät voivat valita tietyt ainesosat, joita haluavat reseptien sisältävän. Klikkaamalla reseptiä käyttäjät voivat tarkastella reseptiä, ohjeita ja sen ainesosia sekä niiden määrää. Sivustolta löytyy myös linkki alkuperäiseen reseptiin.

Kehitysprosessiin kuului käyttäjien tarpeiden ja käyttötapausten ymmärtäminen sekä kaikkien resepti- ja ainesosatietojen kerääminen. Yksi haastavimmista näkökohdista oli suunnitella käyttöliittymä ja tietokanta niin, että niitä on helppo käyttää ja ymmärtää. Jouduin myös työskentelemään suodatus- ja lajittelumekanismien kanssa syvällisemmin kuin aikaisemmin.

Toinen haaste oli reseptien ja ainesosien tietojen kerääminen. Käytin tekoälyä erittelemään yli 1000 reseptin ainesosat, mutta jouduin silti manuaalisesti valmistamaan usean mallikappaleen, jotta tekoäly pystyi ymmärtämään reseptien sisäisiä kuvioita. Tekoälyn tehtäväksi jäi eritellä ainesosat ylijääneistä resepteistä.

Kaiken kaikkiaan tämä projekti oli loistava tilaisuus käyttää teknisiä taitojani henkilökohtaiseen käyttöön hyödyllisen työkalun luomiseen. Olin tyytyväinen nähdessäni lopputuotteen, ja oli tyydyttävää saada käyttäjiltä myönteistä palautetta. Odotan innolla, että voin jatkaa työskentelyä tämän työkalun parissa ja parantaa sitä tulevaisuudessa.

Ota minuun yhteyttä, niin keskustellaan mahdollisista tilaisuuksista tai tutustuaksesi tarkemmin taitoihini ja kokemuksiini. Olen innoissani mahdollisuudesta kasvaa ja oppia ohjelmoijana.

Sähköposti: joona.heimonen@gmail.com