You can go to: LIVE Web-ML Assistant App
- Main idea of the project: creating a personal Web-ML Assistant with useful modules (Computer Vision, NLP, CRUD)
- Deadline: MVP - 10 days, Prod - 2 days, presentation - 1 day
- Supported modules: Computer Vision (Image Classification, Object Detection, Depth Estimation, Semantic Segmentation), NLP (Image Funny Annotations, Personal Info Remover), authentication (AUTH functionality), contacts (CRUD, filter functionality for address book, validation), noteapp (CRUD, filter functionality for notes), news (news scraping module via spyder), storage (upload and download files to / from server, sorting by categories)
- Dataset based on CIFAR10
- Technical Requirements for Computer Vision module: implement a Web-service and create CNN capable of classifying an image given to it in one of the 10 classes.
- Techniques were used: transfer learning, fine tuning using EfficientNetV2 neural network, data augmentation, ReduceLROnPlateau, EarlyStopping, model compression (Quantization, Pruning)
- Used Django web framework with the MVT architecture.
- Realised data filtering (io, os) and pre-processing (PIL) for uploaded images.
- App deals with different types exceptions.
- The App has a status bar for uploading or recognition process with evaluation of estimated time.
- Filtering non-CIFAR10 classes.
- Informative output with visualized probability style.
- Work with zero-background, 4K images.
- Included examples on main page for testing purposes.
- Supported AVIF format.
- @Yurii Skiter Team Lead, DevOps, MLOps, ML Engineer
- @Dmytro Levoshko Scrum Master, ML Engineer, Dev, QA
- @Valerii Sydorenko Dev, ML Engineer, QA
- @Serhii Korobchenko Dev, ML Engineer, QA
Step 01 - Download the code from the GH-repository (using GIT)
$ # Get the code
$ git clone https://github.com/yuragoit/webMLAssistantTeam2.git
$ cd webMLAssistantTeam2
Step 02 - Edit
.env
atDB_*
settings (DB_ENGINE=...
).
# Use True for development (switch to SQLite), False for production (switch to Postgres + Gunicorn + Nginx)
DEBUG=False
# Deployment SERVER address
DB_ENGINE=postgres # Database Driver
DB_NAME=db # Database Name
DB_USERNAME=postgres # Database User
DB_PASS=**************** # Strong Password
DB_HOST=db # Database HOST, default is localhost
DB_PORT=5432 # PostgreSQL port, default = 5432
Step 03 - Start the APP in
Docker
$ docker-compose up --build
Step 04 - Access the App
Visit http://localhost:5085
in your browser. The app should be up and running
Download the code
$ # Get the code
$ git clone https://github.com/yuragoit/webMLAssistantTeam2.git
$ cd webMLAssistantTeam2
Install modules via venv
$ virtualenv env
$ source env/bin/activate
$ pip3 install -r requirements.txt
Set Up Database
$ python manage.py makemigrations
$ python manage.py migrate
Start the T4 App
$ python manage.py runserver
At this point, the app runs at http://127.0.0.1:8000/
Install modules via venv (Windows)
$ virtualenv env
$ .\env\Scripts\activate
$ pip3 install -r requirements.txt
Set Up Database
$ python manage.py makemigrations
$ python manage.py migrate
Start the T4 App
$ python manage.py runserver
At this point, the app runs at http://127.0.0.1:8000/
By default, the T4 App redirects guest users to authenticate. In order to access the private pages, follow this set up:
- Start the T4 App (see above)
- Access the
registration
pagehttp://127.0.0.1:8000/register/
and create a new User - Access the
sign in
pagehttp://127.0.0.1:8000/login/
and authenticate
The project is coded using a simple and intuitive structure presented below:
< PROJECT ROOT >
|
|-- core/ # Implements app configuration
| |-- settings.py # Defines Global Settings
| |-- wsgi.py # Start the app in production
| |-- urls.py # Define URLs served by all apps/nodes
|
|-- apps/
| |
| |-- home/ # App that serve HTML files
| | |-- views.py # Serve HTML pages for authenticated users
| | |-- urls.py # Define some routes
| | |-- *.py # All other py-files
| |
| |-- authentication/ # Handles auth routes (login and register)
| | |-- urls.py # Define authentication routes
| | |-- views.py # Handles login and registration
| | |-- forms.py # Define auth forms (login and register)
| |
| |-- **************/ # Other target modules (contacts, noteapp, news, storage)
| |
| |-- static/
| | |-- <css, JS, images> # CSS-files, JS-files
| |
| |-- templates/ # Templates used to render target pages
| |-- includes/ # HTML chunks and components
| | |-- navigation.html # Top menu component
| | |-- sidebar.html # Sidebar component
| | |-- footer.html # App Footer
| | |-- scripts.html # Scripts common to all pages
| |
| |-- layouts/ # Master pages
| | |-- base-fullscreen.html # Used by Authentication pages
| | |-- base.html # Used by common pages
| |
| |-- accounts/ # Authentication pages
| | |-- login.html # Login page
| | |-- register.html # Register page
| |
| |-- home/ # UI Pages
| |-- index.html # Index page
| |-- 403-page.html # 403 page
| |-- 404-page.html # 404 page
| |-- *.html # All other pages
|
|-- requirements.txt # Development modules
|
|-- .env # Inject Configuration via Environment
|-- manage.py # Start the T4 app - Django default start script
|
|-- ************************************************************************
This project is used by the following companies:
- LLC GoIT School