Priyanka-Kumavat-At-TE commited on
Commit
4a75cb7
1 Parent(s): be09297

Upload 19 files

Browse files
Files changed (19) hide show
  1. FRCNN_MODEL_3Classes_100Epochs.pth +3 -0
  2. Training_jupyterFile.ipynb +0 -0
  3. app.py +133 -0
  4. img1.jpg +0 -0
  5. img10.jpg +0 -0
  6. img11.jpg +0 -0
  7. img12.jpg +0 -0
  8. img13.jpg +0 -0
  9. img14.jpg +0 -0
  10. img15.jpg +0 -0
  11. img16.jpg +0 -0
  12. img2.jpg +0 -0
  13. img3.jpg +0 -0
  14. img4.jpg +0 -0
  15. img5.jpg +0 -0
  16. img6.jpg +0 -0
  17. img8.jpg +0 -0
  18. img9.jpg +0 -0
  19. requirements.txt +11 -0
FRCNN_MODEL_3Classes_100Epochs.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ea6c7bed92de7ef93e4c81ce566b87d246172fb3a643154580899b5031944e06
3
+ size 76062139
Training_jupyterFile.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
app.py ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import torch
3
+ import torchvision
4
+ import torchvision.transforms as transforms
5
+ from torchvision import datasets, models
6
+ from torchvision.transforms import functional as FT
7
+ from torchvision import transforms as T
8
+ from torch import nn, optim
9
+ from torch.nn import functional as F
10
+ from torch.utils.data import DataLoader, sampler, random_split, Dataset
11
+ from torchvision.models.detection.faster_rcnn import FastRCNNPredictor
12
+ from torchvision.transforms import ToTensor
13
+ from PIL import Image, ImageDraw
14
+ from pycocotools.coco import COCO
15
+ import cv2
16
+ import numpy as np
17
+ import pandas as pd
18
+ import os
19
+
20
+
21
+ import tempfile
22
+ from tempfile import NamedTemporaryFile
23
+
24
+ dataset_path = "Dataset"
25
+
26
+ #load classes
27
+ coco = COCO(os.path.join(dataset_path, "train", "_annotations.coco.json"))
28
+ categories = coco.cats
29
+ n_classes = len(categories.keys())
30
+
31
+ # load the faster rcnn model
32
+ modeltest = models.detection.fasterrcnn_mobilenet_v3_large_fpn(num_classes=4)
33
+ in_features = modeltest.roi_heads.box_predictor.cls_score.in_features # we need to change the head
34
+ modeltest.roi_heads.box_predictor = models.detection.faster_rcnn.FastRCNNPredictor(in_features, n_classes)
35
+
36
+ # Load the saved parameters into the model
37
+ modeltest.load_state_dict(torch.load("FRCNN_MODEL_3Classes_100Epochs.pth"))
38
+
39
+ device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
40
+ modeltest.to(device)
41
+
42
+ # Number of classes
43
+ classes = ['pole', 'cross_arm', 'pole', 'tag']
44
+
45
+ st.title(""" Object Detection Using Faster-RCNN For Electrical Domain """)
46
+
47
+ # st.subheader("Prediction of Object Detection")
48
+
49
+ images = ["img16.jpg","img1.jpg","img2.jpg","img3.jpg","img4.jpg","img5.jpg","img6.jpg","img8.jpg",
50
+ "img10.jpg","img11.jpg","img12.jpg","img13.jpg","img14.jpg","img15.jpg","img9.jpg"]
51
+
52
+ with st.sidebar:
53
+ st.write("Choose an Image from Sample Images ")
54
+ st.image(images)
55
+
56
+ # with st.sidebar:
57
+ # st.write("Choose an Image From The DropDown")
58
+ # selected_image = st.selectbox("Select an image", images)
59
+
60
+
61
+ # with st.sidebar:
62
+ # st.write("Choose an Image")
63
+ # for image in images:
64
+ # with Image.open(image) as img:
65
+ # st.image(img, width=100, quality=90) # quality parameter is not there in image, it will give error
66
+
67
+ # with st.sidebar:
68
+ # st.write("Choose an Image")
69
+ # st.image(images,width=100)
70
+
71
+
72
+ # define the function to perform object detection on an image
73
+ def detect_objects(image_path):
74
+ # load the image
75
+ image = Image.open(image_path).convert('RGB')
76
+
77
+ # convert the image to a tensor
78
+ image_tensor = ToTensor()(image).to(device)
79
+
80
+ # run the image through the model to get the predictions
81
+ modeltest.eval()
82
+ with torch.no_grad():
83
+ predictions = modeltest([image_tensor])
84
+
85
+ # filter out the predictions below the threshold
86
+ threshold = 0.5
87
+ scores = predictions[0]['scores'].cpu().numpy()
88
+ boxes = predictions[0]['boxes'].cpu().numpy()
89
+ labels = predictions[0]['labels'].cpu().numpy()
90
+ mask = scores > threshold
91
+ scores = scores[mask]
92
+ boxes = boxes[mask]
93
+ labels = labels[mask]
94
+
95
+ # create a new image with the predicted objects outlined in rectangles
96
+ draw = ImageDraw.Draw(image)
97
+ for box, label in zip(boxes, labels):
98
+
99
+ # draw the rectangle around the object
100
+ draw.rectangle([(box[0], box[1]), (box[2], box[3])], outline='red')
101
+
102
+ # write the object class above the rectangle
103
+ class_name = classes[label]
104
+ draw.text((box[0], box[1]), class_name, fill='yellow')
105
+
106
+ # show the image
107
+ st.write("Obects detected in the image are: ")
108
+ st.image(image, use_column_width=True)
109
+ # st.image.show()
110
+
111
+ file = st.file_uploader('Upload an Image', type=(["jpeg", "jpg", "png"]))
112
+
113
+
114
+ if file is None:
115
+ st.write("Please upload an image file")
116
+ else:
117
+ image = Image.open(file)
118
+ st.write("Input Image")
119
+ st.image(image, use_column_width=True)
120
+ with NamedTemporaryFile(dir='.', suffix='.') as f:
121
+ f.write(file.getbuffer())
122
+ # your_function_which_takes_a_path(f.name)
123
+ detect_objects(f.name)
124
+
125
+ st.subheader("Model Description : ")
126
+ st.write(""" The Faster R-CNN model with MobileNet V3 Large as the backbone and Feature Pyramid Network (FPN) architecture is a popular
127
+ object detection model that combines high detection accuracy with efficient computation. The MobileNet V3 Large backbone
128
+ is a lightweight neural network architecture that reduces the number of parameters while maintaining high accuracy,
129
+ making it suitable for mobile and embedded devices. The FPN architecture enhances the feature representation of the model
130
+ by aggregating features from multiple scales and improving spatial resolution. This combination of a lightweight backbone
131
+ with an efficient feature extraction architecture makes Faster R-CNN with MobileNet V3 Large FPN a popular choice for
132
+ object detection in real-time applications and on devices with limited computational resources.
133
+ """)
img1.jpg ADDED
img10.jpg ADDED
img11.jpg ADDED
img12.jpg ADDED
img13.jpg ADDED
img14.jpg ADDED
img15.jpg ADDED
img16.jpg ADDED
img2.jpg ADDED
img3.jpg ADDED
img4.jpg ADDED
img5.jpg ADDED
img6.jpg ADDED
img8.jpg ADDED
img9.jpg ADDED
requirements.txt ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ streamlit
2
+ torch
3
+ torchvision
4
+ matplotlib
5
+ transformers
6
+ pandas
7
+ numpy
8
+ seaborn
9
+ scikit-learn
10
+ opencv-python
11
+ pycocotools