(Xirka - Fish Counter - Bryan Stanley Effendy and Jordan Lee)
Day 1 (15 February 2024): Innovating the fish counter machine
Found the materials and brainstormed the ideas on how to improve on the invention. We decided to implement a barrier function for the project to prevent overfishing. The barrier is activated when one side has reached the required amount of fishes they need to collect and lifts up once it's been collected.
Day 2 (16 February 2024): Collecting dataset and finalizing the materials required
I collected around 152 images for the project to train the machine for the project and jordan finalized the materials necessary for the project before submitting it to our supervisor for approval. Jordan also made a 3D model of a rack and pinion gear for the project.
Day 3 (19 February 2024): Trying out ultralytics and remodeling the rack and pinion gear.
I tested out the model with ultralytics and so far I would say around 60% of the images it detected in the testing were correct and the other images seemed to have an issue. Most of the issue seem to appear when there are more than 3 fishes and sometimes the model will view a part of the fish and put it into the counter. Will likely try this again tomorrow and figure out how to increase the accuracy. Jordan remodelled the rack and pinion gear to the appropriate dimensions needed for the project.
Day 4 (20 February 2024): Annotating the images and training the accuracy of the model
I created a model from for YOLOv8 from scratch and annotated 152 of the images I collected on the 16th. The scratch model is created from vscode while Jordan tried to create a more accurate model through google colab
Day 5 (21 February 2024): Trying out the machine learning on google colab.
Jordan tested out the machine learning on google colab to count and track objects from a video and label them, so far it works. Will likely try this again tomorrow and try to use the dataset of fish given by our supervisor.
Day 6 (22 February 2024): Managed to create a prediction model
I tested the model to run around 100 epochs to train the model and successfully obtained a prediction score for the images that are being trained for the model. Not only do they display the confidence score of the images but bounding boxes are also created in the process. Although the model isn't consistent, the model can detect multiple fishes in one image.
Day 7 (23 February 2024): Used the dataset given by the supervisor
I was able to code the model created from scratch to detect the fishes in the video. It worked although it was very inconsistent. I think it's due to the fact that the dataset I originally collected was of a fish but each image contains varying species so maybe the model must've been confused in identifying. Today, I am using the dataset from the supervisor in which it contains fishes of the same breed and annotated a total of 72 images. Later I will train the model to use these models instead.
Day 8 (26 February 2024): Created a model that can detect most of the fishes in the video.
I finished annotating the images from the supervisor's dataset on friday and trained the model with 200 epochs. Today I was able to test out the recent trained model with the video they sent us. The model works rather well and it can detect most of the fishes in the video and even detect fishes that somewhat overlap each other. The next day or 2 days later I will try out how to create a counter for the video.
Day 10 (28 February 2024): Most of the items needed for the hardware have arrived
So far we received the jumper cable, servo motor, acrylic, glue and aquarium. All that's left is the steel bar and one piece of the rack and pinion gear. Currently I (Bryan) am working on fine tuning the code to have a counter. Jordan measured the overall width needed for the barrier to fit the aquarium.
Day 11 (29 February 2024): Progress report presentation for the project
Jordan made the barrier. We discussed on how to make the fishes move since they like to clump together in 1 spot. We considered storing the fishes in another container once a side has met quota. We thought of creating a pipeline to deliver the fishes to a new container. Once that process has been completed, the barrier lifts up and decide to create a spring like mechanism to tilt the water to one side to prevent the fish from entering the pipe.
Day 12 (1 March 2024): Region of Interest and finishing the barrier
Jordan attached the rack gear to the barrier and he installed the pinion gear onto the servo motor. He also tested whether the barrier can go up and down and it works smoothly. I measured the point of interest needed to set up the parameters for the in and out counts for the counter.
Day 13 (4 March 2024): Setting up the barrier for the aquarium
Jordan finished creating the barrier for the aquarium. He finished creating the support system to balance the barrier. Since the 2nd rack and pinion gear hasn't arrived yet, the overall design is still not complete.
Day 14 (5 March 2024): Finishing the barrier for the aquarium
With the second rack and pinion gear in hand, jordan was able to install the 2nd rack and pinion gear to the barrier, thus, finishing up the barrier.
Day 16 (7 March 2024): Coded the gear with an arduino Mega
Jordan coded the gear attached to the servo motor to move at a certain angle to move the barrier up just the right amount. He also tested whether the motor can lift the barrier smoothly and it does.