Upload folder using huggingface_hub
Browse files- README.md +21 -0
- config.json +175 -0
- inference.py +31 -0
- model.onnx +3 -0
- model.safetensors +3 -0
- processor.bin +3 -0
README.md
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
tags:
|
3 |
+
- object-detection
|
4 |
+
- vision
|
5 |
+
- fasterrcnn
|
6 |
+
- onnx
|
7 |
+
license: apache-2.0
|
8 |
+
---
|
9 |
+
|
10 |
+
# Custom Faster R-CNN Model
|
11 |
+
|
12 |
+
## Usage
|
13 |
+
|
14 |
+
### PyTorch
|
15 |
+
```python
|
16 |
+
from inference import FasterRCNNInference
|
17 |
+
from PIL import Image
|
18 |
+
|
19 |
+
model = FasterRCNNInference(".")
|
20 |
+
image = Image.open("your_image.jpg")
|
21 |
+
results = model.predict([image])
|
config.json
ADDED
@@ -0,0 +1,175 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"architectures": [
|
3 |
+
"FasterRCNNModel"
|
4 |
+
],
|
5 |
+
"id2label": {
|
6 |
+
"0": "class_0",
|
7 |
+
"1": "class_1",
|
8 |
+
"2": "class_2",
|
9 |
+
"3": "class_3",
|
10 |
+
"4": "class_4",
|
11 |
+
"5": "class_5",
|
12 |
+
"6": "class_6",
|
13 |
+
"7": "class_7",
|
14 |
+
"8": "class_8",
|
15 |
+
"9": "class_9",
|
16 |
+
"10": "class_10",
|
17 |
+
"11": "class_11",
|
18 |
+
"12": "class_12",
|
19 |
+
"13": "class_13",
|
20 |
+
"14": "class_14",
|
21 |
+
"15": "class_15",
|
22 |
+
"16": "class_16",
|
23 |
+
"17": "class_17",
|
24 |
+
"18": "class_18",
|
25 |
+
"19": "class_19",
|
26 |
+
"20": "class_20",
|
27 |
+
"21": "class_21",
|
28 |
+
"22": "class_22",
|
29 |
+
"23": "class_23",
|
30 |
+
"24": "class_24",
|
31 |
+
"25": "class_25",
|
32 |
+
"26": "class_26",
|
33 |
+
"27": "class_27",
|
34 |
+
"28": "class_28",
|
35 |
+
"29": "class_29",
|
36 |
+
"30": "class_30",
|
37 |
+
"31": "class_31",
|
38 |
+
"32": "class_32",
|
39 |
+
"33": "class_33",
|
40 |
+
"34": "class_34",
|
41 |
+
"35": "class_35",
|
42 |
+
"36": "class_36",
|
43 |
+
"37": "class_37",
|
44 |
+
"38": "class_38",
|
45 |
+
"39": "class_39",
|
46 |
+
"40": "class_40",
|
47 |
+
"41": "class_41",
|
48 |
+
"42": "class_42",
|
49 |
+
"43": "class_43",
|
50 |
+
"44": "class_44",
|
51 |
+
"45": "class_45",
|
52 |
+
"46": "class_46",
|
53 |
+
"47": "class_47",
|
54 |
+
"48": "class_48",
|
55 |
+
"49": "class_49",
|
56 |
+
"50": "class_50",
|
57 |
+
"51": "class_51",
|
58 |
+
"52": "class_52",
|
59 |
+
"53": "class_53",
|
60 |
+
"54": "class_54",
|
61 |
+
"55": "class_55",
|
62 |
+
"56": "class_56",
|
63 |
+
"57": "class_57",
|
64 |
+
"58": "class_58",
|
65 |
+
"59": "class_59",
|
66 |
+
"60": "class_60",
|
67 |
+
"61": "class_61",
|
68 |
+
"62": "class_62",
|
69 |
+
"63": "class_63",
|
70 |
+
"64": "class_64",
|
71 |
+
"65": "class_65",
|
72 |
+
"66": "class_66",
|
73 |
+
"67": "class_67",
|
74 |
+
"68": "class_68",
|
75 |
+
"69": "class_69",
|
76 |
+
"70": "class_70",
|
77 |
+
"71": "class_71",
|
78 |
+
"72": "class_72",
|
79 |
+
"73": "class_73",
|
80 |
+
"74": "class_74",
|
81 |
+
"75": "class_75",
|
82 |
+
"76": "class_76",
|
83 |
+
"77": "class_77",
|
84 |
+
"78": "class_78",
|
85 |
+
"79": "class_79"
|
86 |
+
},
|
87 |
+
"label2id": {
|
88 |
+
"class_0": 0,
|
89 |
+
"class_1": 1,
|
90 |
+
"class_10": 10,
|
91 |
+
"class_11": 11,
|
92 |
+
"class_12": 12,
|
93 |
+
"class_13": 13,
|
94 |
+
"class_14": 14,
|
95 |
+
"class_15": 15,
|
96 |
+
"class_16": 16,
|
97 |
+
"class_17": 17,
|
98 |
+
"class_18": 18,
|
99 |
+
"class_19": 19,
|
100 |
+
"class_2": 2,
|
101 |
+
"class_20": 20,
|
102 |
+
"class_21": 21,
|
103 |
+
"class_22": 22,
|
104 |
+
"class_23": 23,
|
105 |
+
"class_24": 24,
|
106 |
+
"class_25": 25,
|
107 |
+
"class_26": 26,
|
108 |
+
"class_27": 27,
|
109 |
+
"class_28": 28,
|
110 |
+
"class_29": 29,
|
111 |
+
"class_3": 3,
|
112 |
+
"class_30": 30,
|
113 |
+
"class_31": 31,
|
114 |
+
"class_32": 32,
|
115 |
+
"class_33": 33,
|
116 |
+
"class_34": 34,
|
117 |
+
"class_35": 35,
|
118 |
+
"class_36": 36,
|
119 |
+
"class_37": 37,
|
120 |
+
"class_38": 38,
|
121 |
+
"class_39": 39,
|
122 |
+
"class_4": 4,
|
123 |
+
"class_40": 40,
|
124 |
+
"class_41": 41,
|
125 |
+
"class_42": 42,
|
126 |
+
"class_43": 43,
|
127 |
+
"class_44": 44,
|
128 |
+
"class_45": 45,
|
129 |
+
"class_46": 46,
|
130 |
+
"class_47": 47,
|
131 |
+
"class_48": 48,
|
132 |
+
"class_49": 49,
|
133 |
+
"class_5": 5,
|
134 |
+
"class_50": 50,
|
135 |
+
"class_51": 51,
|
136 |
+
"class_52": 52,
|
137 |
+
"class_53": 53,
|
138 |
+
"class_54": 54,
|
139 |
+
"class_55": 55,
|
140 |
+
"class_56": 56,
|
141 |
+
"class_57": 57,
|
142 |
+
"class_58": 58,
|
143 |
+
"class_59": 59,
|
144 |
+
"class_6": 6,
|
145 |
+
"class_60": 60,
|
146 |
+
"class_61": 61,
|
147 |
+
"class_62": 62,
|
148 |
+
"class_63": 63,
|
149 |
+
"class_64": 64,
|
150 |
+
"class_65": 65,
|
151 |
+
"class_66": 66,
|
152 |
+
"class_67": 67,
|
153 |
+
"class_68": 68,
|
154 |
+
"class_69": 69,
|
155 |
+
"class_7": 7,
|
156 |
+
"class_70": 70,
|
157 |
+
"class_71": 71,
|
158 |
+
"class_72": 72,
|
159 |
+
"class_73": 73,
|
160 |
+
"class_74": 74,
|
161 |
+
"class_75": 75,
|
162 |
+
"class_76": 76,
|
163 |
+
"class_77": 77,
|
164 |
+
"class_78": 78,
|
165 |
+
"class_79": 79,
|
166 |
+
"class_8": 8,
|
167 |
+
"class_9": 9
|
168 |
+
},
|
169 |
+
"max_size": 1333,
|
170 |
+
"min_size": 800,
|
171 |
+
"model_type": "fasterrcnn",
|
172 |
+
"num_classes": 80,
|
173 |
+
"torch_dtype": "float32",
|
174 |
+
"transformers_version": "4.50.3"
|
175 |
+
}
|
inference.py
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from PIL import Image
|
2 |
+
import torch
|
3 |
+
import numpy as np
|
4 |
+
from transformers import PreTrainedModel
|
5 |
+
import onnxruntime
|
6 |
+
|
7 |
+
class FasterRCNNInference:
|
8 |
+
def __init__(self, model_path):
|
9 |
+
# Load ONNX model
|
10 |
+
self.ort_session = onnxruntime.InferenceSession(f"{model_path}/model.onnx")
|
11 |
+
self.processor = torch.load(f"{model_path}/processor.bin")
|
12 |
+
|
13 |
+
def predict(self, images, threshold=0.5):
|
14 |
+
# Preprocess
|
15 |
+
inputs = self.processor(images)
|
16 |
+
pixel_values = inputs["pixel_values"].numpy()
|
17 |
+
|
18 |
+
# Run inference
|
19 |
+
outputs = self.ort_session.run(None, {"pixel_values": pixel_values})
|
20 |
+
|
21 |
+
# Post-process
|
22 |
+
results = []
|
23 |
+
for boxes, scores, labels in zip(outputs[0], outputs[1], outputs[2]):
|
24 |
+
keep = scores > threshold
|
25 |
+
results.append({
|
26 |
+
"boxes": boxes[keep],
|
27 |
+
"scores": scores[keep],
|
28 |
+
"labels": labels[keep]
|
29 |
+
})
|
30 |
+
|
31 |
+
return results
|
model.onnx
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:456470547ad0365bb4229e2d1c81ff99015984487753ca26e694f7ba8847e37d
|
3 |
+
size 331069979
|
model.safetensors
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:38a17a2591648db50e1b701341cf3ef261db1cec76e5131975a82f6600769455
|
3 |
+
size 331180436
|
processor.bin
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:12d515f5bb270fcc25e29c7183b234618476e70b6d18f8a460ce6f70817d86f7
|
3 |
+
size 5224
|