Computer vision is a process where computers are used to solve tasks such as image classification, object recognition and image segmentation from sensor data or digital media such as videos and images.
In recent years, the advancements in both physical hardware capabilities and artificial intelligence techniques have allowed widescale adaptation of artificial neural networks in computer vision by utilizing different types of neural network architectures such as convolutional neural networks. These networks can be used to process image-based inputs and to make inference from the data in complex visual perception functions.
One of the main challenges of utilizing these networks in practice are the heavy computational requirements and the utilization of these features in resource-limited hardware such as mobile and IoT devices in which performing local computations is infeasible for real-time analysis.
This thesis aims to solve the problem by demonstrating a basic client-server model, where neural networks are deployed to a remote server. This server can be accessed through a web-based client interface. The real-time video-communication between an end device accessing the web interface and the server is then conducted via Web Real-Time Communication (WebRTC), where each frame is streamed from the camera of the end device to the server. Finally, the video frames are processed with pre-trained state-of-the-art convolutional neural networks and the results are transmitted back to the web interface, where the processed frames can be accessed with low latency and high frame rate.
The results of this work indicate that WebRTC is a viable technology for distributed real-time AI purposes such as computer vision. Several computer vision methods were tested during this work, most reaching over 20 FPS and up to 60 FPS with state-of-the-art models running on Nvidia GeForce RTX 3070 GPU.
Tietokonenäkö on prosessi, jossa tietokoneita käytetään ratkaisemaan kuvan luokittelua, objektin tunnistusta ja kuvan segmentointia visuaalisesta informaatiosta.
Viime vuosina fyysisten komponenttien ja tekoälyn kehitys ovat mahdollistaneet laajamittaisen neuroverkkojen käytön konenäön alueella hyödyntäen erilaisia neuroverkkojen arkkitehtuureja kuten konvolutiivisia neuroverkkoja. Näitä neuroverkkoja voidaan hyödyntää prosessoimaan kuvapohjaista informaatiota ja tekemään älykkäitä päätelmiä kuvan sisältöön liittyen.
Yksi näiden neuroverkkojen käytännöllistämisen haasteista ovat suuret laskennalliset tarpeet sekä neuroverkkojen käyttäminen resurssivajeisilla laitteilla kuten älykännyköillä tai IoT-laitteilla, joissa lokaalit laskentatoimitukset eivät ole käytännöllisesti toteutettavissa reaaliaikaiseen käytön ohella.
Tämän työn tavoitteena on ratkaista kyseinen ongelma demonstroimalla asiakas-palvelin arkkitehtuuri, jossa neuroverkot on hajautettu palvelimelle ja johon voidaan muodostaa yhteys web-pohjaisen sivun kautta. Reaaliaikainen videokommunikaatio päätelaitteen ja palvelimen välillä toteutetaan WebRTC teknologialla, jonka avulla jokainen videon kuva lähetetään päätelaitteen kamerasta palvelimelle. Lopulta videon kuvat prosessoidaan neuroverkkoja käyttäen palvelimella ja lähetetään takaisin web-sivulle, jossa neuroverkkojen prosessoimat kuvat ovat saatavilla matalalla viiveellä ja korkealla kuvataajuudella.
Tämän työn tulokset osoittavat, että WebRTC on mahdollinen teknologia hajautetuille reaaliaikaisille tekoälyn sovellutuksille kuten konenäölle. Työssä testattiin useita konenäön menetelmiä, joista monet saavuttivat yli 20 FPS:n rajan ja osa jopa 60 FPS:n rajan viimeisintä tekniikkaa edustavien neuroverkkomallien avulla Nvidia GeForce RTX 3070 grafiikkasuorittimella.