- Name - Amlan Kumar Nandy
- Email - [email protected]
- University - Trident Academy of Technology, Bhubaneshwar, India
- GitHub Profile - https://github.com/amlannandy
- Medium - https://amlannandy.medium.com/
- LinkedIn Profile - https://www.linkedin.com/in/amlan-nandy/
LabelLab is an image analysis and classification platform for machine learning (ML) researchers. Originally built to classify images of elephants, it has been developed over the years and is now a full-fledged ML utility tool that is able to classify all kinds of images and carry out a number of ML-related tasks in a project-based manner while teaming up with other researchers.
LabelLab mainly consists of 3 sections -
- Backend built using Flask
- Frontend built using React.js
- Mobile Application built using Flutter
Albeit a couple of features that were exclusive to the mobile application, most of my work across GSoC 2021 spanned across all 3 sections of the project.
- Now inside a project, the project admin can create multiple teams, each having a specific functionality, and add users to them.
- These teams can later be updated or deleted by an admin.
- These teams can only perform actions inside a project that are authorized by their role
(role-based access control)
. E.g. - A models team member can only work with models inside that project. - The project owner can make other users admins for better project management. The admin priviledge can also be revoked by the owner when necessary.
- Project structure was modified to accomodate multiple admins.
- Admins form a superset of all other role and can perform any actions inside a project
- Now, a member can also voluntarily leave a project. Earlier, they had to removed by the admin.
- #607 - [Backend] Improved Team Management
- #608 - [Mobile] Improved Team Management
- #613 - [Frontend] Improved Team Management
- Created a Project Activity Tracking System which helps keep track of all changes inside a project such as -
- Adding/removing members
- Adding and labelling images
- Creating labels
- Creating and training models
- and much more...
- Each activity log is associated with a particular category (general, images, labels etc) and a particular user (the one who made that change).
- These activity logs can be filtered for analysis of the progress of the project.
category-specific
- View activity logs of a particular category.member-specific
- View activity logs of a particular project member.team-specific
- View activity logs of a particular team.entity-specific
- View changes made to a particular entity (image, label, model etc)
- #604 - [Backend] Implemented Project Activity Tracking System
- #606 - [Mobile] Implemented Project Activity Tracking System
- #614 - [Frontend] Implemented Project Activity Tracking
- Built a Team-wise Chat System for team members to converse about project progress.
- Used web sockets (Socket.io) for maintaining a live feed of messages with minimal lag
- Migrated the mobile application to Flutter 2.0 along with full support for null safety.
- Fixed dependency issues
- Upgraded all packages to their null-safe versions.
- Replaced packages which didn't support null safety with alternatives
- Created a backend service selection utility in the mobile application.
- This allows the user to enter the URL of the LabelLab API instance that the application should use.
- This provides the functionality to connect to multiple backend instances without much tinkering.
- Fixed existing bugs present in the mobile application
- Implemented minor features that were missed earlier
- Wrote unit tests for the mobile applications using Mockito.
- The tests covered all API endpoints that are being used by the mobile application.
- Originally, all of the project's documentation was present in a single readme.
- Moved that documentation to the Project Wiki.
- Also added documentaion for the new features that were implemented during GSoC '21.
- Migrated mobile application to Flutter 2.0 with null safety
- Created a backend service selection utility in mobile application
- Fixed bugs in mobile application
- Wrote unit tests for all endpoints used in mobile application
- Expanded team management in backend, frontend and mobile
- Implemented project activity tracking in backend, frontend and mobile
- Implemented a team-wise chat system in backend, frontend and mobile
- Wrote documentation for the entire project on Github Wiki
I managed to complete all my milestons within the coding period, and also implemented a few additional features. But there are a few other features the project could benefit from such as -
- Creating initialization scripts for the project
- Writing unit tests for the backend
- Fixing dependencey versions and warnings in the frontend