Researched and implemented data augmentation methods to convert existing
datasets to appear as if their images have been distorted by the effect of a
fisheye lens. These along with the same distorted annotations were used to train
an object detection model using YOLOv7 such that it becomes accustomed to distortions
caused by fisheye lenses in real time. Several models were tested with scripts
created to evaluate their regional performance.
Languages and Softwares involved:
- Python
- YOLOv7
Configuring an FPGA on a DE10-SOC board to use a NIOS II processor
and custom IP blocks to maximise speed when evaluating a target function
whilst also minimising resource usages.
Languages and Softwares involved:
- Verilog
- Quartus Prime
Taught myself HTML and CSS to put together this website.
Languages and Softwares involved:
- HTML, CSS
After following an online tutorial on how to make a simple
memory game app, I went on to build a countdown app consisting
of stopwatch and timer features.
Languages and Softwares involved:
- Kotlin
- Android Studio
End of year coursework to create a rover capable of autonomous
and manual motion with object detection where the target objects
are 5 different coloured balls.
Personally worked on the Vision subsystem using a D8M-Camera module
connected to a DE10-Lite board holding an FPGA which was used
to configure a NIOS II processor and other components on; made the
rover capable of detecting ping pong balls, identifying the
different colour and calculating the distance of the ball from the
camera.
Languages and Softwares involved:
- C, C++, Verilog
- Quartus Prime, Arduino IDE
Developed a 1v1 tank game established through an IoT system using 2 FPGAs,
which act as controllers, are connected to PCs which act as nodes which
communicate with a TCP server hosted on an AWS client.
Personally worked on configuring the FPGA and making the program to
run on the instantiated NIOS II processor to convert metrics from
the accelerometer into WASD movements. Also established the data flow
from the FPGA to a host PC.
Languages and Softwares involved:
- C, Python
- Quartus Prime
Worked towards writing a compiler capable of converting C code
to MIPS assembly code. Wrote a lexer using Flex to break down input
streams of text into its tokens. We then wrote a parser to identify
constructs such as if statements, while loops, variable
assignments etc. Formed an AST using a series of header files
written in C++ to handle compilation of the parsed information.
Languages and Softwares involved:
- C++, Yacc, Flex, Shell
Created a working synthesizable 32-bit instructions MIPS
multicycle processor using Verilog capable of executing 48
given instructions.
Personally worked on creating the testbench for the CPU
using shell scripts. Also wrote many of the test cases.
Languages and Softwares involved:
- Verilog, C++, Shell
Designed a MU0 optimised for the following algorithms:
- Calculating Fibonacci numbers using recursion,
- Calculate pseudo-random integers with a linear congruential generator (LCG),
- Traverse a linked list to find an item.
I worked on optimising the CPU for the task of calculating Fibonacci numbers
using recursion. This task introduced me to stack memory which uses the 'last in, first out' data
structure which we were directed to use to implement this task. The section of the report
detailing the process I underwent and the final product for the Fibonacci number generator
can be found here.
Languages and Softwares involved:
- Verilog
- Quartus Prime