This project is the current website you are viewing. After starting it thanks to a template, I customized it and added dynamic content for the projects thanks to JavaScript.
It is within this project I developped the code for my Master's thesis. It explores the concept of Partially-Observale Markov Decision Processes (POMDPs) and how to solve them using Point-Based Value Iteration (PBVI) algorihtms. These implementations were tested with a set of toy problems. Then it was applied to the problem of my thesis, namely: Olfactory Navigation. Some convenient classes were developped to instantiate easily POMPD models and solve it with PBVI solvers with the various flavours of it. Then when running simulations, the results can be plot very conveniently as well.
For this project, I set myself to develop a JADE multiagent system in order to simulate the spread of an illness (in this case COVID) within a population. This is inspired by the video of 3Blue1Brown (https://youtu.be/gxAaO2rsdIs). I want to implement various features to simulate as faithfully as possible the spread of a decease. These feature include the fact of having multiple containers, simulating different countries, from which agents can travel to and from. Or the ability to tune how contagious the disease is using parameters such as the contamination radius and probability. Then, the severeness of the disease using parameter of the average length of sickness. Then, to exploit the possibilities of the JADE platform, I attempted to make it possible to create containers on a different computer on the same network to share the computational load of the simulation between different hosts.
In this project, I put to practice about how to make games in Unity. For this, I implemented a 1st person simulator aimed at training in an entertaining fashion the job of a Surgeon's Assistant. For this, the player has to correctly remember what the tool the surgeon asks look like in order to bring it to him in a timely fashion. There are multiple levels implemented that each increase the amount of tools asked and the amount of tools available to choose from.
I explore 3 different techniques to perform Machine Translation. I attempt to implement and compare implementations of a Statistical, Rule-Based and Neural Machine Translation. I attempt to implement these techniques from scratch (not using libraries to do the whole thing) to understand how they work on a deeper level. I did this in python and use as dataset of sentence correspondances from movies subtitles EN <-> IT coming from opensubtitles.org .
In this project, I attempted optimize the computation of the Mandelbrot set. First a profiling has been performed to find out the hotspot of the computation, then the different parallelization and vectorization techniques learned were applied. These techniques were implemented with OpenMP, MPI, a hybrid of both, and finally CUDA. Within these implementations, different parameterizations were tried to find out the most optimal. Finally, all the runtimes were compared among each other to see if the theory matches to practice and to determine which was the most optimal implementation.
In this project, we built a website where we built 11 dynamic plots using he D3JS library. These plots were to the visualize different aspects of the COVID-pandemic. It was made as a group project for the Data Visualization class. We tried incorporating the various plotting techniques we learned, from bar charts, to line graphs, or geographical data.
This project was made for the course of Data Visualization. We got to make a website with a new page for each different assignment (5). Each week, for each assignment, we got to use a different plotting technique. The first was about bar graphs. Then, we explored distribution and correlation plots. Then data on a map, and temporal data. And finally a Sankey Diagram.
In this project, I explore building an Agent able to play the board game Hex.
Hex is 2 player where the goal is to link it's assigned two sides of the field. On interesting challenge about this game is that, due to the hexagonal architecture of the grid, there will always be a winner and a looser, there is no ties. It is usually played on a 11 by 11 or 13 by 13 board, which is a state space larger than the one of chess.
I explore the building of the agents we built in class to this board-game. I first build a trivial random play agent that is used to play against other agents. Following this I build a Minimax Agent with a limited search depth. Then, getting into reinforcement learning, I build a TQ-learning agent. And finally I build a deep-Q learning agent.
The topic of this project is emotion recognition from speech signals. To achieve that, a model can be trained using an audio database containing a variety of emotions (either basic or compound) for different speakers, e.g., EMODB (German), EMOVO (Italian), IEMOCAP (English), etc. Low-level descriptors can be computed either manually or using a dedicated tool, such as openSMILE, which provides a complete set of features for each specific audio recognition. Also, feature embedding using simple/variational autoencoders can be used. Training can be achieved using neural networks, either shallow or deep. The final output should be a system able to identify emotions based either on a basic psychological model (basic emotions) or using a bi-dimensional representation (positive/negative valence and high/low activation).
In this project, I explored a computer vision library meant to help the annotation of body-parts of some frames and interpolation to further data. This was used to generate a sequence of points of my finger tracing out letters. Then, after identifying the start and end frames of each letters in the video, we attempted to train a Neural Network using the emnist dataset to label the letters I drew in the air.
A project made in the context of the Machine Learning class of Computer Science Master's Degree at the Universita di Genova. It explores the clustering algorithm known as k q-flats. This algorithm is a generalization of the k-means algorithm.
In this project, I implemented a Kalman filter to track the position of an object in a video. Namely, I used two different videos of a pool player making a shot and tracking the position of the ball after this impact. Doing so required computer vision and pre-processing to mask-out all the irrelevant elements and in order to find the center of the balls. After the centers of the objects have been found for each frame in the video, the path in integrated using a Kalman filter.