Skip to content

This project is part of our trial and error Pilot to detect Fraudulent Activity which we were working for one of our clients,here model will get input will give states of objects

License

Notifications You must be signed in to change notification settings

saurabh241930/Custom-Mask_RCNN-for-detecting-states-of-object

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pipeline

Seting up enviroment

pip install numpy \
pip installscipy  \
pip install Pillow \
pip install cython \
pip install matplotlib \
pip install scikit-image \
pip install tensorflow>=1.3.0 \
pip install keras>=2.0.8 \
pip install opencv-python \
pip install h5py \
pip install imgaug \
pip install IPython[all] 

To make predicions on pre-trained weights

Clone this repository

  • To run predictions on pre-trained weights ,download weights here click to download weights

  • place mask_rcnn_objects_0030-gen2(old2).h5 inside Mask_RCNN/logs/objects_old/ (make it if does not exist)

  • run inspect_objects_model.ipnyb cell by cell and in the last you can append

import PIL
import numpy as np
import skimage 




for x in range(1,"total images to predict"):
    print("image{x}".format(x=x))
    testImage = np.asarray(PIL.Image.open('/path/to/image{x}.jpg'.format(x=x)))
    predict = model.detect([testImage], verbose=1)
    ax = get_ax(1)
    prediction = predict[0]
    visualize.display_instances(testImage, prediction['rois'], prediction['masks'], prediction['class_ids'], 
                            dataset.class_names, prediction['scores'], ax=ax,
                            title="Predictions-image{x}".format(x=x))

Test results

Predictions Input Images

To train on your own classes

  • divide amount images into 90 : 10 > train : val
  • annoate image based on their classes ,you can use this tool tool link
  • make sure you returned each jsons will look like this

"imagename.jpg35881": {
        "filename": "imagename.jpg",
        "size": 35881,
        "regions": [
            {
                "shape_attributes": {
                    "name": "polygon",
                    "all_points_x": [
                        232,
                        319,
                        330,
                        345,
               
                    ],
                    "all_points_y": [
                        344,
                        345,
                        349,
                        341,
    
                    ]
                },
                "region_attributes": {
                    "name": "That object classsname"
                }
            }
        ],
        "file_attributes": {}
    },

Edit the following lines in objects.py:

68 > IMAGES_PER_GPU = 2    # if you have less than 11gb graphic card other wise set it to 1
71 > NUM_CLASSES = 1 + n  # where n is no of your classes 
77 > DETECTION_MIN_CONFIDENCE = 0.9 # adjust confidence in your training 0.9 => 90% 
90 > self.add_class("balloon", 1, "object0")    > :
>    self.add_class("objects", 2, "object1")
.    self.add_class("objects", 3, "object2")
.     
.    self.add_class("objects", n, "object nth")

202 > for i, p in enumerate(class_names):
            # Get indexes of pixels inside the polygon and set them to 1
            if p['name'] == 'object0':
                class_ids[i] = 1
            elif p['name'] == 'object1':
                class_ids[i] = 2
            elif p['name'] == 'object2':
                class_ids[i] = 3
            elif p['name'] == 'object3':
                class_ids[i] = 4
                .
                .
            elif p['name'] == 'object n':
                class_ids[i] = n
                
318 >  class_names = ['BG', 'object0', 'object1', ' object2', 'object3',, , ,'object n']

Start training

change path to cd Mask_RCNN/samples/objects and run

python3 objects.py train --dataset=/path/to/openbook/dataset --weights=coco

after training your latest weights should be saved in logs/objects(hash no) to run prediction using follow the prediction process give above just change the weight directory

About

This project is part of our trial and error Pilot to detect Fraudulent Activity which we were working for one of our clients,here model will get input will give states of objects

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages