As far as AI is concerned, I'm mostly interested in their creative applications. For example: game-playing AI, metahuristic optimizaton, using pre-trained models for innovative purposes, etc. I haven't explored much of main-stream AI/ML.
I used minimax algorithm to implement chess AI in Python, using PyGame for graphics. Minimax algorithm requires an evaluation function, which takes in the state of the board and outputs a score that conveys which player is winning and by what extent. I implemented a simple evaluation function which considers just positional and material advantages. Minimax algorithm assumes that each player will try to maximize their own evaluation, and outputs the best possible move by looking ahead a certain number of steps. I incorporated multiprocessing after the first move to speed up the process. Currently, only 3-4 moves can be looked ahead, although this number can be increased via optimizations like alpha-beta pruning. You can find the repository here.
What if we can use the principles of evolution to solve optimization problems? Genetic algorithm is a metaheuristic optimization method which uses mutation and recombination in order to maximize fitness of a population of genes towards a given problem. I considered a very abstract problem: guiding a bunch of blind entities from point A to point B, whilst avoiding collision with walls and obstacles. You can access the simulation here.
I implemented an entire pipeline which takes in an image and infers all the text present in it. This process is composed of several steps:
I initially made a simplified, procedural, obstacle avoidance game called Infinity Run. I used a method called ray-casting in order to figure out how close the walls are on all angles, and accordingly render the height of the walls. At this point, I realised that I could integrate a pre-trained model for hand-detection, and thereby allow the player to control the character (go left/go right) by giving input into the webcam! For this purpose, I used a model from mediapipe (Google). The framerate is a bit low because the inference takes time, and my laptop isn't top-notch. You can find the repository here. You can watch a video of me playing the game here.