Giter Club home page Giter Club logo

souravs17031999 / object-detection-mobilenet-cv Goto Github PK

View Code? Open in Web Editor NEW
7.0 2.0 2.0 42.56 MB

Real time Object detection giving all object detected : labels along with all bounding box predictions + Flask live hosted server

Home Page: https://souravsdlboy.pythonanywhere.com/object

Python 44.88% HTML 55.12%
flask-restful opencv-python deep-neural-networks object-detection caffemodel classification pytorch pointwise-convolution detection-mobilenet-cv detection

object-detection-mobilenet-cv's Introduction

Object-Detection-MobileNet-cv

Project Objective:

Using a machine learning toolkit of your choice, create a tool which identifies objects in the image, then returns positions in pixels corresponding to bounding boxes of a user-selected class of object in the image.
So, we are going to draw the bounding boxes of the defined labels with detected objects and also return their coordinates.
This type of system can be very useful in such possible scenarios and can be integrated into the current tech stack :

  • Intrusion detection / Anti-theft surveillance systems
  • Maintaining safe distance between people during the pandemic times (COVID-19)
  • Detecting face masks on people
  • Assiting traffic management tasks etc..
  • Very effective for enforcing Social Distancing rules during this pandemic around the world especially in crowded areas.

For ex. One such usecase :

The solution is highly effective in ecommerce warehouses where social distancing during this COVID-19 pandemic is very necessary to ensure no one in the warehouse is sick as warehouse is the backbone of the industry and there is also a need of trust between customers who buy from these ecommerce websites, and if done properly it can build confidence among the consumers and company can get competitive advantage over others if system is implemented properly.

warehouseaproach

Approach :

  • Pre-trained MobileNet + SSD run from command line (terminal).
  • Pre-trained MobileNet + SSD with Flask server.

Brief introduction
conv1

  • MobileNet uses Depthwise Separable Convolution which consists of two steps - Depthwise convolution and then Pointwise convolution.
  • Depthwise convolution channel wise spatial convolution.
  • Pointwise convolution uses Network-In-Network architechture (NiN) which is bsically doing 1 x 1 convolutions along with other conv layers. This helps in reducing parameters to a large extent.

Final architechture final1
final2
MobileNet
mobilenet

  • Object detection in the browser using tensorflow.js/ml5.js [TODO - Currently in progress]

Real time Flask server hosted :

  • Log on to following URL hosted on pythonanywhere.com using flask server :

Getting started :

FLASK solution :

  • Run the cmd (terminal).
  • Download the project files using following command in the directory from where you need to run the script :
git clone https://github.com/souravs17031999/Object-Detection-MobileNet-cv    
  • Move to the project main directory where the project is downloaded.
  • Move to directory object_detect_flask.
  • Now run following :
    (for windows)

set FLASK_APP=object.py
set FLASK_ENV=development (useful for debugging while developement)
python -m flask run

(for other termials)

$ export FLASK_APP=object.py
$ FLASK_ENV=development (useful for debugging while developement)
$ flask run

Other troubleshooting issues related to flask server

  • Now the local server should start, log on to : [local url port] shown on terminal.
    (Most probably it will be http://127.0.0.1:5000/ , or maybe any other default port)

USING AMAZON WEB SERVICES S3 :

  • This solution is for scenario if you are considering to Scale the Webapp in terms of storage capacity as PythonAnywhere.com doesn't have scalability anywhere near as we have on AWS S3 but there is a workaround which can be helpful (similar to script automation trying to remove the files on the disk and saving space on a daily basis, weekly basis based on the traffic on your website).

  • Now, If you want to configure AWS S3 for your Use , check this repo by me which gives detailed explanation for the same.

  • After getting credentials, put your credentials in the script named flask_app.py in the dir named object_detect_s3.

  • The only change is to be made on the two lines 18 and 19:

client = boto3.client('s3', aws_access_key_id='############', aws_secret_access_key='############')
bucket_name = '###########'

  • Let's now run the project locally on your system :
  • Run the cmd (terminal).
  • Download the project files using following command in the directory from where you need to run the script :
git clone https://github.com/souravs17031999/Object-Detection-MobileNet-cv    
  • Move to the project main directory where the project is downloaded.
  • Move to directory object_detect_s3.
  • Now run following :
    (for windows)

set FLASK_APP=flask_app.py
set FLASK_ENV=development (useful for debugging while developement)
python -m flask run

(for other termials)

$ export FLASK_APP=object.py
$ FLASK_ENV=development (useful for debugging while developement)
$ flask run

Other troubleshooting issues related to flask server

  • Now the local server should start, log on to : [local url port] shown on terminal.
    (Most probably it will be http://127.0.0.1:5000/ , or maybe any other default port)

CMD (terminal) solution :

  • We need to install latest version of Opencv.
    Download here

  • Run the cmd (terminal).

  • Download the project files using following command in the directory from where you need to run the script :

git clone https://github.com/souravs17031999/Object-Detection-MobileNet-cv
  • Change directory to object_detect_cmd.
  • Run the command using the following parameters as shown :
python object_detection.py <image> <prototxt> <model> <confidence> <query>

positional arguments:

arguments details
image Image path
prototxt info file path about model
model model file of caffemodel type path
confidence threshold confidence % (0.2, 0.3, ...)
query Query string to search for

optional arguments:
-v : debug output to print all items detected

Sample runs with outputs

flask1
flask3
output1
output2
output3
output4

Note : All images and videos are from Google images and Youtube and copyrights are reserved with their respective owners.

Future Scope :

  • Add a URL input box : Currently, we only have choose photo option which pops up dialog box and then you can select photo from your local device but is it really necessary ? No why you should download the photo if you just share the public URL , then we can do it for you.
  • As of now, i have only described and made use of AWS S3 for storage but i will be deploying complete WebAPP on AWS using Elastic Beanstalk using EC2 instances.
    Maybe you can help me out !

⭐️ this Project if you liked it !

object-detection-mobilenet-cv's People

Contributors

souravs17031999 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

object-detection-mobilenet-cv's Issues

flask demo is not working

Hi @souravs17031999 ,

Hope you are all well !

I tried to run the flask demo but it is not working.

Is it possible to fix it ?

Thanks in advance for your insights and inputs on that issue.

Cheers,
X

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.