├── Aptfile ├── ObjectDetector.py ├── Procfile ├── README.md ├── app.py ├── model ├── frozen_inference_graph.pb └── ssd_mobilenet_v1_coco_2017_11_17.pbtxt ├── requirements.txt └── templates └── index.html /Aptfile: -------------------------------------------------------------------------------- 1 | libsm6 2 | libxrender1 3 | libfontconfig1 4 | libice6 5 | -------------------------------------------------------------------------------- /ObjectDetector.py: -------------------------------------------------------------------------------- 1 | import cv2 as cv 2 | import numpy 3 | 4 | 5 | classNames = {0: 'background', 6 | 1: 'person', 2: 'bicycle', 3: 'car', 4: 'motorcycle', 5: 'airplane', 6: 'bus', 7 | 7: 'train', 8: 'truck', 9: 'boat', 10: 'traffic light', 11: 'fire hydrant', 8 | 13: 'stop sign', 14: 'parking meter', 15: 'bench', 16: 'bird', 17: 'cat', 9 | 18: 'dog', 19: 'horse', 20: 'sheep', 21: 'cow', 22: 'elephant', 23: 'bear', 10 | 24: 'zebra', 25: 'giraffe', 27: 'backpack', 28: 'umbrella', 31: 'handbag', 11 | 32: 'tie', 33: 'suitcase', 34: 'frisbee', 35: 'skis', 36: 'snowboard', 12 | 37: 'sports ball', 38: 'kite', 39: 'baseball bat', 40: 'baseball glove', 13 | 41: 'skateboard', 42: 'surfboard', 43: 'tennis racket', 44: 'bottle', 14 | 46: 'wine glass', 47: 'cup', 48: 'fork', 49: 'knife', 50: 'spoon', 15 | 51: 'bowl', 52: 'banana', 53: 'apple', 54: 'sandwich', 55: 'orange', 16 | 56: 'broccoli', 57: 'carrot', 58: 'hot dog', 59: 'pizza', 60: 'donut', 17 | 61: 'cake', 62: 'chair', 63: 'couch', 64: 'potted plant', 65: 'bed', 18 | 67: 'dining table', 70: 'toilet', 72: 'tv', 73: 'laptop', 74: 'mouse', 19 | 75: 'remote', 76: 'keyboard', 77: 'cell phone', 78: 'microwave', 79: 'oven', 20 | 80: 'toaster', 81: 'sink', 82: 'refrigerator', 84: 'book', 85: 'clock', 21 | 86: 'vase', 87: 'scissors', 88: 'teddy bear', 89: 'hair drier', 90: 'toothbrush'} 22 | 23 | 24 | class Detector: 25 | def __init__(self): 26 | global cvNet 27 | cvNet = cv.dnn.readNetFromTensorflow('model/frozen_inference_graph.pb', 28 | 'model/ssd_mobilenet_v1_coco_2017_11_17.pbtxt') 29 | 30 | def detectObject(self, imName): 31 | img = cv.cvtColor(numpy.array(imName), cv.COLOR_BGR2RGB) 32 | cvNet.setInput(cv.dnn.blobFromImage(img, 0.007843, (300, 300), (127.5, 127.5, 127.5), swapRB=True, crop=False)) 33 | detections = cvNet.forward() 34 | cols = img.shape[1] 35 | rows = img.shape[0] 36 | 37 | for i in range(detections.shape[2]): 38 | confidence = detections[0, 0, i, 2] 39 | if confidence > 0.5: 40 | class_id = int(detections[0, 0, i, 1]) 41 | 42 | xLeftBottom = int(detections[0, 0, i, 3] * cols) 43 | yLeftBottom = int(detections[0, 0, i, 4] * rows) 44 | xRightTop = int(detections[0, 0, i, 5] * cols) 45 | yRightTop = int(detections[0, 0, i, 6] * rows) 46 | 47 | cv.rectangle(img, (xLeftBottom, yLeftBottom), (xRightTop, yRightTop), 48 | (0, 0, 255)) 49 | if class_id in classNames: 50 | label = classNames[class_id] + ": " + str(confidence) 51 | labelSize, baseLine = cv.getTextSize(label, cv.FONT_HERSHEY_SIMPLEX, 0.5, 1) 52 | yLeftBottom = max(yLeftBottom, labelSize[1]) 53 | cv.putText(img, label, (xLeftBottom+5, yLeftBottom), cv.FONT_HERSHEY_SIMPLEX, 0.5, (255,255,255)) 54 | 55 | img = cv.imencode('.jpg', img)[1].tobytes() 56 | return img 57 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: gunicorn app:app -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # herokuobjectdetection 2 | This is the code for Medium tutorial 3 | https://medium.com/@rdeep/without-tensorflow-web-app-with-object-detection-api-in-heroku-and-opencv-aa1e54eceee1 4 | 5 | Live Demo 6 | https://objectdetectiontut.herokuapp.com/ 7 | 8 |  9 | 10 |  11 | -------------------------------------------------------------------------------- /app.py: -------------------------------------------------------------------------------- 1 | from ObjectDetector import Detector 2 | import io 3 | 4 | from flask import Flask, render_template, request 5 | 6 | from PIL import Image 7 | from flask import send_file 8 | 9 | app = Flask(__name__) 10 | 11 | detector = Detector() 12 | 13 | 14 | # detector.detectNumberPlate('twocar.jpg') 15 | 16 | 17 | @app.route("/") 18 | def index(): 19 | return render_template('index.html') 20 | 21 | 22 | @app.route("/", methods=['POST']) 23 | def upload(): 24 | if request.method == 'POST': 25 | file = Image.open(request.files['file'].stream) 26 | img = detector.detectObject(file) 27 | return send_file(io.BytesIO(img),attachment_filename='image.jpg',mimetype='image/jpg') 28 | 29 | 30 | if __name__ == "__main__": 31 | app.run() 32 | -------------------------------------------------------------------------------- /model/frozen_inference_graph.pb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rdeepc/herokuobjectdetection/b62992562a0ea7f85d1354d5b742c0c09dd403bf/model/frozen_inference_graph.pb -------------------------------------------------------------------------------- /model/ssd_mobilenet_v1_coco_2017_11_17.pbtxt: -------------------------------------------------------------------------------- 1 | node { 2 | name: "image_tensor" 3 | op: "Placeholder" 4 | attr { 5 | key: "dtype" 6 | value { 7 | type: DT_UINT8 8 | } 9 | } 10 | attr { 11 | key: "shape" 12 | value { 13 | shape { 14 | dim { 15 | size: -1 16 | } 17 | dim { 18 | size: -1 19 | } 20 | dim { 21 | size: -1 22 | } 23 | dim { 24 | size: 3 25 | } 26 | } 27 | } 28 | } 29 | } 30 | node { 31 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_0/BatchNorm/batchnorm/mul_1" 32 | op: "Conv2D" 33 | input: "image_tensor" 34 | input: "FeatureExtractor/MobilenetV1/Conv2d_0/weights/read/_104__cf__107" 35 | attr { 36 | key: "padding" 37 | value { 38 | s: "SAME" 39 | } 40 | } 41 | attr { 42 | key: "strides" 43 | value { 44 | list { 45 | i: 1 46 | i: 2 47 | i: 2 48 | i: 1 49 | } 50 | } 51 | } 52 | } 53 | node { 54 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_0/BatchNorm/batchnorm/add_1" 55 | op: "Add" 56 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_0/BatchNorm/batchnorm/mul_1" 57 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_0/BatchNorm/batchnorm/sub/_103__cf__106" 58 | } 59 | node { 60 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_0/Relu6" 61 | op: "Relu6" 62 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_0/BatchNorm/batchnorm/add_1" 63 | } 64 | node { 65 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_1_depthwise/depthwise" 66 | op: "DepthwiseConv2dNative" 67 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_0/Relu6" 68 | input: "FeatureExtractor/MobilenetV1/Conv2d_1_depthwise/depthwise_weights/read/_101__cf__104" 69 | attr { 70 | key: "padding" 71 | value { 72 | s: "SAME" 73 | } 74 | } 75 | attr { 76 | key: "strides" 77 | value { 78 | list { 79 | i: 1 80 | i: 1 81 | i: 1 82 | i: 1 83 | } 84 | } 85 | } 86 | } 87 | node { 88 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_1_depthwise/BatchNorm/batchnorm/mul_1" 89 | op: "Mul" 90 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_1_depthwise/depthwise" 91 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_1_depthwise/BatchNorm/batchnorm/mul/_99__cf__102" 92 | } 93 | node { 94 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_1_depthwise/BatchNorm/batchnorm/add_1" 95 | op: "Add" 96 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_1_depthwise/BatchNorm/batchnorm/mul_1" 97 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_1_depthwise/BatchNorm/batchnorm/sub/_100__cf__103" 98 | } 99 | node { 100 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_1_depthwise/Relu6" 101 | op: "Relu6" 102 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_1_depthwise/BatchNorm/batchnorm/add_1" 103 | } 104 | node { 105 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_1_pointwise/BatchNorm/batchnorm/mul_1" 106 | op: "Conv2D" 107 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_1_depthwise/Relu6" 108 | input: "FeatureExtractor/MobilenetV1/Conv2d_1_pointwise/weights/read/_98__cf__101" 109 | attr { 110 | key: "padding" 111 | value { 112 | s: "SAME" 113 | } 114 | } 115 | attr { 116 | key: "strides" 117 | value { 118 | list { 119 | i: 1 120 | i: 1 121 | i: 1 122 | i: 1 123 | } 124 | } 125 | } 126 | } 127 | node { 128 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_1_pointwise/BatchNorm/batchnorm/add_1" 129 | op: "Add" 130 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_1_pointwise/BatchNorm/batchnorm/mul_1" 131 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_1_pointwise/BatchNorm/batchnorm/sub/_97__cf__100" 132 | } 133 | node { 134 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_1_pointwise/Relu6" 135 | op: "Relu6" 136 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_1_pointwise/BatchNorm/batchnorm/add_1" 137 | } 138 | node { 139 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_2_depthwise/depthwise" 140 | op: "DepthwiseConv2dNative" 141 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_1_pointwise/Relu6" 142 | input: "FeatureExtractor/MobilenetV1/Conv2d_2_depthwise/depthwise_weights/read/_95__cf__98" 143 | attr { 144 | key: "padding" 145 | value { 146 | s: "SAME" 147 | } 148 | } 149 | attr { 150 | key: "strides" 151 | value { 152 | list { 153 | i: 1 154 | i: 2 155 | i: 2 156 | i: 1 157 | } 158 | } 159 | } 160 | } 161 | node { 162 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_2_depthwise/BatchNorm/batchnorm/mul_1" 163 | op: "Mul" 164 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_2_depthwise/depthwise" 165 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_2_depthwise/BatchNorm/batchnorm/mul/_93__cf__96" 166 | } 167 | node { 168 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_2_depthwise/BatchNorm/batchnorm/add_1" 169 | op: "Add" 170 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_2_depthwise/BatchNorm/batchnorm/mul_1" 171 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_2_depthwise/BatchNorm/batchnorm/sub/_94__cf__97" 172 | } 173 | node { 174 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_2_depthwise/Relu6" 175 | op: "Relu6" 176 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_2_depthwise/BatchNorm/batchnorm/add_1" 177 | } 178 | node { 179 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_2_pointwise/BatchNorm/batchnorm/mul_1" 180 | op: "Conv2D" 181 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_2_depthwise/Relu6" 182 | input: "FeatureExtractor/MobilenetV1/Conv2d_2_pointwise/weights/read/_92__cf__95" 183 | attr { 184 | key: "padding" 185 | value { 186 | s: "SAME" 187 | } 188 | } 189 | attr { 190 | key: "strides" 191 | value { 192 | list { 193 | i: 1 194 | i: 1 195 | i: 1 196 | i: 1 197 | } 198 | } 199 | } 200 | } 201 | node { 202 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_2_pointwise/BatchNorm/batchnorm/add_1" 203 | op: "Add" 204 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_2_pointwise/BatchNorm/batchnorm/mul_1" 205 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_2_pointwise/BatchNorm/batchnorm/sub/_91__cf__94" 206 | } 207 | node { 208 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_2_pointwise/Relu6" 209 | op: "Relu6" 210 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_2_pointwise/BatchNorm/batchnorm/add_1" 211 | } 212 | node { 213 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_3_depthwise/depthwise" 214 | op: "DepthwiseConv2dNative" 215 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_2_pointwise/Relu6" 216 | input: "FeatureExtractor/MobilenetV1/Conv2d_3_depthwise/depthwise_weights/read/_89__cf__92" 217 | attr { 218 | key: "padding" 219 | value { 220 | s: "SAME" 221 | } 222 | } 223 | attr { 224 | key: "strides" 225 | value { 226 | list { 227 | i: 1 228 | i: 1 229 | i: 1 230 | i: 1 231 | } 232 | } 233 | } 234 | } 235 | node { 236 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_3_depthwise/BatchNorm/batchnorm/mul_1" 237 | op: "Mul" 238 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_3_depthwise/depthwise" 239 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_3_depthwise/BatchNorm/batchnorm/mul/_87__cf__90" 240 | } 241 | node { 242 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_3_depthwise/BatchNorm/batchnorm/add_1" 243 | op: "Add" 244 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_3_depthwise/BatchNorm/batchnorm/mul_1" 245 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_3_depthwise/BatchNorm/batchnorm/sub/_88__cf__91" 246 | } 247 | node { 248 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_3_depthwise/Relu6" 249 | op: "Relu6" 250 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_3_depthwise/BatchNorm/batchnorm/add_1" 251 | } 252 | node { 253 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_3_pointwise/BatchNorm/batchnorm/mul_1" 254 | op: "Conv2D" 255 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_3_depthwise/Relu6" 256 | input: "FeatureExtractor/MobilenetV1/Conv2d_3_pointwise/weights/read/_86__cf__89" 257 | attr { 258 | key: "padding" 259 | value { 260 | s: "SAME" 261 | } 262 | } 263 | attr { 264 | key: "strides" 265 | value { 266 | list { 267 | i: 1 268 | i: 1 269 | i: 1 270 | i: 1 271 | } 272 | } 273 | } 274 | } 275 | node { 276 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_3_pointwise/BatchNorm/batchnorm/add_1" 277 | op: "Add" 278 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_3_pointwise/BatchNorm/batchnorm/mul_1" 279 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_3_pointwise/BatchNorm/batchnorm/sub/_85__cf__88" 280 | } 281 | node { 282 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_3_pointwise/Relu6" 283 | op: "Relu6" 284 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_3_pointwise/BatchNorm/batchnorm/add_1" 285 | } 286 | node { 287 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_4_depthwise/depthwise" 288 | op: "DepthwiseConv2dNative" 289 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_3_pointwise/Relu6" 290 | input: "FeatureExtractor/MobilenetV1/Conv2d_4_depthwise/depthwise_weights/read/_83__cf__86" 291 | attr { 292 | key: "padding" 293 | value { 294 | s: "SAME" 295 | } 296 | } 297 | attr { 298 | key: "strides" 299 | value { 300 | list { 301 | i: 1 302 | i: 2 303 | i: 2 304 | i: 1 305 | } 306 | } 307 | } 308 | } 309 | node { 310 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_4_depthwise/BatchNorm/batchnorm/mul_1" 311 | op: "Mul" 312 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_4_depthwise/depthwise" 313 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_4_depthwise/BatchNorm/batchnorm/mul/_81__cf__84" 314 | } 315 | node { 316 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_4_depthwise/BatchNorm/batchnorm/add_1" 317 | op: "Add" 318 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_4_depthwise/BatchNorm/batchnorm/mul_1" 319 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_4_depthwise/BatchNorm/batchnorm/sub/_82__cf__85" 320 | } 321 | node { 322 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_4_depthwise/Relu6" 323 | op: "Relu6" 324 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_4_depthwise/BatchNorm/batchnorm/add_1" 325 | } 326 | node { 327 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_4_pointwise/BatchNorm/batchnorm/mul_1" 328 | op: "Conv2D" 329 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_4_depthwise/Relu6" 330 | input: "FeatureExtractor/MobilenetV1/Conv2d_4_pointwise/weights/read/_80__cf__83" 331 | attr { 332 | key: "padding" 333 | value { 334 | s: "SAME" 335 | } 336 | } 337 | attr { 338 | key: "strides" 339 | value { 340 | list { 341 | i: 1 342 | i: 1 343 | i: 1 344 | i: 1 345 | } 346 | } 347 | } 348 | } 349 | node { 350 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_4_pointwise/BatchNorm/batchnorm/add_1" 351 | op: "Add" 352 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_4_pointwise/BatchNorm/batchnorm/mul_1" 353 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_4_pointwise/BatchNorm/batchnorm/sub/_79__cf__82" 354 | } 355 | node { 356 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_4_pointwise/Relu6" 357 | op: "Relu6" 358 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_4_pointwise/BatchNorm/batchnorm/add_1" 359 | } 360 | node { 361 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_5_depthwise/depthwise" 362 | op: "DepthwiseConv2dNative" 363 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_4_pointwise/Relu6" 364 | input: "FeatureExtractor/MobilenetV1/Conv2d_5_depthwise/depthwise_weights/read/_77__cf__80" 365 | attr { 366 | key: "padding" 367 | value { 368 | s: "SAME" 369 | } 370 | } 371 | attr { 372 | key: "strides" 373 | value { 374 | list { 375 | i: 1 376 | i: 1 377 | i: 1 378 | i: 1 379 | } 380 | } 381 | } 382 | } 383 | node { 384 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_5_depthwise/BatchNorm/batchnorm/mul_1" 385 | op: "Mul" 386 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_5_depthwise/depthwise" 387 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_5_depthwise/BatchNorm/batchnorm/mul/_75__cf__78" 388 | } 389 | node { 390 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_5_depthwise/BatchNorm/batchnorm/add_1" 391 | op: "Add" 392 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_5_depthwise/BatchNorm/batchnorm/mul_1" 393 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_5_depthwise/BatchNorm/batchnorm/sub/_76__cf__79" 394 | } 395 | node { 396 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_5_depthwise/Relu6" 397 | op: "Relu6" 398 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_5_depthwise/BatchNorm/batchnorm/add_1" 399 | } 400 | node { 401 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_5_pointwise/BatchNorm/batchnorm/mul_1" 402 | op: "Conv2D" 403 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_5_depthwise/Relu6" 404 | input: "FeatureExtractor/MobilenetV1/Conv2d_5_pointwise/weights/read/_74__cf__77" 405 | attr { 406 | key: "padding" 407 | value { 408 | s: "SAME" 409 | } 410 | } 411 | attr { 412 | key: "strides" 413 | value { 414 | list { 415 | i: 1 416 | i: 1 417 | i: 1 418 | i: 1 419 | } 420 | } 421 | } 422 | } 423 | node { 424 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_5_pointwise/BatchNorm/batchnorm/add_1" 425 | op: "Add" 426 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_5_pointwise/BatchNorm/batchnorm/mul_1" 427 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_5_pointwise/BatchNorm/batchnorm/sub/_73__cf__76" 428 | } 429 | node { 430 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_5_pointwise/Relu6" 431 | op: "Relu6" 432 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_5_pointwise/BatchNorm/batchnorm/add_1" 433 | } 434 | node { 435 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_6_depthwise/depthwise" 436 | op: "DepthwiseConv2dNative" 437 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_5_pointwise/Relu6" 438 | input: "FeatureExtractor/MobilenetV1/Conv2d_6_depthwise/depthwise_weights/read/_71__cf__74" 439 | attr { 440 | key: "padding" 441 | value { 442 | s: "SAME" 443 | } 444 | } 445 | attr { 446 | key: "strides" 447 | value { 448 | list { 449 | i: 1 450 | i: 2 451 | i: 2 452 | i: 1 453 | } 454 | } 455 | } 456 | } 457 | node { 458 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_6_depthwise/BatchNorm/batchnorm/mul_1" 459 | op: "Mul" 460 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_6_depthwise/depthwise" 461 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_6_depthwise/BatchNorm/batchnorm/mul/_69__cf__72" 462 | } 463 | node { 464 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_6_depthwise/BatchNorm/batchnorm/add_1" 465 | op: "Add" 466 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_6_depthwise/BatchNorm/batchnorm/mul_1" 467 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_6_depthwise/BatchNorm/batchnorm/sub/_70__cf__73" 468 | } 469 | node { 470 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_6_depthwise/Relu6" 471 | op: "Relu6" 472 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_6_depthwise/BatchNorm/batchnorm/add_1" 473 | } 474 | node { 475 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_6_pointwise/BatchNorm/batchnorm/mul_1" 476 | op: "Conv2D" 477 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_6_depthwise/Relu6" 478 | input: "FeatureExtractor/MobilenetV1/Conv2d_6_pointwise/weights/read/_68__cf__71" 479 | attr { 480 | key: "padding" 481 | value { 482 | s: "SAME" 483 | } 484 | } 485 | attr { 486 | key: "strides" 487 | value { 488 | list { 489 | i: 1 490 | i: 1 491 | i: 1 492 | i: 1 493 | } 494 | } 495 | } 496 | } 497 | node { 498 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_6_pointwise/BatchNorm/batchnorm/add_1" 499 | op: "Add" 500 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_6_pointwise/BatchNorm/batchnorm/mul_1" 501 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_6_pointwise/BatchNorm/batchnorm/sub/_67__cf__70" 502 | } 503 | node { 504 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_6_pointwise/Relu6" 505 | op: "Relu6" 506 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_6_pointwise/BatchNorm/batchnorm/add_1" 507 | } 508 | node { 509 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_7_depthwise/depthwise" 510 | op: "DepthwiseConv2dNative" 511 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_6_pointwise/Relu6" 512 | input: "FeatureExtractor/MobilenetV1/Conv2d_7_depthwise/depthwise_weights/read/_65__cf__68" 513 | attr { 514 | key: "padding" 515 | value { 516 | s: "SAME" 517 | } 518 | } 519 | attr { 520 | key: "strides" 521 | value { 522 | list { 523 | i: 1 524 | i: 1 525 | i: 1 526 | i: 1 527 | } 528 | } 529 | } 530 | } 531 | node { 532 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_7_depthwise/BatchNorm/batchnorm/mul_1" 533 | op: "Mul" 534 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_7_depthwise/depthwise" 535 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_7_depthwise/BatchNorm/batchnorm/mul/_63__cf__66" 536 | } 537 | node { 538 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_7_depthwise/BatchNorm/batchnorm/add_1" 539 | op: "Add" 540 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_7_depthwise/BatchNorm/batchnorm/mul_1" 541 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_7_depthwise/BatchNorm/batchnorm/sub/_64__cf__67" 542 | } 543 | node { 544 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_7_depthwise/Relu6" 545 | op: "Relu6" 546 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_7_depthwise/BatchNorm/batchnorm/add_1" 547 | } 548 | node { 549 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_7_pointwise/BatchNorm/batchnorm/mul_1" 550 | op: "Conv2D" 551 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_7_depthwise/Relu6" 552 | input: "FeatureExtractor/MobilenetV1/Conv2d_7_pointwise/weights/read/_62__cf__65" 553 | attr { 554 | key: "padding" 555 | value { 556 | s: "SAME" 557 | } 558 | } 559 | attr { 560 | key: "strides" 561 | value { 562 | list { 563 | i: 1 564 | i: 1 565 | i: 1 566 | i: 1 567 | } 568 | } 569 | } 570 | } 571 | node { 572 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_7_pointwise/BatchNorm/batchnorm/add_1" 573 | op: "Add" 574 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_7_pointwise/BatchNorm/batchnorm/mul_1" 575 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_7_pointwise/BatchNorm/batchnorm/sub/_61__cf__64" 576 | } 577 | node { 578 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_7_pointwise/Relu6" 579 | op: "Relu6" 580 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_7_pointwise/BatchNorm/batchnorm/add_1" 581 | } 582 | node { 583 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_8_depthwise/depthwise" 584 | op: "DepthwiseConv2dNative" 585 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_7_pointwise/Relu6" 586 | input: "FeatureExtractor/MobilenetV1/Conv2d_8_depthwise/depthwise_weights/read/_59__cf__62" 587 | attr { 588 | key: "padding" 589 | value { 590 | s: "SAME" 591 | } 592 | } 593 | attr { 594 | key: "strides" 595 | value { 596 | list { 597 | i: 1 598 | i: 1 599 | i: 1 600 | i: 1 601 | } 602 | } 603 | } 604 | } 605 | node { 606 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_8_depthwise/BatchNorm/batchnorm/mul_1" 607 | op: "Mul" 608 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_8_depthwise/depthwise" 609 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_8_depthwise/BatchNorm/batchnorm/mul/_57__cf__60" 610 | } 611 | node { 612 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_8_depthwise/BatchNorm/batchnorm/add_1" 613 | op: "Add" 614 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_8_depthwise/BatchNorm/batchnorm/mul_1" 615 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_8_depthwise/BatchNorm/batchnorm/sub/_58__cf__61" 616 | } 617 | node { 618 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_8_depthwise/Relu6" 619 | op: "Relu6" 620 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_8_depthwise/BatchNorm/batchnorm/add_1" 621 | } 622 | node { 623 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_8_pointwise/BatchNorm/batchnorm/mul_1" 624 | op: "Conv2D" 625 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_8_depthwise/Relu6" 626 | input: "FeatureExtractor/MobilenetV1/Conv2d_8_pointwise/weights/read/_56__cf__59" 627 | attr { 628 | key: "padding" 629 | value { 630 | s: "SAME" 631 | } 632 | } 633 | attr { 634 | key: "strides" 635 | value { 636 | list { 637 | i: 1 638 | i: 1 639 | i: 1 640 | i: 1 641 | } 642 | } 643 | } 644 | } 645 | node { 646 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_8_pointwise/BatchNorm/batchnorm/add_1" 647 | op: "Add" 648 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_8_pointwise/BatchNorm/batchnorm/mul_1" 649 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_8_pointwise/BatchNorm/batchnorm/sub/_55__cf__58" 650 | } 651 | node { 652 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_8_pointwise/Relu6" 653 | op: "Relu6" 654 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_8_pointwise/BatchNorm/batchnorm/add_1" 655 | } 656 | node { 657 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_9_depthwise/depthwise" 658 | op: "DepthwiseConv2dNative" 659 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_8_pointwise/Relu6" 660 | input: "FeatureExtractor/MobilenetV1/Conv2d_9_depthwise/depthwise_weights/read/_53__cf__56" 661 | attr { 662 | key: "padding" 663 | value { 664 | s: "SAME" 665 | } 666 | } 667 | attr { 668 | key: "strides" 669 | value { 670 | list { 671 | i: 1 672 | i: 1 673 | i: 1 674 | i: 1 675 | } 676 | } 677 | } 678 | } 679 | node { 680 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_9_depthwise/BatchNorm/batchnorm/mul_1" 681 | op: "Mul" 682 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_9_depthwise/depthwise" 683 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_9_depthwise/BatchNorm/batchnorm/mul/_51__cf__54" 684 | } 685 | node { 686 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_9_depthwise/BatchNorm/batchnorm/add_1" 687 | op: "Add" 688 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_9_depthwise/BatchNorm/batchnorm/mul_1" 689 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_9_depthwise/BatchNorm/batchnorm/sub/_52__cf__55" 690 | } 691 | node { 692 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_9_depthwise/Relu6" 693 | op: "Relu6" 694 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_9_depthwise/BatchNorm/batchnorm/add_1" 695 | } 696 | node { 697 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_9_pointwise/BatchNorm/batchnorm/mul_1" 698 | op: "Conv2D" 699 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_9_depthwise/Relu6" 700 | input: "FeatureExtractor/MobilenetV1/Conv2d_9_pointwise/weights/read/_50__cf__53" 701 | attr { 702 | key: "padding" 703 | value { 704 | s: "SAME" 705 | } 706 | } 707 | attr { 708 | key: "strides" 709 | value { 710 | list { 711 | i: 1 712 | i: 1 713 | i: 1 714 | i: 1 715 | } 716 | } 717 | } 718 | } 719 | node { 720 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_9_pointwise/BatchNorm/batchnorm/add_1" 721 | op: "Add" 722 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_9_pointwise/BatchNorm/batchnorm/mul_1" 723 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_9_pointwise/BatchNorm/batchnorm/sub/_49__cf__52" 724 | } 725 | node { 726 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_9_pointwise/Relu6" 727 | op: "Relu6" 728 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_9_pointwise/BatchNorm/batchnorm/add_1" 729 | } 730 | node { 731 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_10_depthwise/depthwise" 732 | op: "DepthwiseConv2dNative" 733 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_9_pointwise/Relu6" 734 | input: "FeatureExtractor/MobilenetV1/Conv2d_10_depthwise/depthwise_weights/read/_47__cf__50" 735 | attr { 736 | key: "padding" 737 | value { 738 | s: "SAME" 739 | } 740 | } 741 | attr { 742 | key: "strides" 743 | value { 744 | list { 745 | i: 1 746 | i: 1 747 | i: 1 748 | i: 1 749 | } 750 | } 751 | } 752 | } 753 | node { 754 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_10_depthwise/BatchNorm/batchnorm/mul_1" 755 | op: "Mul" 756 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_10_depthwise/depthwise" 757 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_10_depthwise/BatchNorm/batchnorm/mul/_45__cf__48" 758 | } 759 | node { 760 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_10_depthwise/BatchNorm/batchnorm/add_1" 761 | op: "Add" 762 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_10_depthwise/BatchNorm/batchnorm/mul_1" 763 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_10_depthwise/BatchNorm/batchnorm/sub/_46__cf__49" 764 | } 765 | node { 766 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_10_depthwise/Relu6" 767 | op: "Relu6" 768 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_10_depthwise/BatchNorm/batchnorm/add_1" 769 | } 770 | node { 771 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_10_pointwise/BatchNorm/batchnorm/mul_1" 772 | op: "Conv2D" 773 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_10_depthwise/Relu6" 774 | input: "FeatureExtractor/MobilenetV1/Conv2d_10_pointwise/weights/read/_44__cf__47" 775 | attr { 776 | key: "padding" 777 | value { 778 | s: "SAME" 779 | } 780 | } 781 | attr { 782 | key: "strides" 783 | value { 784 | list { 785 | i: 1 786 | i: 1 787 | i: 1 788 | i: 1 789 | } 790 | } 791 | } 792 | } 793 | node { 794 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_10_pointwise/BatchNorm/batchnorm/add_1" 795 | op: "Add" 796 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_10_pointwise/BatchNorm/batchnorm/mul_1" 797 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_10_pointwise/BatchNorm/batchnorm/sub/_43__cf__46" 798 | } 799 | node { 800 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_10_pointwise/Relu6" 801 | op: "Relu6" 802 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_10_pointwise/BatchNorm/batchnorm/add_1" 803 | } 804 | node { 805 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_11_depthwise/depthwise" 806 | op: "DepthwiseConv2dNative" 807 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_10_pointwise/Relu6" 808 | input: "FeatureExtractor/MobilenetV1/Conv2d_11_depthwise/depthwise_weights/read/_41__cf__44" 809 | attr { 810 | key: "padding" 811 | value { 812 | s: "SAME" 813 | } 814 | } 815 | attr { 816 | key: "strides" 817 | value { 818 | list { 819 | i: 1 820 | i: 1 821 | i: 1 822 | i: 1 823 | } 824 | } 825 | } 826 | } 827 | node { 828 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_11_depthwise/BatchNorm/batchnorm/mul_1" 829 | op: "Mul" 830 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_11_depthwise/depthwise" 831 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_11_depthwise/BatchNorm/batchnorm/mul/_39__cf__42" 832 | } 833 | node { 834 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_11_depthwise/BatchNorm/batchnorm/add_1" 835 | op: "Add" 836 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_11_depthwise/BatchNorm/batchnorm/mul_1" 837 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_11_depthwise/BatchNorm/batchnorm/sub/_40__cf__43" 838 | } 839 | node { 840 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_11_depthwise/Relu6" 841 | op: "Relu6" 842 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_11_depthwise/BatchNorm/batchnorm/add_1" 843 | } 844 | node { 845 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_11_pointwise/BatchNorm/batchnorm/mul_1" 846 | op: "Conv2D" 847 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_11_depthwise/Relu6" 848 | input: "FeatureExtractor/MobilenetV1/Conv2d_11_pointwise/weights/read/_38__cf__41" 849 | attr { 850 | key: "padding" 851 | value { 852 | s: "SAME" 853 | } 854 | } 855 | attr { 856 | key: "strides" 857 | value { 858 | list { 859 | i: 1 860 | i: 1 861 | i: 1 862 | i: 1 863 | } 864 | } 865 | } 866 | } 867 | node { 868 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_11_pointwise/BatchNorm/batchnorm/add_1" 869 | op: "Add" 870 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_11_pointwise/BatchNorm/batchnorm/mul_1" 871 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_11_pointwise/BatchNorm/batchnorm/sub/_37__cf__40" 872 | } 873 | node { 874 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_11_pointwise/Relu6" 875 | op: "Relu6" 876 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_11_pointwise/BatchNorm/batchnorm/add_1" 877 | } 878 | node { 879 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_12_depthwise/depthwise" 880 | op: "DepthwiseConv2dNative" 881 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_11_pointwise/Relu6" 882 | input: "FeatureExtractor/MobilenetV1/Conv2d_12_depthwise/depthwise_weights/read/_35__cf__38" 883 | attr { 884 | key: "padding" 885 | value { 886 | s: "SAME" 887 | } 888 | } 889 | attr { 890 | key: "strides" 891 | value { 892 | list { 893 | i: 1 894 | i: 2 895 | i: 2 896 | i: 1 897 | } 898 | } 899 | } 900 | } 901 | node { 902 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_12_depthwise/BatchNorm/batchnorm/mul_1" 903 | op: "Mul" 904 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_12_depthwise/depthwise" 905 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_12_depthwise/BatchNorm/batchnorm/mul/_33__cf__36" 906 | } 907 | node { 908 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_12_depthwise/BatchNorm/batchnorm/add_1" 909 | op: "Add" 910 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_12_depthwise/BatchNorm/batchnorm/mul_1" 911 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_12_depthwise/BatchNorm/batchnorm/sub/_34__cf__37" 912 | } 913 | node { 914 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_12_depthwise/Relu6" 915 | op: "Relu6" 916 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_12_depthwise/BatchNorm/batchnorm/add_1" 917 | } 918 | node { 919 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_12_pointwise/BatchNorm/batchnorm/mul_1" 920 | op: "Conv2D" 921 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_12_depthwise/Relu6" 922 | input: "FeatureExtractor/MobilenetV1/Conv2d_12_pointwise/weights/read/_32__cf__35" 923 | attr { 924 | key: "padding" 925 | value { 926 | s: "SAME" 927 | } 928 | } 929 | attr { 930 | key: "strides" 931 | value { 932 | list { 933 | i: 1 934 | i: 1 935 | i: 1 936 | i: 1 937 | } 938 | } 939 | } 940 | } 941 | node { 942 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_12_pointwise/BatchNorm/batchnorm/add_1" 943 | op: "Add" 944 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_12_pointwise/BatchNorm/batchnorm/mul_1" 945 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_12_pointwise/BatchNorm/batchnorm/sub/_31__cf__34" 946 | } 947 | node { 948 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_12_pointwise/Relu6" 949 | op: "Relu6" 950 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_12_pointwise/BatchNorm/batchnorm/add_1" 951 | } 952 | node { 953 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_13_depthwise/depthwise" 954 | op: "DepthwiseConv2dNative" 955 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_12_pointwise/Relu6" 956 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_depthwise/depthwise_weights/read/_29__cf__32" 957 | attr { 958 | key: "padding" 959 | value { 960 | s: "SAME" 961 | } 962 | } 963 | attr { 964 | key: "strides" 965 | value { 966 | list { 967 | i: 1 968 | i: 1 969 | i: 1 970 | i: 1 971 | } 972 | } 973 | } 974 | } 975 | node { 976 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_13_depthwise/BatchNorm/batchnorm/mul_1" 977 | op: "Mul" 978 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_13_depthwise/depthwise" 979 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_13_depthwise/BatchNorm/batchnorm/mul/_27__cf__30" 980 | } 981 | node { 982 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_13_depthwise/BatchNorm/batchnorm/add_1" 983 | op: "Add" 984 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_13_depthwise/BatchNorm/batchnorm/mul_1" 985 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_13_depthwise/BatchNorm/batchnorm/sub/_28__cf__31" 986 | } 987 | node { 988 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_13_depthwise/Relu6" 989 | op: "Relu6" 990 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_13_depthwise/BatchNorm/batchnorm/add_1" 991 | } 992 | node { 993 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_13_pointwise/BatchNorm/batchnorm/mul_1" 994 | op: "Conv2D" 995 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_13_depthwise/Relu6" 996 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise/weights/read/_26__cf__29" 997 | attr { 998 | key: "padding" 999 | value { 1000 | s: "SAME" 1001 | } 1002 | } 1003 | attr { 1004 | key: "strides" 1005 | value { 1006 | list { 1007 | i: 1 1008 | i: 1 1009 | i: 1 1010 | i: 1 1011 | } 1012 | } 1013 | } 1014 | } 1015 | node { 1016 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_13_pointwise/BatchNorm/batchnorm/add_1" 1017 | op: "Add" 1018 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_13_pointwise/BatchNorm/batchnorm/mul_1" 1019 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_13_pointwise/BatchNorm/batchnorm/sub/_25__cf__28" 1020 | } 1021 | node { 1022 | name: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_13_pointwise/Relu6" 1023 | op: "Relu6" 1024 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_13_pointwise/BatchNorm/batchnorm/add_1" 1025 | } 1026 | node { 1027 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_2_1x1_256/BatchNorm/batchnorm/mul_1" 1028 | op: "Conv2D" 1029 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_13_pointwise/Relu6" 1030 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_2_1x1_256/weights/read/_23__cf__26" 1031 | attr { 1032 | key: "padding" 1033 | value { 1034 | s: "SAME" 1035 | } 1036 | } 1037 | attr { 1038 | key: "strides" 1039 | value { 1040 | list { 1041 | i: 1 1042 | i: 1 1043 | i: 1 1044 | i: 1 1045 | } 1046 | } 1047 | } 1048 | } 1049 | node { 1050 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_2_1x1_256/BatchNorm/batchnorm/add_1" 1051 | op: "Add" 1052 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_2_1x1_256/BatchNorm/batchnorm/mul_1" 1053 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_2_1x1_256/BatchNorm/batchnorm/sub/_22__cf__25" 1054 | } 1055 | node { 1056 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_2_1x1_256/Relu6" 1057 | op: "Relu6" 1058 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_2_1x1_256/BatchNorm/batchnorm/add_1" 1059 | } 1060 | node { 1061 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_2_3x3_s2_512/BatchNorm/batchnorm/mul_1" 1062 | op: "Conv2D" 1063 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_2_1x1_256/Relu6" 1064 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_2_3x3_s2_512/weights/read/_20__cf__23" 1065 | attr { 1066 | key: "padding" 1067 | value { 1068 | s: "SAME" 1069 | } 1070 | } 1071 | attr { 1072 | key: "strides" 1073 | value { 1074 | list { 1075 | i: 1 1076 | i: 2 1077 | i: 2 1078 | i: 1 1079 | } 1080 | } 1081 | } 1082 | } 1083 | node { 1084 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_2_3x3_s2_512/BatchNorm/batchnorm/add_1" 1085 | op: "Add" 1086 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_2_3x3_s2_512/BatchNorm/batchnorm/mul_1" 1087 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_2_3x3_s2_512/BatchNorm/batchnorm/sub/_19__cf__22" 1088 | } 1089 | node { 1090 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_2_3x3_s2_512/Relu6" 1091 | op: "Relu6" 1092 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_2_3x3_s2_512/BatchNorm/batchnorm/add_1" 1093 | } 1094 | node { 1095 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_3_1x1_128/BatchNorm/batchnorm/mul_1" 1096 | op: "Conv2D" 1097 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_2_3x3_s2_512/Relu6" 1098 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_3_1x1_128/weights/read/_17__cf__20" 1099 | attr { 1100 | key: "padding" 1101 | value { 1102 | s: "SAME" 1103 | } 1104 | } 1105 | attr { 1106 | key: "strides" 1107 | value { 1108 | list { 1109 | i: 1 1110 | i: 1 1111 | i: 1 1112 | i: 1 1113 | } 1114 | } 1115 | } 1116 | } 1117 | node { 1118 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_3_1x1_128/BatchNorm/batchnorm/add_1" 1119 | op: "Add" 1120 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_3_1x1_128/BatchNorm/batchnorm/mul_1" 1121 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_3_1x1_128/BatchNorm/batchnorm/sub/_16__cf__19" 1122 | } 1123 | node { 1124 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_3_1x1_128/Relu6" 1125 | op: "Relu6" 1126 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_3_1x1_128/BatchNorm/batchnorm/add_1" 1127 | } 1128 | node { 1129 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_3_3x3_s2_256/BatchNorm/batchnorm/mul_1" 1130 | op: "Conv2D" 1131 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_3_1x1_128/Relu6" 1132 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_3_3x3_s2_256/weights/read/_14__cf__17" 1133 | attr { 1134 | key: "padding" 1135 | value { 1136 | s: "SAME" 1137 | } 1138 | } 1139 | attr { 1140 | key: "strides" 1141 | value { 1142 | list { 1143 | i: 1 1144 | i: 2 1145 | i: 2 1146 | i: 1 1147 | } 1148 | } 1149 | } 1150 | } 1151 | node { 1152 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_3_3x3_s2_256/BatchNorm/batchnorm/add_1" 1153 | op: "Add" 1154 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_3_3x3_s2_256/BatchNorm/batchnorm/mul_1" 1155 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_3_3x3_s2_256/BatchNorm/batchnorm/sub/_13__cf__16" 1156 | } 1157 | node { 1158 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_3_3x3_s2_256/Relu6" 1159 | op: "Relu6" 1160 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_3_3x3_s2_256/BatchNorm/batchnorm/add_1" 1161 | } 1162 | node { 1163 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_4_1x1_128/BatchNorm/batchnorm/mul_1" 1164 | op: "Conv2D" 1165 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_3_3x3_s2_256/Relu6" 1166 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_4_1x1_128/weights/read/_11__cf__14" 1167 | attr { 1168 | key: "padding" 1169 | value { 1170 | s: "SAME" 1171 | } 1172 | } 1173 | attr { 1174 | key: "strides" 1175 | value { 1176 | list { 1177 | i: 1 1178 | i: 1 1179 | i: 1 1180 | i: 1 1181 | } 1182 | } 1183 | } 1184 | } 1185 | node { 1186 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_4_1x1_128/BatchNorm/batchnorm/add_1" 1187 | op: "Add" 1188 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_4_1x1_128/BatchNorm/batchnorm/mul_1" 1189 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_4_1x1_128/BatchNorm/batchnorm/sub/_10__cf__13" 1190 | } 1191 | node { 1192 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_4_1x1_128/Relu6" 1193 | op: "Relu6" 1194 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_4_1x1_128/BatchNorm/batchnorm/add_1" 1195 | } 1196 | node { 1197 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_4_3x3_s2_256/BatchNorm/batchnorm/mul_1" 1198 | op: "Conv2D" 1199 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_4_1x1_128/Relu6" 1200 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_4_3x3_s2_256/weights/read/_8__cf__11" 1201 | attr { 1202 | key: "padding" 1203 | value { 1204 | s: "SAME" 1205 | } 1206 | } 1207 | attr { 1208 | key: "strides" 1209 | value { 1210 | list { 1211 | i: 1 1212 | i: 2 1213 | i: 2 1214 | i: 1 1215 | } 1216 | } 1217 | } 1218 | } 1219 | node { 1220 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_4_3x3_s2_256/BatchNorm/batchnorm/add_1" 1221 | op: "Add" 1222 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_4_3x3_s2_256/BatchNorm/batchnorm/mul_1" 1223 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_4_3x3_s2_256/BatchNorm/batchnorm/sub/_7__cf__10" 1224 | } 1225 | node { 1226 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_4_3x3_s2_256/Relu6" 1227 | op: "Relu6" 1228 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_4_3x3_s2_256/BatchNorm/batchnorm/add_1" 1229 | } 1230 | node { 1231 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_5_1x1_64/BatchNorm/batchnorm/mul_1" 1232 | op: "Conv2D" 1233 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_4_3x3_s2_256/Relu6" 1234 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_5_1x1_64/weights/read/_5__cf__8" 1235 | attr { 1236 | key: "padding" 1237 | value { 1238 | s: "SAME" 1239 | } 1240 | } 1241 | attr { 1242 | key: "strides" 1243 | value { 1244 | list { 1245 | i: 1 1246 | i: 1 1247 | i: 1 1248 | i: 1 1249 | } 1250 | } 1251 | } 1252 | } 1253 | node { 1254 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_5_1x1_64/BatchNorm/batchnorm/add_1" 1255 | op: "Add" 1256 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_5_1x1_64/BatchNorm/batchnorm/mul_1" 1257 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_5_1x1_64/BatchNorm/batchnorm/sub/_4__cf__7" 1258 | } 1259 | node { 1260 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_5_1x1_64/Relu6" 1261 | op: "Relu6" 1262 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_5_1x1_64/BatchNorm/batchnorm/add_1" 1263 | } 1264 | node { 1265 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_5_3x3_s2_128/BatchNorm/batchnorm/mul_1" 1266 | op: "Conv2D" 1267 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_1_Conv2d_5_1x1_64/Relu6" 1268 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_5_3x3_s2_128/weights/read/_2__cf__5" 1269 | attr { 1270 | key: "padding" 1271 | value { 1272 | s: "SAME" 1273 | } 1274 | } 1275 | attr { 1276 | key: "strides" 1277 | value { 1278 | list { 1279 | i: 1 1280 | i: 2 1281 | i: 2 1282 | i: 1 1283 | } 1284 | } 1285 | } 1286 | } 1287 | node { 1288 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_5_3x3_s2_128/BatchNorm/batchnorm/add_1" 1289 | op: "Add" 1290 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_5_3x3_s2_128/BatchNorm/batchnorm/mul_1" 1291 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_5_3x3_s2_128/BatchNorm/batchnorm/sub/_1__cf__4" 1292 | } 1293 | node { 1294 | name: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_5_3x3_s2_128/Relu6" 1295 | op: "Relu6" 1296 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_5_3x3_s2_128/BatchNorm/batchnorm/add_1" 1297 | } 1298 | node { 1299 | name: "BoxPredictor_5/BoxEncodingPredictor/Conv2D" 1300 | op: "Conv2D" 1301 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_5_3x3_s2_128/Relu6" 1302 | input: "BoxPredictor_5/BoxEncodingPredictor/weights/read/_106__cf__109" 1303 | attr { 1304 | key: "padding" 1305 | value { 1306 | s: "SAME" 1307 | } 1308 | } 1309 | attr { 1310 | key: "strides" 1311 | value { 1312 | list { 1313 | i: 1 1314 | i: 1 1315 | i: 1 1316 | i: 1 1317 | } 1318 | } 1319 | } 1320 | } 1321 | node { 1322 | name: "BoxPredictor_5/BoxEncodingPredictor/BiasAdd" 1323 | op: "BiasAdd" 1324 | input: "BoxPredictor_5/BoxEncodingPredictor/Conv2D" 1325 | input: "BoxPredictor_5/BoxEncodingPredictor/biases/read/_105__cf__108" 1326 | } 1327 | node { 1328 | name: "BoxPredictor_5/ClassPredictor/Conv2D" 1329 | op: "Conv2D" 1330 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_5_3x3_s2_128/Relu6" 1331 | input: "BoxPredictor_5/ClassPredictor/weights/read/_168__cf__171" 1332 | attr { 1333 | key: "padding" 1334 | value { 1335 | s: "SAME" 1336 | } 1337 | } 1338 | attr { 1339 | key: "strides" 1340 | value { 1341 | list { 1342 | i: 1 1343 | i: 1 1344 | i: 1 1345 | i: 1 1346 | } 1347 | } 1348 | } 1349 | } 1350 | node { 1351 | name: "BoxPredictor_5/ClassPredictor/BiasAdd" 1352 | op: "BiasAdd" 1353 | input: "BoxPredictor_5/ClassPredictor/Conv2D" 1354 | input: "BoxPredictor_5/ClassPredictor/biases/read/_167__cf__170" 1355 | } 1356 | node { 1357 | name: "BoxPredictor_4/BoxEncodingPredictor/Conv2D" 1358 | op: "Conv2D" 1359 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_4_3x3_s2_256/Relu6" 1360 | input: "BoxPredictor_4/BoxEncodingPredictor/weights/read/_108__cf__111" 1361 | attr { 1362 | key: "padding" 1363 | value { 1364 | s: "SAME" 1365 | } 1366 | } 1367 | attr { 1368 | key: "strides" 1369 | value { 1370 | list { 1371 | i: 1 1372 | i: 1 1373 | i: 1 1374 | i: 1 1375 | } 1376 | } 1377 | } 1378 | } 1379 | node { 1380 | name: "BoxPredictor_4/BoxEncodingPredictor/BiasAdd" 1381 | op: "BiasAdd" 1382 | input: "BoxPredictor_4/BoxEncodingPredictor/Conv2D" 1383 | input: "BoxPredictor_4/BoxEncodingPredictor/biases/read/_107__cf__110" 1384 | } 1385 | node { 1386 | name: "BoxPredictor_4/ClassPredictor/Conv2D" 1387 | op: "Conv2D" 1388 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_4_3x3_s2_256/Relu6" 1389 | input: "BoxPredictor_4/ClassPredictor/weights/read/_170__cf__173" 1390 | attr { 1391 | key: "padding" 1392 | value { 1393 | s: "SAME" 1394 | } 1395 | } 1396 | attr { 1397 | key: "strides" 1398 | value { 1399 | list { 1400 | i: 1 1401 | i: 1 1402 | i: 1 1403 | i: 1 1404 | } 1405 | } 1406 | } 1407 | } 1408 | node { 1409 | name: "BoxPredictor_4/ClassPredictor/BiasAdd" 1410 | op: "BiasAdd" 1411 | input: "BoxPredictor_4/ClassPredictor/Conv2D" 1412 | input: "BoxPredictor_4/ClassPredictor/biases/read/_169__cf__172" 1413 | } 1414 | node { 1415 | name: "BoxPredictor_3/BoxEncodingPredictor/Conv2D" 1416 | op: "Conv2D" 1417 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_3_3x3_s2_256/Relu6" 1418 | input: "BoxPredictor_3/BoxEncodingPredictor/weights/read/_110__cf__113" 1419 | attr { 1420 | key: "padding" 1421 | value { 1422 | s: "SAME" 1423 | } 1424 | } 1425 | attr { 1426 | key: "strides" 1427 | value { 1428 | list { 1429 | i: 1 1430 | i: 1 1431 | i: 1 1432 | i: 1 1433 | } 1434 | } 1435 | } 1436 | } 1437 | node { 1438 | name: "BoxPredictor_3/BoxEncodingPredictor/BiasAdd" 1439 | op: "BiasAdd" 1440 | input: "BoxPredictor_3/BoxEncodingPredictor/Conv2D" 1441 | input: "BoxPredictor_3/BoxEncodingPredictor/biases/read/_109__cf__112" 1442 | } 1443 | node { 1444 | name: "BoxPredictor_3/ClassPredictor/Conv2D" 1445 | op: "Conv2D" 1446 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_3_3x3_s2_256/Relu6" 1447 | input: "BoxPredictor_3/ClassPredictor/weights/read/_172__cf__175" 1448 | attr { 1449 | key: "padding" 1450 | value { 1451 | s: "SAME" 1452 | } 1453 | } 1454 | attr { 1455 | key: "strides" 1456 | value { 1457 | list { 1458 | i: 1 1459 | i: 1 1460 | i: 1 1461 | i: 1 1462 | } 1463 | } 1464 | } 1465 | } 1466 | node { 1467 | name: "BoxPredictor_3/ClassPredictor/BiasAdd" 1468 | op: "BiasAdd" 1469 | input: "BoxPredictor_3/ClassPredictor/Conv2D" 1470 | input: "BoxPredictor_3/ClassPredictor/biases/read/_171__cf__174" 1471 | } 1472 | node { 1473 | name: "BoxPredictor_2/BoxEncodingPredictor/Conv2D" 1474 | op: "Conv2D" 1475 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_2_3x3_s2_512/Relu6" 1476 | input: "BoxPredictor_2/BoxEncodingPredictor/weights/read/_112__cf__115" 1477 | attr { 1478 | key: "padding" 1479 | value { 1480 | s: "SAME" 1481 | } 1482 | } 1483 | attr { 1484 | key: "strides" 1485 | value { 1486 | list { 1487 | i: 1 1488 | i: 1 1489 | i: 1 1490 | i: 1 1491 | } 1492 | } 1493 | } 1494 | } 1495 | node { 1496 | name: "BoxPredictor_2/BoxEncodingPredictor/BiasAdd" 1497 | op: "BiasAdd" 1498 | input: "BoxPredictor_2/BoxEncodingPredictor/Conv2D" 1499 | input: "BoxPredictor_2/BoxEncodingPredictor/biases/read/_111__cf__114" 1500 | } 1501 | node { 1502 | name: "BoxPredictor_2/ClassPredictor/Conv2D" 1503 | op: "Conv2D" 1504 | input: "FeatureExtractor/MobilenetV1/Conv2d_13_pointwise_2_Conv2d_2_3x3_s2_512/Relu6" 1505 | input: "BoxPredictor_2/ClassPredictor/weights/read/_174__cf__177" 1506 | attr { 1507 | key: "padding" 1508 | value { 1509 | s: "SAME" 1510 | } 1511 | } 1512 | attr { 1513 | key: "strides" 1514 | value { 1515 | list { 1516 | i: 1 1517 | i: 1 1518 | i: 1 1519 | i: 1 1520 | } 1521 | } 1522 | } 1523 | } 1524 | node { 1525 | name: "BoxPredictor_2/ClassPredictor/BiasAdd" 1526 | op: "BiasAdd" 1527 | input: "BoxPredictor_2/ClassPredictor/Conv2D" 1528 | input: "BoxPredictor_2/ClassPredictor/biases/read/_173__cf__176" 1529 | } 1530 | node { 1531 | name: "BoxPredictor_1/BoxEncodingPredictor/Conv2D" 1532 | op: "Conv2D" 1533 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_13_pointwise/Relu6" 1534 | input: "BoxPredictor_1/BoxEncodingPredictor/weights/read/_114__cf__117" 1535 | attr { 1536 | key: "padding" 1537 | value { 1538 | s: "SAME" 1539 | } 1540 | } 1541 | attr { 1542 | key: "strides" 1543 | value { 1544 | list { 1545 | i: 1 1546 | i: 1 1547 | i: 1 1548 | i: 1 1549 | } 1550 | } 1551 | } 1552 | } 1553 | node { 1554 | name: "BoxPredictor_1/BoxEncodingPredictor/BiasAdd" 1555 | op: "BiasAdd" 1556 | input: "BoxPredictor_1/BoxEncodingPredictor/Conv2D" 1557 | input: "BoxPredictor_1/BoxEncodingPredictor/biases/read/_113__cf__116" 1558 | } 1559 | node { 1560 | name: "BoxPredictor_1/ClassPredictor/Conv2D" 1561 | op: "Conv2D" 1562 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_13_pointwise/Relu6" 1563 | input: "BoxPredictor_1/ClassPredictor/weights/read/_176__cf__179" 1564 | attr { 1565 | key: "padding" 1566 | value { 1567 | s: "SAME" 1568 | } 1569 | } 1570 | attr { 1571 | key: "strides" 1572 | value { 1573 | list { 1574 | i: 1 1575 | i: 1 1576 | i: 1 1577 | i: 1 1578 | } 1579 | } 1580 | } 1581 | } 1582 | node { 1583 | name: "BoxPredictor_1/ClassPredictor/BiasAdd" 1584 | op: "BiasAdd" 1585 | input: "BoxPredictor_1/ClassPredictor/Conv2D" 1586 | input: "BoxPredictor_1/ClassPredictor/biases/read/_175__cf__178" 1587 | } 1588 | node { 1589 | name: "BoxPredictor_0/BoxEncodingPredictor/Conv2D" 1590 | op: "Conv2D" 1591 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_11_pointwise/Relu6" 1592 | input: "BoxPredictor_0/BoxEncodingPredictor/weights/read/_116__cf__119" 1593 | attr { 1594 | key: "padding" 1595 | value { 1596 | s: "SAME" 1597 | } 1598 | } 1599 | attr { 1600 | key: "strides" 1601 | value { 1602 | list { 1603 | i: 1 1604 | i: 1 1605 | i: 1 1606 | i: 1 1607 | } 1608 | } 1609 | } 1610 | } 1611 | node { 1612 | name: "BoxPredictor_0/BoxEncodingPredictor/BiasAdd" 1613 | op: "BiasAdd" 1614 | input: "BoxPredictor_0/BoxEncodingPredictor/Conv2D" 1615 | input: "BoxPredictor_0/BoxEncodingPredictor/biases/read/_115__cf__118" 1616 | } 1617 | node { 1618 | name: "BoxPredictor_0/ClassPredictor/Conv2D" 1619 | op: "Conv2D" 1620 | input: "FeatureExtractor/MobilenetV1/MobilenetV1/Conv2d_11_pointwise/Relu6" 1621 | input: "BoxPredictor_0/ClassPredictor/weights/read/_178__cf__181" 1622 | attr { 1623 | key: "padding" 1624 | value { 1625 | s: "SAME" 1626 | } 1627 | } 1628 | attr { 1629 | key: "strides" 1630 | value { 1631 | list { 1632 | i: 1 1633 | i: 1 1634 | i: 1 1635 | i: 1 1636 | } 1637 | } 1638 | } 1639 | } 1640 | node { 1641 | name: "BoxPredictor_0/ClassPredictor/BiasAdd" 1642 | op: "BiasAdd" 1643 | input: "BoxPredictor_0/ClassPredictor/Conv2D" 1644 | input: "BoxPredictor_0/ClassPredictor/biases/read/_177__cf__180" 1645 | } 1646 | node { 1647 | name: "concat/axis_flatten" 1648 | op: "Const" 1649 | attr { 1650 | key: "value" 1651 | value { 1652 | tensor { 1653 | dtype: DT_INT32 1654 | tensor_shape { 1655 | } 1656 | int_val: -1 1657 | } 1658 | } 1659 | } 1660 | } 1661 | node { 1662 | name: "BoxPredictor_0/ClassPredictor/BiasAdd/Flatten" 1663 | op: "Flatten" 1664 | input: "BoxPredictor_0/ClassPredictor/BiasAdd" 1665 | } 1666 | node { 1667 | name: "BoxPredictor_1/ClassPredictor/BiasAdd/Flatten" 1668 | op: "Flatten" 1669 | input: "BoxPredictor_1/ClassPredictor/BiasAdd" 1670 | } 1671 | node { 1672 | name: "BoxPredictor_2/ClassPredictor/BiasAdd/Flatten" 1673 | op: "Flatten" 1674 | input: "BoxPredictor_2/ClassPredictor/BiasAdd" 1675 | } 1676 | node { 1677 | name: "BoxPredictor_3/ClassPredictor/BiasAdd/Flatten" 1678 | op: "Flatten" 1679 | input: "BoxPredictor_3/ClassPredictor/BiasAdd" 1680 | } 1681 | node { 1682 | name: "BoxPredictor_4/ClassPredictor/BiasAdd/Flatten" 1683 | op: "Flatten" 1684 | input: "BoxPredictor_4/ClassPredictor/BiasAdd" 1685 | } 1686 | node { 1687 | name: "BoxPredictor_5/ClassPredictor/BiasAdd/Flatten" 1688 | op: "Flatten" 1689 | input: "BoxPredictor_5/ClassPredictor/BiasAdd" 1690 | } 1691 | node { 1692 | name: "ClassPredictor/concat" 1693 | op: "ConcatV2" 1694 | input: "BoxPredictor_0/ClassPredictor/BiasAdd/Flatten" 1695 | input: "BoxPredictor_1/ClassPredictor/BiasAdd/Flatten" 1696 | input: "BoxPredictor_2/ClassPredictor/BiasAdd/Flatten" 1697 | input: "BoxPredictor_3/ClassPredictor/BiasAdd/Flatten" 1698 | input: "BoxPredictor_4/ClassPredictor/BiasAdd/Flatten" 1699 | input: "BoxPredictor_5/ClassPredictor/BiasAdd/Flatten" 1700 | input: "concat/axis_flatten" 1701 | } 1702 | node { 1703 | name: "BoxPredictor_0/BoxEncodingPredictor/BiasAdd/Flatten" 1704 | op: "Flatten" 1705 | input: "BoxPredictor_0/BoxEncodingPredictor/BiasAdd" 1706 | } 1707 | node { 1708 | name: "BoxPredictor_1/BoxEncodingPredictor/BiasAdd/Flatten" 1709 | op: "Flatten" 1710 | input: "BoxPredictor_1/BoxEncodingPredictor/BiasAdd" 1711 | } 1712 | node { 1713 | name: "BoxPredictor_2/BoxEncodingPredictor/BiasAdd/Flatten" 1714 | op: "Flatten" 1715 | input: "BoxPredictor_2/BoxEncodingPredictor/BiasAdd" 1716 | } 1717 | node { 1718 | name: "BoxPredictor_3/BoxEncodingPredictor/BiasAdd/Flatten" 1719 | op: "Flatten" 1720 | input: "BoxPredictor_3/BoxEncodingPredictor/BiasAdd" 1721 | } 1722 | node { 1723 | name: "BoxPredictor_4/BoxEncodingPredictor/BiasAdd/Flatten" 1724 | op: "Flatten" 1725 | input: "BoxPredictor_4/BoxEncodingPredictor/BiasAdd" 1726 | } 1727 | node { 1728 | name: "BoxPredictor_5/BoxEncodingPredictor/BiasAdd/Flatten" 1729 | op: "Flatten" 1730 | input: "BoxPredictor_5/BoxEncodingPredictor/BiasAdd" 1731 | } 1732 | node { 1733 | name: "BoxEncodingPredictor/concat" 1734 | op: "ConcatV2" 1735 | input: "BoxPredictor_0/BoxEncodingPredictor/BiasAdd/Flatten" 1736 | input: "BoxPredictor_1/BoxEncodingPredictor/BiasAdd/Flatten" 1737 | input: "BoxPredictor_2/BoxEncodingPredictor/BiasAdd/Flatten" 1738 | input: "BoxPredictor_3/BoxEncodingPredictor/BiasAdd/Flatten" 1739 | input: "BoxPredictor_4/BoxEncodingPredictor/BiasAdd/Flatten" 1740 | input: "BoxPredictor_5/BoxEncodingPredictor/BiasAdd/Flatten" 1741 | input: "concat/axis_flatten" 1742 | } 1743 | node { 1744 | name: "PriorBox_0" 1745 | op: "PriorBox" 1746 | input: "BoxPredictor_0/BoxEncodingPredictor/BiasAdd" 1747 | input: "image_tensor" 1748 | attr { 1749 | key: "clip" 1750 | value { 1751 | b: false 1752 | } 1753 | } 1754 | attr { 1755 | key: "flip" 1756 | value { 1757 | b: false 1758 | } 1759 | } 1760 | attr { 1761 | key: "height" 1762 | value { 1763 | tensor { 1764 | dtype: DT_FLOAT 1765 | tensor_shape { 1766 | dim { 1767 | size: 3 1768 | } 1769 | } 1770 | float_val: 30.0 1771 | float_val: 42.4264068604 1772 | float_val: 84.8528137207 1773 | } 1774 | } 1775 | } 1776 | attr { 1777 | key: "variance" 1778 | value { 1779 | tensor { 1780 | dtype: DT_FLOAT 1781 | tensor_shape { 1782 | dim { 1783 | size: 4 1784 | } 1785 | } 1786 | float_val: 0.10000000149 1787 | float_val: 0.10000000149 1788 | float_val: 0.20000000298 1789 | float_val: 0.20000000298 1790 | } 1791 | } 1792 | } 1793 | attr { 1794 | key: "width" 1795 | value { 1796 | tensor { 1797 | dtype: DT_FLOAT 1798 | tensor_shape { 1799 | dim { 1800 | size: 3 1801 | } 1802 | } 1803 | float_val: 30.0 1804 | float_val: 84.8528137207 1805 | float_val: 42.4264068604 1806 | } 1807 | } 1808 | } 1809 | } 1810 | node { 1811 | name: "PriorBox_1" 1812 | op: "PriorBox" 1813 | input: "BoxPredictor_1/BoxEncodingPredictor/BiasAdd" 1814 | input: "image_tensor" 1815 | attr { 1816 | key: "clip" 1817 | value { 1818 | b: false 1819 | } 1820 | } 1821 | attr { 1822 | key: "flip" 1823 | value { 1824 | b: false 1825 | } 1826 | } 1827 | attr { 1828 | key: "height" 1829 | value { 1830 | tensor { 1831 | dtype: DT_FLOAT 1832 | tensor_shape { 1833 | dim { 1834 | size: 6 1835 | } 1836 | } 1837 | float_val: 105.0 1838 | float_val: 74.2462081909 1839 | float_val: 148.492416382 1840 | float_val: 60.6217765808 1841 | float_val: 181.956329346 1842 | float_val: 125.499000549 1843 | } 1844 | } 1845 | } 1846 | attr { 1847 | key: "variance" 1848 | value { 1849 | tensor { 1850 | dtype: DT_FLOAT 1851 | tensor_shape { 1852 | dim { 1853 | size: 4 1854 | } 1855 | } 1856 | float_val: 0.10000000149 1857 | float_val: 0.10000000149 1858 | float_val: 0.20000000298 1859 | float_val: 0.20000000298 1860 | } 1861 | } 1862 | } 1863 | attr { 1864 | key: "width" 1865 | value { 1866 | tensor { 1867 | dtype: DT_FLOAT 1868 | tensor_shape { 1869 | dim { 1870 | size: 6 1871 | } 1872 | } 1873 | float_val: 105.0 1874 | float_val: 148.492416382 1875 | float_val: 74.2462081909 1876 | float_val: 181.865341187 1877 | float_val: 60.5914611816 1878 | float_val: 125.499000549 1879 | } 1880 | } 1881 | } 1882 | } 1883 | node { 1884 | name: "PriorBox_2" 1885 | op: "PriorBox" 1886 | input: "BoxPredictor_2/BoxEncodingPredictor/BiasAdd" 1887 | input: "image_tensor" 1888 | attr { 1889 | key: "clip" 1890 | value { 1891 | b: false 1892 | } 1893 | } 1894 | attr { 1895 | key: "flip" 1896 | value { 1897 | b: false 1898 | } 1899 | } 1900 | attr { 1901 | key: "height" 1902 | value { 1903 | tensor { 1904 | dtype: DT_FLOAT 1905 | tensor_shape { 1906 | dim { 1907 | size: 6 1908 | } 1909 | } 1910 | float_val: 150.0 1911 | float_val: 106.066017151 1912 | float_val: 212.132034302 1913 | float_val: 86.6025390625 1914 | float_val: 259.93762207 1915 | float_val: 171.026321411 1916 | } 1917 | } 1918 | } 1919 | attr { 1920 | key: "variance" 1921 | value { 1922 | tensor { 1923 | dtype: DT_FLOAT 1924 | tensor_shape { 1925 | dim { 1926 | size: 4 1927 | } 1928 | } 1929 | float_val: 0.10000000149 1930 | float_val: 0.10000000149 1931 | float_val: 0.20000000298 1932 | float_val: 0.20000000298 1933 | } 1934 | } 1935 | } 1936 | attr { 1937 | key: "width" 1938 | value { 1939 | tensor { 1940 | dtype: DT_FLOAT 1941 | tensor_shape { 1942 | dim { 1943 | size: 6 1944 | } 1945 | } 1946 | float_val: 150.0 1947 | float_val: 212.132034302 1948 | float_val: 106.066017151 1949 | float_val: 259.807617188 1950 | float_val: 86.5592269897 1951 | float_val: 171.026321411 1952 | } 1953 | } 1954 | } 1955 | } 1956 | node { 1957 | name: "PriorBox_3" 1958 | op: "PriorBox" 1959 | input: "BoxPredictor_3/BoxEncodingPredictor/BiasAdd" 1960 | input: "image_tensor" 1961 | attr { 1962 | key: "clip" 1963 | value { 1964 | b: false 1965 | } 1966 | } 1967 | attr { 1968 | key: "flip" 1969 | value { 1970 | b: false 1971 | } 1972 | } 1973 | attr { 1974 | key: "height" 1975 | value { 1976 | tensor { 1977 | dtype: DT_FLOAT 1978 | tensor_shape { 1979 | dim { 1980 | size: 6 1981 | } 1982 | } 1983 | float_val: 195.0 1984 | float_val: 137.885818481 1985 | float_val: 275.771636963 1986 | float_val: 112.583305359 1987 | float_val: 337.918914795 1988 | float_val: 216.333084106 1989 | } 1990 | } 1991 | } 1992 | attr { 1993 | key: "variance" 1994 | value { 1995 | tensor { 1996 | dtype: DT_FLOAT 1997 | tensor_shape { 1998 | dim { 1999 | size: 4 2000 | } 2001 | } 2002 | float_val: 0.10000000149 2003 | float_val: 0.10000000149 2004 | float_val: 0.20000000298 2005 | float_val: 0.20000000298 2006 | } 2007 | } 2008 | } 2009 | attr { 2010 | key: "width" 2011 | value { 2012 | tensor { 2013 | dtype: DT_FLOAT 2014 | tensor_shape { 2015 | dim { 2016 | size: 6 2017 | } 2018 | } 2019 | float_val: 195.0 2020 | float_val: 275.771636963 2021 | float_val: 137.885818481 2022 | float_val: 337.749908447 2023 | float_val: 112.527000427 2024 | float_val: 216.333084106 2025 | } 2026 | } 2027 | } 2028 | } 2029 | node { 2030 | name: "PriorBox_4" 2031 | op: "PriorBox" 2032 | input: "BoxPredictor_4/BoxEncodingPredictor/BiasAdd" 2033 | input: "image_tensor" 2034 | attr { 2035 | key: "clip" 2036 | value { 2037 | b: false 2038 | } 2039 | } 2040 | attr { 2041 | key: "flip" 2042 | value { 2043 | b: false 2044 | } 2045 | } 2046 | attr { 2047 | key: "height" 2048 | value { 2049 | tensor { 2050 | dtype: DT_FLOAT 2051 | tensor_shape { 2052 | dim { 2053 | size: 6 2054 | } 2055 | } 2056 | float_val: 240.0 2057 | float_val: 169.705627441 2058 | float_val: 339.411254883 2059 | float_val: 138.564071655 2060 | float_val: 415.90020752 2061 | float_val: 261.533935547 2062 | } 2063 | } 2064 | } 2065 | attr { 2066 | key: "variance" 2067 | value { 2068 | tensor { 2069 | dtype: DT_FLOAT 2070 | tensor_shape { 2071 | dim { 2072 | size: 4 2073 | } 2074 | } 2075 | float_val: 0.10000000149 2076 | float_val: 0.10000000149 2077 | float_val: 0.20000000298 2078 | float_val: 0.20000000298 2079 | } 2080 | } 2081 | } 2082 | attr { 2083 | key: "width" 2084 | value { 2085 | tensor { 2086 | dtype: DT_FLOAT 2087 | tensor_shape { 2088 | dim { 2089 | size: 6 2090 | } 2091 | } 2092 | float_val: 240.0 2093 | float_val: 339.411254883 2094 | float_val: 169.705627441 2095 | float_val: 415.692199707 2096 | float_val: 138.494766235 2097 | float_val: 261.533935547 2098 | } 2099 | } 2100 | } 2101 | } 2102 | node { 2103 | name: "PriorBox_5" 2104 | op: "PriorBox" 2105 | input: "BoxPredictor_5/BoxEncodingPredictor/BiasAdd" 2106 | input: "image_tensor" 2107 | attr { 2108 | key: "clip" 2109 | value { 2110 | b: false 2111 | } 2112 | } 2113 | attr { 2114 | key: "flip" 2115 | value { 2116 | b: false 2117 | } 2118 | } 2119 | attr { 2120 | key: "height" 2121 | value { 2122 | tensor { 2123 | dtype: DT_FLOAT 2124 | tensor_shape { 2125 | dim { 2126 | size: 6 2127 | } 2128 | } 2129 | float_val: 285.0 2130 | float_val: 201.525436401 2131 | float_val: 403.050872803 2132 | float_val: 164.544830322 2133 | float_val: 493.881469727 2134 | float_val: 292.403839111 2135 | } 2136 | } 2137 | } 2138 | attr { 2139 | key: "variance" 2140 | value { 2141 | tensor { 2142 | dtype: DT_FLOAT 2143 | tensor_shape { 2144 | dim { 2145 | size: 4 2146 | } 2147 | } 2148 | float_val: 0.10000000149 2149 | float_val: 0.10000000149 2150 | float_val: 0.20000000298 2151 | float_val: 0.20000000298 2152 | } 2153 | } 2154 | } 2155 | attr { 2156 | key: "width" 2157 | value { 2158 | tensor { 2159 | dtype: DT_FLOAT 2160 | tensor_shape { 2161 | dim { 2162 | size: 6 2163 | } 2164 | } 2165 | float_val: 285.0 2166 | float_val: 403.050872803 2167 | float_val: 201.525436401 2168 | float_val: 493.634490967 2169 | float_val: 164.462539673 2170 | float_val: 292.403839111 2171 | } 2172 | } 2173 | } 2174 | } 2175 | node { 2176 | name: "PriorBox/concat" 2177 | op: "ConcatV2" 2178 | input: "PriorBox_0" 2179 | input: "PriorBox_1" 2180 | input: "PriorBox_2" 2181 | input: "PriorBox_3" 2182 | input: "PriorBox_4" 2183 | input: "PriorBox_5" 2184 | input: "concat/axis_flatten" 2185 | } 2186 | node { 2187 | name: "ClassPredictor/concat/sigmoid" 2188 | op: "Sigmoid" 2189 | input: "ClassPredictor/concat" 2190 | } 2191 | node { 2192 | name: "detection_out" 2193 | op: "DetectionOutput" 2194 | input: "BoxEncodingPredictor/concat" 2195 | input: "ClassPredictor/concat/sigmoid" 2196 | input: "PriorBox/concat" 2197 | attr { 2198 | key: "background_label_id" 2199 | value { 2200 | i: 0 2201 | } 2202 | } 2203 | attr { 2204 | key: "code_type" 2205 | value { 2206 | s: "CENTER_SIZE" 2207 | } 2208 | } 2209 | attr { 2210 | key: "confidence_threshold" 2211 | value { 2212 | f: 0.00999999977648 2213 | } 2214 | } 2215 | attr { 2216 | key: "keep_top_k" 2217 | value { 2218 | i: 100 2219 | } 2220 | } 2221 | attr { 2222 | key: "loc_pred_transposed" 2223 | value { 2224 | b: true 2225 | } 2226 | } 2227 | attr { 2228 | key: "nms_threshold" 2229 | value { 2230 | f: 0.600000023842 2231 | } 2232 | } 2233 | attr { 2234 | key: "num_classes" 2235 | value { 2236 | i: 91 2237 | } 2238 | } 2239 | attr { 2240 | key: "share_location" 2241 | value { 2242 | b: true 2243 | } 2244 | } 2245 | attr { 2246 | key: "top_k" 2247 | value { 2248 | i: 100 2249 | } 2250 | } 2251 | } 2252 | library { 2253 | } 2254 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | opencv-python 2 | numpy 3 | flask 4 | pillow 5 | gunicorn -------------------------------------------------------------------------------- /templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 |