Video recording and image analysis of fishes to automate and increase the efficiency of fish phenotyping, and bolster posterior analysis to improve farm production and management.
Git clone this repository git clone https://github.com/fishguardians/fishing-on-a-conveyor-belt.git
or Download the whole zip package
Go to https://github.com/fishguardians/fishing-on-a-conveyor-belt-no-tag
Go to https://github.com/fishguardians/fishing-on-a-conveyor-belt-no-tag
or Download the whole zip package from Github
Installation Guide - Google Doc
Setting Up Tutorial (Windows) - https://youtu.be/WGdvI_PCXuM
Setting Up Tutorial (Mac) - https://youtu.be/09KSx-147fg
How To Use Tutorial - https://youtu.be/MYsK0XLZWLQ
Install Python [email protected] using this Windows_x64, Windows_x32, macOS or navigate to Downloads
Install/Downgrade Pip [email protected] with command python -m pip install pip==21.2.3
Install required python libraries pip install -r requirements.txt
Open the website python main.py
For educational and research purposes.
For further details or development, email:
pureskill714[Raheem] - [email protected]
nbinged[Nicholas] - [email protected]
Don-Whis[Chen Dong] - [email protected]
yaoyujing - [email protected]
SageSG[Henry] - [email protected]
Please contact Singapore Institute of Technology & James Cook University for further enquiries.
Many thanks to the researchers at James Cook University for their hospitality and assistance. Special thanks to the Academic Professor, Kirwan Ryan Fraser and Industry Supervisor, Jose Domingos and his assistant Joseph Angelo.
Darknet (For YOLOv3 and YOLOv4 convolunsional network) github link
Streamlit (Graphic User Interface) streamlit docs
Pandas (Data Visualisation) pandas docs
Tesseract tutorial (Fish ID Detection) youtube link 1, youtube link 2, configs
Google Colab (Object Tracking and YOLOv3) youtube link
LabelMe Library (Create Clean Datasets) link
YOLOv3 Tutorial (Train Images) link
OpenCV (Digit Recognition) github_repo, link
OpenCV (Fish Dimension) youtube_link
Read files by directory - link
Unittest - link
# | {Path} | Description | Commands |
---|---|---|---|
1 | ./backup | Stores a duplicate of the project | -runs from main.py- |
2 | ./completed_videos | Stores the completed videos | -runs from video_processing.py- |
3 | ./dnn_model | Stores the trained object detection model | -runs from main.py- |
4 | ./images | Stores the images for verification | -runs from video_processing.py- |
5 | ./output | Stores the unedited results from the processed videos | -runs from multiple scripts- |
6 | ./pages | Stores the frontend streamlit pages | -runs from main.py- |
7 | ./scripts | Stores all the scripts being used for video processing | -runs from main.py- |
8 | ./testing | Stores the examples for testing | -runs from test_project.py- |
9 | ./videos | Allow users to store unprocessed videos | -runs from main.py- |
10 | ./constant.py | Stores the variables in use | -runs from main.py- |
11 | ./errorlogs.txt | Stores the errors that is caught | -runs from main.py- |
12 | ./reset_folders | Check for corrupted folders | -runs from main.py- |
13 | ./main.py | Starts the program | -runs from main.py- |
14 | ./test_project.py | Unit Testing for the program | -can run by itself- |
# | Scripts | Description |
---|---|---|
1 | main.py | Starts the program, check for errors, initalise object detection, run video processing |
2 | video_processing.py | Get videos, skip frames, detect objects from frames, check hypothenuse of fish to centre of frame, save images, move videos, view video with streamlit |
3 | reset_folders.py | Check if the folders are in the project |
4 | test_project.py | Test if sub functions are working properly |
5 | object_detection.py | Uses the yolov4 model, configs and classes to detect image |
6 | digit_recognition.py | Retrieve fish weight reading from the image |
7 | fish_measurement.py | Calls upon image enchancers to scrubbing data from image |
8 | generate_csv.py | Perform data cleaning, using median, mode and IQR |
9 | streamlit_scripts.py | Cache unprocessed videos |
10 | text_recognition.py | Use pytesseract to detect fish id tags |
11 | constants.py | Stores the variables used throughout the project |