├── LICENSE ├── README.md ├── css └── style.css ├── images ├── aizoocom.png ├── demo.jpg └── result.png ├── index.html ├── js ├── detection.js ├── index.js └── tfjs.min.js └── tfjs-models ├── group1-shard1of1.bin └── model.json /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 AIZOOTech 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # face-mask-detection-web-demo 2 | # 人脸口罩检测网页demo 3 | Face mask deteciton demo, by tensorflow.js 4 | 5 | ## 原理 6 | 本demo是在浏览器运行的人脸口罩检测网页demo,介绍如何将深度学习的人脸口罩检测模型部署到浏览器里面。 7 | 关于人脸口罩检测的PyTorch、TensorFlow、Caffe、Keras、MXNet版本,可以进入相应Github仓库 8 | [FaceMaskDetection](https://github.com/AIZOOTech/FaceMaskDetection) 9 | 关于项目介绍,可以阅读一下两篇文章: 10 | [AIZOO开源人脸口罩检测数据+模型+代码+在线网页体验,通通都开源了](https://mp.weixin.qq.com/s/22U_v6IQ9PBHslI-65v_0Q) 11 | [人脸口罩检测现开源PyTorch、TensorFlow、MXNet等全部五大主流深度学习框架模型和代码 12 | ](https://mp.weixin.qq.com/s?__biz=MzIyMDY2MTUyNg==&mid=2247483779&idx=1&sn=b9ac5af31adf1dfdc3c87eb1c74836a5&exportkey=AX%2FANiIY8CWWMPQrHKh6A5E%3D&pass_ticket=aaNfWJGBgSum6CY5pvFqx0IIfljPPkeX%2BdMtPEl3zo5hQfPnYR5mEUlayz06kNKG) 13 | 14 | 15 | 深度学习模型,可以借助TensorFlow.js库,运行在浏览器里。首先,需要使用`tensorflowjs_converter`将tensorflow的`graph model`或者keras的`layer model`转换为TensorFlow.js支持的模型。 16 | 该工具可以通过`pip install tensorflowjs`安装。 17 | 18 | 如果使用Keras模型转的操作如下: 19 | ``` 20 | tensorflowjs_convert --input_format keras --output_format tfjs_layers_model /path/to/keras/hdf5/model /path/to/output/folder 21 | ``` 22 | 模型会生成`model.json`文件和一个或者多个`bin`文件,其中前者保存模型的拓扑,后者保存模型的权重。 23 | 使用JavaScript,需要在html中先引入`tfjs.min.js`库,然后加载模型 24 | ``` 25 | 26 | 27 | ``` 28 | 在`detection.js`中,加载模型 29 | ``` 30 | model = await tf.loadLayersModel('./tfjs-models/model.json'); 31 | ``` 32 | 置于anchor生成、输出解码、nms与使用python版本并无太大差异,大家可以查看`detection.js`中三个相关的函数,一目了然。 33 | 34 | ## 运行方法 35 | 在当前目录下打开终端,只需要建立一个最小web server即可。 36 | 对于使用python的用户 37 | ``` 38 | // python3用户 39 | python -m http.server 40 | // python2用户 41 | python -m SimpleHTTPServer 42 | 43 | ``` 44 | 如果你使用Node.js 45 | ``` 46 | npm install serve -g //安装serve 47 | serve // this will open a mini web serve 48 | // 您也可以使用http-serve 49 | npm install http-server -g 50 | http-server 51 | ``` 52 | 53 | ## 效果 54 | 您可以点击网页中的上传图片按钮,或者拖拽图片到网页区域,然后模型会自动进行检测并画框。 55 | ![页面效果图](/images/result.png) -------------------------------------------------------------------------------- /css/style.css: -------------------------------------------------------------------------------- 1 | 2 | html, body { 3 | margin: 0; 4 | padding: 0; 5 | font-family: Apercu; 6 | 7 | } 8 | 9 | .title { 10 | text-align: center 11 | } 12 | 13 | #tips { 14 | color:rosybrown 15 | } 16 | 17 | #container { 18 | background: #c79ef812; 19 | /* height: 500px; */ 20 | padding: 50px; 21 | font-size: 14px; 22 | border-radius: 33px; 23 | text-align: center; 24 | } 25 | 26 | #text-container { 27 | height: 100px; 28 | width: 100%; 29 | text-align: center; 30 | } 31 | 32 | #instruction { 33 | margin-top: 20px; 34 | } 35 | 36 | .result-color { 37 | color: #A159FC; 38 | } 39 | 40 | .green-color { 41 | color: #0bcf82; 42 | } 43 | 44 | .highlight { 45 | opacity: 0.4; 46 | background-color: rgba(161,89,252, 0.2) !important; 47 | } 48 | 49 | .center { 50 | display: block; 51 | margin-left: auto; 52 | margin-right: auto; 53 | } 54 | 55 | #fileUploader { 56 | opacity: 0; 57 | } 58 | 59 | #uploader-btn { 60 | background: #faebd700; 61 | margin-top: 1em; 62 | color: #0bcf81; 63 | border: solid 1px #0bcf81; 64 | padding: .6em 2em; 65 | line-height: 2; 66 | font-size: 12px; 67 | font-family: Apercu; 68 | cursor: pointer; 69 | border-radius: 10px; 70 | } 71 | 72 | #uploader-btn:hover { 73 | color: white; 74 | background-color: #0bcf82; 75 | border: solid 1px #0bcf82; 76 | -webkit-transition: all 0.3s ease; 77 | -moz-transition: all 0.3s ease; 78 | -o-transition: all 0.3s ease; 79 | transition: all 0.3s ease; 80 | } 81 | -------------------------------------------------------------------------------- /images/aizoocom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AIZOOTech/mask-detection-web-demo/b4425bc5fa5a75bd52e17a53a1a0b0243f8e5e7a/images/aizoocom.png -------------------------------------------------------------------------------- /images/demo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AIZOOTech/mask-detection-web-demo/b4425bc5fa5a75bd52e17a53a1a0b0243f8e5e7a/images/demo.jpg -------------------------------------------------------------------------------- /images/result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AIZOOTech/mask-detection-web-demo/b4425bc5fa5a75bd52e17a53a1a0b0243f8e5e7a/images/result.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |

借助TensorFlow.js

18 |

让人脸口罩识别跑在您本地浏览器里面

19 |
注意:部分手机拍摄的图片,读取出来是旋转90°,需要旋转正,为避免本demo过于复杂,本demo不对这种case进行处理
20 |
21 | 22 |
23 |

24 | 25 |

或者将图片拖到这里 📂, 然后下方会显示结果

26 | 27 |

28 |

29 | 检测结果如下: 30 |

31 | 32 |
33 | 34 |
35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /js/detection.js: -------------------------------------------------------------------------------- 1 | // decode the output according to anchors 2 | function decodeBBox(anchors, rawOutput, variances=[0.1,0.1,0.2,0.2]) { 3 | const [anchorXmin, anchorYmin, anchorXmax, anchorYmax] = tf.split(anchors, [1,1,1,1], -1); 4 | const anchorCX = tf.div(tf.add(anchorXmin, anchorXmax), 2); 5 | const anchorCY = tf.div(tf.add(anchorYmin, anchorYmax), 2); 6 | 7 | const anchorW = tf.sub(anchorXmax, anchorXmin); 8 | const anchorH = tf.sub(anchorYmax, anchorYmin); 9 | 10 | const rawOutputScale = tf.mul(rawOutput, tf.tensor(variances)); 11 | const [rawOutputCX, rawOutputCY, rawOutputW, rawOutputH] = tf.split(rawOutputScale, [1,1,1,1], -1); 12 | const predictCX = tf.add(tf.mul(rawOutputCX, anchorW), anchorCX); 13 | const predictCY = tf.add(tf.mul(rawOutputCY,anchorH), anchorCY); 14 | const predictW = tf.mul(tf.exp(rawOutputW), anchorW); 15 | const predictH = tf.mul(tf.exp(rawOutputH), anchorH); 16 | const predictXmin = tf.sub(predictCX, tf.div(predictW, 2)); 17 | const predictYmin = tf.sub(predictCY, tf.div(predictH, 2)); 18 | const predictXmax = tf.add(predictCX, tf.div(predictW, 2)); 19 | const predictYmax = tf.add(predictCY, tf.div(predictH, 2)); 20 | // eslint-disable-next-line 21 | const predictBBox = tf.concat([predictYmin, predictXmin, predictYmax, predictXmax],-1); 22 | return predictBBox 23 | } 24 | 25 | // generate anchors 26 | function anchorGenerator(featureMapSizes, anchorSizes, anchorRatios) { 27 | let anchorBBoxes = []; 28 | // eslint-disable-next-line 29 | featureMapSizes.map((featureSize, idx) =>{ 30 | const cx = tf.div(tf.add(tf.linspace(0, featureSize[0] - 1, featureSize[0]) , 0.5) , featureSize[0]); 31 | const cy = tf.div(tf.add(tf.linspace(0, featureSize[1] - 1, featureSize[1]) , 0.5) , featureSize[1]); 32 | const cxGrid = tf.matMul(tf.ones([featureSize[1], 1]), cx.reshape([1,featureSize[0]])); 33 | const cyGrid = tf.matMul(cy.reshape([featureSize[1], 1]), tf.ones([1, featureSize[0]])); 34 | // eslint-disable-next-line 35 | const cxGridExpend = tf.expandDims(cxGrid, -1); 36 | // eslint-disable-next-line 37 | const cyGridExpend = tf.expandDims(cyGrid, -1); 38 | // eslint-disable-next-line 39 | const center = tf.concat([cxGridExpend, cyGridExpend], -1); 40 | const numAnchors = anchorSizes[idx].length + anchorRatios[idx].length -1; 41 | const centerTiled = tf.tile(center, [1, 1, 2*numAnchors]); 42 | // eslint-disable-next-line 43 | let anchorWidthHeights = []; 44 | 45 | // eslint-disable-next-line 46 | for (const scale of anchorSizes[idx]) { 47 | const ratio = anchorRatios[idx][0]; 48 | const width = scale * Math.sqrt(ratio); 49 | const height = scale / Math.sqrt(ratio); 50 | 51 | const halfWidth = width / 2; 52 | const halfHeight = height / 2; 53 | anchorWidthHeights.push(-halfWidth, -halfHeight, halfWidth, halfHeight); 54 | // width = tf.mul(scale, tf.sqrt(ratio)); 55 | // height = tf.div(scale, tf.sqrt(ratio)); 56 | 57 | // halfWidth = tf.div(width, 2); 58 | // halfHeight = tf.div(height, 2); 59 | // anchorWidthHeights.push(tf.neg(halfWidth), tf.neg(halfWidth), halfWidth, halfHeight); 60 | } 61 | 62 | // eslint-disable-next-line 63 | for ( const ratio of anchorRatios[idx].slice(1)) { 64 | const scale = anchorSizes[idx][0]; 65 | const width = scale * Math.sqrt(ratio); 66 | const height = scale / Math.sqrt(ratio); 67 | const halfWidth = width / 2; 68 | const halfHeight = height / 2; 69 | anchorWidthHeights.push(-halfWidth, -halfHeight, halfWidth, halfHeight); 70 | } 71 | const bboxCoord = tf.add(centerTiled , tf.tensor(anchorWidthHeights)); 72 | const bboxCoordReshape = bboxCoord.reshape([-1, 4]); 73 | anchorBBoxes.push(bboxCoordReshape); 74 | }) 75 | // eslint-disable-next-line 76 | anchorBBoxes = tf.concat(anchorBBoxes, 0); 77 | return anchorBBoxes; 78 | } 79 | 80 | // nms function 81 | function nonMaxSuppression(bboxes, confidences, confThresh, iouThresh, width, height, maxOutputSize=100) { 82 | const bboxMaxFlag = tf.argMax(confidences, -1); 83 | const bboxConf = tf.max(confidences, -1); 84 | const keepIndices = tf.image.nonMaxSuppression(bboxes, bboxConf, maxOutputSize, iouThresh, confThresh); 85 | // eslint-disable-next-line 86 | let results = [] 87 | const keepIndicesData = keepIndices.dataSync(); 88 | const bboxConfData = bboxConf.dataSync(); 89 | const bboxMaxFlagData = bboxMaxFlag.dataSync(); 90 | const bboxesData = bboxes.dataSync(); 91 | // eslint-disable-next-line 92 | keepIndicesData.map((idx) => { 93 | const xmin = Math.round(Math.max(bboxesData[4*idx + 1] * width, 0)); 94 | const ymin = Math.round(Math.max(bboxesData[4*idx + 0] * height, 0)); 95 | const xmax = Math.round(Math.min(bboxesData[4*idx+3] * width, width)) 96 | const ymax = Math.round(Math.min(bboxesData[4*idx + 2] * height, height)); 97 | results.push([[xmin, ymin, xmax, ymax], 98 | bboxMaxFlagData[idx], bboxConfData[idx]]) 99 | }); 100 | return results; 101 | } 102 | 103 | 104 | async function loadModel() { 105 | model = await tf.loadLayersModel('./tfjs-models/model.json'); 106 | return model; 107 | } 108 | 109 | async function detect(imgToPredict) { 110 | const detectionResults = tf.tidy(() => { 111 | // eslint-disable-next-line 112 | const width = imgToPredict.width; 113 | // eslint-disable-next-line 114 | const height = imgToPredict.height; 115 | let img = tf.browser.fromPixels(imgToPredict); 116 | img = tf.image.resizeBilinear(img, [260, 260]); 117 | img = img.expandDims(0).toFloat().div(tf.scalar(255)); 118 | const [rawBBoxes, rawConfidences] = model.predict(img); 119 | const bboxes = decodeBBox(anchors, tf.squeeze(rawBBoxes)); 120 | const Results = nonMaxSuppression(bboxes, tf.squeeze(rawConfidences), 0.5, 0.5, width, height ); 121 | return Results; 122 | }) 123 | return detectionResults; 124 | } 125 | 126 | featureMapSizes = [[33, 33], [17, 17], [9, 9], [5, 5], [3,3]]; 127 | anchorSizes = [[0.04, 0.056], [0.08, 0.11], [0.16, 0.22], [0.32, 0.45], [0.64, 0.72]]; 128 | anchorRatios = [[1, 0.62, 0.42], [1, 0.62, 0.42], [1, 0.62, 0.42], [1, 0.62, 0.42], [1, 0.62, 0.42]]; 129 | 130 | let anchors = anchorGenerator(featureMapSizes, anchorSizes, anchorRatios); 131 | -------------------------------------------------------------------------------- /js/index.js: -------------------------------------------------------------------------------- 1 | 2 | const image = document.getElementById('image'); 3 | const canvas = document.getElementById('canvas'); 4 | const dropContainer = document.getElementById('container'); 5 | const warning = document.getElementById('warning'); 6 | const fileInput = document.getElementById('fileUploader'); 7 | 8 | const id2class = {0:"有口罩", 1:"无口罩"}; 9 | let model; 10 | 11 | function preventDefaults(e) { 12 | e.preventDefault() 13 | e.stopPropagation() 14 | }; 15 | 16 | function windowResized() { 17 | let windowW = window.innerWidth; 18 | if (windowW < 480 && windowW >= 200) { 19 | dropContainer.style.display = 'block'; 20 | } else if (windowW < 200) { 21 | dropContainer.style.display = 'none'; 22 | } else { 23 | dropContainer.style.display = 'block'; 24 | } 25 | } 26 | 27 | ['dragenter', 'dragover'].forEach(eventName => { 28 | dropContainer.addEventListener(eventName, e => dropContainer.classList.add('highlight'), false) 29 | }); 30 | 31 | ['dragleave', 'drop'].forEach(eventName => { 32 | dropContainer.addEventListener(eventName, e => dropContainer.classList.remove('highlight'), false) 33 | }); 34 | 35 | ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => { 36 | dropContainer.addEventListener(eventName, preventDefaults, false) 37 | }); 38 | 39 | dropContainer.addEventListener('drop', gotImage, false) 40 | 41 | 42 | function gotImage(e) { 43 | const dt = e.dataTransfer; 44 | const files = dt.files; 45 | if (files.length > 1) { 46 | console.error('upload only one file'); 47 | } 48 | const file = files[0]; 49 | const imageType = /image.*/; 50 | if (file.type.match(imageType)) { 51 | warning.innerHTML = ''; 52 | const reader = new FileReader(); 53 | reader.readAsDataURL(file); 54 | reader.onloadend = () => { 55 | image.src = reader.result; 56 | setTimeout(detectImage, 100); 57 | } 58 | } else { 59 | image.src = 'images/demo.jpg'; 60 | setTimeout(detectImage, 100); 61 | warning.innerHTML = 'Please drop an image file.' 62 | } 63 | } 64 | 65 | function handleFiles() { 66 | const curFiles = fileInput.files; 67 | if (curFiles.length === 0) { 68 | image.src = 'images/demo.jpg'; 69 | setTimeout(detectImage, 100); 70 | warning.innerHTML = 'No image selected for upload'; 71 | } else { 72 | image.src = window.URL.createObjectURL(curFiles[0]); 73 | warning.innerHTML = ''; 74 | setTimeout(detectImage, 100); 75 | } 76 | } 77 | 78 | function clickUploader() { 79 | fileInput.click(); 80 | } 81 | 82 | // 检测人脸和口罩 83 | function detectImage() { 84 | detect(image).then((results) => { 85 | canvas.width = image.width; 86 | canvas.height = image.height; 87 | ctx = canvas.getContext('2d'); 88 | ctx.clearRect(0, 0, canvas.width, canvas.height); 89 | ctx.drawImage(image, 0, 0); 90 | for(bboxInfo of results) { 91 | bbox = bboxInfo[0]; 92 | classID = bboxInfo[1]; 93 | score = bboxInfo[2]; 94 | 95 | ctx.beginPath(); 96 | ctx.lineWidth="4"; 97 | if (classID == 0) { 98 | ctx.strokeStyle="green"; 99 | ctx.fillStyle="green"; 100 | } else { 101 | ctx.strokeStyle="red"; 102 | ctx.fillStyle="red"; 103 | } 104 | 105 | ctx.rect(bbox[0], bbox[1], bbox[2] - bbox[0], bbox[3] - bbox[1]); 106 | ctx.stroke(); 107 | 108 | ctx.font="30px Arial"; 109 | 110 | let content = id2class[classID] + " " + score.toFixed(2); 111 | ctx.fillText(content, bbox[0], bbox[1] < 20 ? bbox[1] + 30 : bbox[1]-5); 112 | } 113 | }) 114 | } 115 | 116 | // 初始化函数 117 | async function setup() { 118 | await loadModel(); 119 | // Make a detection with the default image 120 | detectImage(); 121 | } 122 | 123 | setup(); 124 | -------------------------------------------------------------------------------- /tfjs-models/group1-shard1of1.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AIZOOTech/mask-detection-web-demo/b4425bc5fa5a75bd52e17a53a1a0b0243f8e5e7a/tfjs-models/group1-shard1of1.bin -------------------------------------------------------------------------------- /tfjs-models/model.json: -------------------------------------------------------------------------------- 1 | {"format": "layers-model", "generatedBy": "keras v2.2.4", "convertedBy": "TensorFlow.js Converter v1.5.2", "modelTopology": {"keras_version": "2.2.4", "backend": "tensorflow", "model_config": {"class_name": "Model", "config": {"layers": [{"class_name": "InputLayer", "config": {"dtype": "float32", "batch_input_shape": [null, 260, 260, 3], "name": "data", "sparse": false}, "inbound_nodes": [], "name": "data"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "scale": 2.0, "seed": null, "mode": "fan_in"}}, "name": "conv2d_0", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "filters": 32, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": false, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["data", 0, 0, {}]]], "name": "conv2d_0"}, {"class_name": "BatchNormalization", "config": {"beta_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_0_bn", "epsilon": 0.001, "trainable": true, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_initializer": {"class_name": "Zeros", "config": {}}, "scale": true, "axis": 3, "gamma_constraint": null, "gamma_regularizer": null, "beta_regularizer": null, "momentum": 0.99, "center": true}, "inbound_nodes": [[["conv2d_0", 0, 0, {}]]], "name": "conv2d_0_bn"}, {"class_name": "Activation", "config": {"activation": "relu", "trainable": true, "name": "conv2d_0_activation"}, "inbound_nodes": [[["conv2d_0_bn", 0, 0, {}]]], "name": "conv2d_0_activation"}, {"class_name": "MaxPooling2D", "config": {"name": "maxpool2d_0", "trainable": true, "data_format": "channels_last", "pool_size": [2, 2], "padding": "same", "strides": [2, 2]}, "inbound_nodes": [[["conv2d_0_activation", 0, 0, {}]]], "name": "maxpool2d_0"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "scale": 2.0, "seed": null, "mode": "fan_in"}}, "name": "conv2d_1", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "filters": 64, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": false, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["maxpool2d_0", 0, 0, {}]]], "name": "conv2d_1"}, {"class_name": "BatchNormalization", "config": {"beta_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_1_bn", "epsilon": 0.001, "trainable": true, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_initializer": {"class_name": "Zeros", "config": {}}, "scale": true, "axis": 3, "gamma_constraint": null, "gamma_regularizer": null, "beta_regularizer": null, "momentum": 0.99, "center": true}, "inbound_nodes": [[["conv2d_1", 0, 0, {}]]], "name": "conv2d_1_bn"}, {"class_name": "Activation", "config": {"activation": "relu", "trainable": true, "name": "conv2d_1_activation"}, "inbound_nodes": [[["conv2d_1_bn", 0, 0, {}]]], "name": "conv2d_1_activation"}, {"class_name": "MaxPooling2D", "config": {"name": "maxpool2d_1", "trainable": true, "data_format": "channels_last", "pool_size": [2, 2], "padding": "same", "strides": [2, 2]}, "inbound_nodes": [[["conv2d_1_activation", 0, 0, {}]]], "name": "maxpool2d_1"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "scale": 2.0, "seed": null, "mode": "fan_in"}}, "name": "conv2d_2", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "filters": 64, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": false, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["maxpool2d_1", 0, 0, {}]]], "name": "conv2d_2"}, {"class_name": "BatchNormalization", "config": {"beta_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_2_bn", "epsilon": 0.001, "trainable": true, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_initializer": {"class_name": "Zeros", "config": {}}, "scale": true, "axis": 3, "gamma_constraint": null, "gamma_regularizer": null, "beta_regularizer": null, "momentum": 0.99, "center": true}, "inbound_nodes": [[["conv2d_2", 0, 0, {}]]], "name": "conv2d_2_bn"}, {"class_name": "Activation", "config": {"activation": "relu", "trainable": true, "name": "conv2d_2_activation"}, "inbound_nodes": [[["conv2d_2_bn", 0, 0, {}]]], "name": "conv2d_2_activation"}, {"class_name": "MaxPooling2D", "config": {"name": "maxpool2d_2", "trainable": true, "data_format": "channels_last", "pool_size": [2, 2], "padding": "same", "strides": [2, 2]}, "inbound_nodes": [[["conv2d_2_activation", 0, 0, {}]]], "name": "maxpool2d_2"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "scale": 2.0, "seed": null, "mode": "fan_in"}}, "name": "conv2d_3", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "filters": 64, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": false, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["maxpool2d_2", 0, 0, {}]]], "name": "conv2d_3"}, {"class_name": "BatchNormalization", "config": {"beta_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_3_bn", "epsilon": 0.001, "trainable": true, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_initializer": {"class_name": "Zeros", "config": {}}, "scale": true, "axis": 3, "gamma_constraint": null, "gamma_regularizer": null, "beta_regularizer": null, "momentum": 0.99, "center": true}, "inbound_nodes": [[["conv2d_3", 0, 0, {}]]], "name": "conv2d_3_bn"}, {"class_name": "Activation", "config": {"activation": "relu", "trainable": true, "name": "conv2d_3_activation"}, "inbound_nodes": [[["conv2d_3_bn", 0, 0, {}]]], "name": "conv2d_3_activation"}, {"class_name": "MaxPooling2D", "config": {"name": "maxpool2d_3", "trainable": true, "data_format": "channels_last", "pool_size": [2, 2], "padding": "same", "strides": [2, 2]}, "inbound_nodes": [[["conv2d_3_activation", 0, 0, {}]]], "name": "maxpool2d_3"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "scale": 2.0, "seed": null, "mode": "fan_in"}}, "name": "conv2d_4", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "filters": 128, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": false, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["maxpool2d_3", 0, 0, {}]]], "name": "conv2d_4"}, {"class_name": "BatchNormalization", "config": {"beta_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_4_bn", "epsilon": 0.001, "trainable": true, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_initializer": {"class_name": "Zeros", "config": {}}, "scale": true, "axis": 3, "gamma_constraint": null, "gamma_regularizer": null, "beta_regularizer": null, "momentum": 0.99, "center": true}, "inbound_nodes": [[["conv2d_4", 0, 0, {}]]], "name": "conv2d_4_bn"}, {"class_name": "Activation", "config": {"activation": "relu", "trainable": true, "name": "conv2d_4_activation"}, "inbound_nodes": [[["conv2d_4_bn", 0, 0, {}]]], "name": "conv2d_4_activation"}, {"class_name": "MaxPooling2D", "config": {"name": "maxpool2d_4", "trainable": true, "data_format": "channels_last", "pool_size": [2, 2], "padding": "same", "strides": [2, 2]}, "inbound_nodes": [[["conv2d_4_activation", 0, 0, {}]]], "name": "maxpool2d_4"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "scale": 2.0, "seed": null, "mode": "fan_in"}}, "name": "conv2d_5", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "filters": 128, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": false, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["maxpool2d_4", 0, 0, {}]]], "name": "conv2d_5"}, {"class_name": "BatchNormalization", "config": {"beta_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_5_bn", "epsilon": 0.001, "trainable": true, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_initializer": {"class_name": "Zeros", "config": {}}, "scale": true, "axis": 3, "gamma_constraint": null, "gamma_regularizer": null, "beta_regularizer": null, "momentum": 0.99, "center": true}, "inbound_nodes": [[["conv2d_5", 0, 0, {}]]], "name": "conv2d_5_bn"}, {"class_name": "Activation", "config": {"activation": "relu", "trainable": true, "name": "conv2d_5_activation"}, "inbound_nodes": [[["conv2d_5_bn", 0, 0, {}]]], "name": "conv2d_5_activation"}, {"class_name": "MaxPooling2D", "config": {"name": "maxpool2d_5", "trainable": true, "data_format": "channels_last", "pool_size": [2, 2], "padding": "same", "strides": [2, 2]}, "inbound_nodes": [[["conv2d_5_activation", 0, 0, {}]]], "name": "maxpool2d_5"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "scale": 2.0, "seed": null, "mode": "fan_in"}}, "name": "conv2d_6", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "filters": 64, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": false, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["maxpool2d_5", 0, 0, {}]]], "name": "conv2d_6"}, {"class_name": "BatchNormalization", "config": {"beta_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_6_bn", "epsilon": 0.001, "trainable": true, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_initializer": {"class_name": "Zeros", "config": {}}, "scale": true, "axis": 3, "gamma_constraint": null, "gamma_regularizer": null, "beta_regularizer": null, "momentum": 0.99, "center": true}, "inbound_nodes": [[["conv2d_6", 0, 0, {}]]], "name": "conv2d_6_bn"}, {"class_name": "Activation", "config": {"activation": "relu", "trainable": true, "name": "conv2d_6_activation"}, "inbound_nodes": [[["conv2d_6_bn", 0, 0, {}]]], "name": "conv2d_6_activation"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "scale": 2.0, "seed": null, "mode": "fan_in"}}, "name": "conv2d_7", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "valid", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "filters": 64, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": false, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["conv2d_6_activation", 0, 0, {}]]], "name": "conv2d_7"}, {"class_name": "BatchNormalization", "config": {"beta_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "name": "conv2d_7_bn", "epsilon": 0.001, "trainable": true, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_initializer": {"class_name": "Zeros", "config": {}}, "scale": true, "axis": 3, "gamma_constraint": null, "gamma_regularizer": null, "beta_regularizer": null, "momentum": 0.99, "center": true}, "inbound_nodes": [[["conv2d_7", 0, 0, {}]]], "name": "conv2d_7_bn"}, {"class_name": "Activation", "config": {"activation": "relu", "trainable": true, "name": "conv2d_7_activation"}, "inbound_nodes": [[["conv2d_7_bn", 0, 0, {}]]], "name": "conv2d_7_activation"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "scale": 2.0, "seed": null, "mode": "fan_in"}}, "name": "cls_0_insert_conv2d", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "filters": 64, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": false, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["conv2d_3_activation", 0, 0, {}]]], "name": "cls_0_insert_conv2d"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "scale": 2.0, "seed": null, "mode": "fan_in"}}, "name": "cls_1_insert_conv2d", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "filters": 64, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": false, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["conv2d_4_activation", 0, 0, {}]]], "name": "cls_1_insert_conv2d"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "scale": 2.0, "seed": null, "mode": "fan_in"}}, "name": "cls_2_insert_conv2d", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "filters": 64, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": false, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["conv2d_5_activation", 0, 0, {}]]], "name": "cls_2_insert_conv2d"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "scale": 2.0, "seed": null, "mode": "fan_in"}}, "name": "cls_3_insert_conv2d", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "filters": 64, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": false, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["conv2d_6_activation", 0, 0, {}]]], "name": "cls_3_insert_conv2d"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "scale": 2.0, "seed": null, "mode": "fan_in"}}, "name": "cls_4_insert_conv2d", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "filters": 64, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": false, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["conv2d_7_activation", 0, 0, {}]]], "name": "cls_4_insert_conv2d"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "scale": 2.0, "seed": null, "mode": "fan_in"}}, "name": "loc_0_insert_conv2d", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "filters": 64, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": false, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["conv2d_3_activation", 0, 0, {}]]], "name": "loc_0_insert_conv2d"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "scale": 2.0, "seed": null, "mode": "fan_in"}}, "name": "loc_1_insert_conv2d", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "filters": 64, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": false, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["conv2d_4_activation", 0, 0, {}]]], "name": "loc_1_insert_conv2d"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "scale": 2.0, "seed": null, "mode": "fan_in"}}, "name": "loc_2_insert_conv2d", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "filters": 64, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": false, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["conv2d_5_activation", 0, 0, {}]]], "name": "loc_2_insert_conv2d"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "scale": 2.0, "seed": null, "mode": "fan_in"}}, "name": "loc_3_insert_conv2d", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "filters": 64, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": false, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["conv2d_6_activation", 0, 0, {}]]], "name": "loc_3_insert_conv2d"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "normal", "scale": 2.0, "seed": null, "mode": "fan_in"}}, "name": "loc_4_insert_conv2d", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": {"class_name": "L1L2", "config": {"l2": 9.999999747378752e-05, "l1": 0.0}}, "filters": 64, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": false, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["conv2d_7_activation", 0, 0, {}]]], "name": "loc_4_insert_conv2d"}, {"class_name": "BatchNormalization", "config": {"beta_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "name": "cls_0_insert_conv2d_bn", "epsilon": 0.001, "trainable": true, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_initializer": {"class_name": "Zeros", "config": {}}, "scale": true, "axis": 3, "gamma_constraint": null, "gamma_regularizer": null, "beta_regularizer": null, "momentum": 0.99, "center": true}, "inbound_nodes": [[["cls_0_insert_conv2d", 0, 0, {}]]], "name": "cls_0_insert_conv2d_bn"}, {"class_name": "BatchNormalization", "config": {"beta_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "name": "cls_1_insert_conv2d_bn", "epsilon": 0.001, "trainable": true, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_initializer": {"class_name": "Zeros", "config": {}}, "scale": true, "axis": 3, "gamma_constraint": null, "gamma_regularizer": null, "beta_regularizer": null, "momentum": 0.99, "center": true}, "inbound_nodes": [[["cls_1_insert_conv2d", 0, 0, {}]]], "name": "cls_1_insert_conv2d_bn"}, {"class_name": "BatchNormalization", "config": {"beta_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "name": "cls_2_insert_conv2d_bn", "epsilon": 0.001, "trainable": true, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_initializer": {"class_name": "Zeros", "config": {}}, "scale": true, "axis": 3, "gamma_constraint": null, "gamma_regularizer": null, "beta_regularizer": null, "momentum": 0.99, "center": true}, "inbound_nodes": [[["cls_2_insert_conv2d", 0, 0, {}]]], "name": "cls_2_insert_conv2d_bn"}, {"class_name": "BatchNormalization", "config": {"beta_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "name": "cls_3_insert_conv2d_bn", "epsilon": 0.001, "trainable": true, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_initializer": {"class_name": "Zeros", "config": {}}, "scale": true, "axis": 3, "gamma_constraint": null, "gamma_regularizer": null, "beta_regularizer": null, "momentum": 0.99, "center": true}, "inbound_nodes": [[["cls_3_insert_conv2d", 0, 0, {}]]], "name": "cls_3_insert_conv2d_bn"}, {"class_name": "BatchNormalization", "config": {"beta_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "name": "cls_4_insert_conv2d_bn", "epsilon": 0.001, "trainable": true, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_initializer": {"class_name": "Zeros", "config": {}}, "scale": true, "axis": 3, "gamma_constraint": null, "gamma_regularizer": null, "beta_regularizer": null, "momentum": 0.99, "center": true}, "inbound_nodes": [[["cls_4_insert_conv2d", 0, 0, {}]]], "name": "cls_4_insert_conv2d_bn"}, {"class_name": "BatchNormalization", "config": {"beta_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "name": "loc_0_insert_conv2d_bn", "epsilon": 0.001, "trainable": true, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_initializer": {"class_name": "Zeros", "config": {}}, "scale": true, "axis": 3, "gamma_constraint": null, "gamma_regularizer": null, "beta_regularizer": null, "momentum": 0.99, "center": true}, "inbound_nodes": [[["loc_0_insert_conv2d", 0, 0, {}]]], "name": "loc_0_insert_conv2d_bn"}, {"class_name": "BatchNormalization", "config": {"beta_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "name": "loc_1_insert_conv2d_bn", "epsilon": 0.001, "trainable": true, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_initializer": {"class_name": "Zeros", "config": {}}, "scale": true, "axis": 3, "gamma_constraint": null, "gamma_regularizer": null, "beta_regularizer": null, "momentum": 0.99, "center": true}, "inbound_nodes": [[["loc_1_insert_conv2d", 0, 0, {}]]], "name": "loc_1_insert_conv2d_bn"}, {"class_name": "BatchNormalization", "config": {"beta_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "name": "loc_2_insert_conv2d_bn", "epsilon": 0.001, "trainable": true, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_initializer": {"class_name": "Zeros", "config": {}}, "scale": true, "axis": 3, "gamma_constraint": null, "gamma_regularizer": null, "beta_regularizer": null, "momentum": 0.99, "center": true}, "inbound_nodes": [[["loc_2_insert_conv2d", 0, 0, {}]]], "name": "loc_2_insert_conv2d_bn"}, {"class_name": "BatchNormalization", "config": {"beta_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "name": "loc_3_insert_conv2d_bn", "epsilon": 0.001, "trainable": true, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_initializer": {"class_name": "Zeros", "config": {}}, "scale": true, "axis": 3, "gamma_constraint": null, "gamma_regularizer": null, "beta_regularizer": null, "momentum": 0.99, "center": true}, "inbound_nodes": [[["loc_3_insert_conv2d", 0, 0, {}]]], "name": "loc_3_insert_conv2d_bn"}, {"class_name": "BatchNormalization", "config": {"beta_constraint": null, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "name": "loc_4_insert_conv2d_bn", "epsilon": 0.001, "trainable": true, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_initializer": {"class_name": "Zeros", "config": {}}, "scale": true, "axis": 3, "gamma_constraint": null, "gamma_regularizer": null, "beta_regularizer": null, "momentum": 0.99, "center": true}, "inbound_nodes": [[["loc_4_insert_conv2d", 0, 0, {}]]], "name": "loc_4_insert_conv2d_bn"}, {"class_name": "Activation", "config": {"activation": "relu", "trainable": true, "name": "cls_0_insert_conv2d_activation"}, "inbound_nodes": [[["cls_0_insert_conv2d_bn", 0, 0, {}]]], "name": "cls_0_insert_conv2d_activation"}, {"class_name": "Activation", "config": {"activation": "relu", "trainable": true, "name": "cls_1_insert_conv2d_activation"}, "inbound_nodes": [[["cls_1_insert_conv2d_bn", 0, 0, {}]]], "name": "cls_1_insert_conv2d_activation"}, {"class_name": "Activation", "config": {"activation": "relu", "trainable": true, "name": "cls_2_insert_conv2d_activation"}, "inbound_nodes": [[["cls_2_insert_conv2d_bn", 0, 0, {}]]], "name": "cls_2_insert_conv2d_activation"}, {"class_name": "Activation", "config": {"activation": "relu", "trainable": true, "name": "cls_3_insert_conv2d_activation"}, "inbound_nodes": [[["cls_3_insert_conv2d_bn", 0, 0, {}]]], "name": "cls_3_insert_conv2d_activation"}, {"class_name": "Activation", "config": {"activation": "relu", "trainable": true, "name": "cls_4_insert_conv2d_activation"}, "inbound_nodes": [[["cls_4_insert_conv2d_bn", 0, 0, {}]]], "name": "cls_4_insert_conv2d_activation"}, {"class_name": "Activation", "config": {"activation": "relu", "trainable": true, "name": "loc_0_insert_conv2d_activation"}, "inbound_nodes": [[["loc_0_insert_conv2d_bn", 0, 0, {}]]], "name": "loc_0_insert_conv2d_activation"}, {"class_name": "Activation", "config": {"activation": "relu", "trainable": true, "name": "loc_1_insert_conv2d_activation"}, "inbound_nodes": [[["loc_1_insert_conv2d_bn", 0, 0, {}]]], "name": "loc_1_insert_conv2d_activation"}, {"class_name": "Activation", "config": {"activation": "relu", "trainable": true, "name": "loc_2_insert_conv2d_activation"}, "inbound_nodes": [[["loc_2_insert_conv2d_bn", 0, 0, {}]]], "name": "loc_2_insert_conv2d_activation"}, {"class_name": "Activation", "config": {"activation": "relu", "trainable": true, "name": "loc_3_insert_conv2d_activation"}, "inbound_nodes": [[["loc_3_insert_conv2d_bn", 0, 0, {}]]], "name": "loc_3_insert_conv2d_activation"}, {"class_name": "Activation", "config": {"activation": "relu", "trainable": true, "name": "loc_4_insert_conv2d_activation"}, "inbound_nodes": [[["loc_4_insert_conv2d_bn", 0, 0, {}]]], "name": "loc_4_insert_conv2d_activation"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "scale": 1.0, "seed": null, "mode": "fan_avg"}}, "name": "cls_0_conv", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": null, "filters": 8, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": true, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["cls_0_insert_conv2d_activation", 0, 0, {}]]], "name": "cls_0_conv"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "scale": 1.0, "seed": null, "mode": "fan_avg"}}, "name": "cls_1_conv", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": null, "filters": 8, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": true, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["cls_1_insert_conv2d_activation", 0, 0, {}]]], "name": "cls_1_conv"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "scale": 1.0, "seed": null, "mode": "fan_avg"}}, "name": "cls_2_conv", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": null, "filters": 8, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": true, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["cls_2_insert_conv2d_activation", 0, 0, {}]]], "name": "cls_2_conv"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "scale": 1.0, "seed": null, "mode": "fan_avg"}}, "name": "cls_3_conv", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": null, "filters": 8, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": true, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["cls_3_insert_conv2d_activation", 0, 0, {}]]], "name": "cls_3_conv"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "scale": 1.0, "seed": null, "mode": "fan_avg"}}, "name": "cls_4_conv", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": null, "filters": 8, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": true, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["cls_4_insert_conv2d_activation", 0, 0, {}]]], "name": "cls_4_conv"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "scale": 1.0, "seed": null, "mode": "fan_avg"}}, "name": "loc_0_conv", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": null, "filters": 16, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": true, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["loc_0_insert_conv2d_activation", 0, 0, {}]]], "name": "loc_0_conv"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "scale": 1.0, "seed": null, "mode": "fan_avg"}}, "name": "loc_1_conv", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": null, "filters": 16, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": true, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["loc_1_insert_conv2d_activation", 0, 0, {}]]], "name": "loc_1_conv"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "scale": 1.0, "seed": null, "mode": "fan_avg"}}, "name": "loc_2_conv", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": null, "filters": 16, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": true, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["loc_2_insert_conv2d_activation", 0, 0, {}]]], "name": "loc_2_conv"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "scale": 1.0, "seed": null, "mode": "fan_avg"}}, "name": "loc_3_conv", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": null, "filters": 16, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": true, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["loc_3_insert_conv2d_activation", 0, 0, {}]]], "name": "loc_3_conv"}, {"class_name": "Conv2D", "config": {"kernel_constraint": null, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"distribution": "uniform", "scale": 1.0, "seed": null, "mode": "fan_avg"}}, "name": "loc_4_conv", "bias_regularizer": null, "bias_constraint": null, "activation": "linear", "trainable": true, "data_format": "channels_last", "padding": "same", "strides": [1, 1], "dilation_rate": [1, 1], "kernel_regularizer": null, "filters": 16, "bias_initializer": {"class_name": "Zeros", "config": {}}, "use_bias": true, "activity_regularizer": null, "kernel_size": [3, 3]}, "inbound_nodes": [[["loc_4_insert_conv2d_activation", 0, 0, {}]]], "name": "loc_4_conv"}, {"class_name": "Reshape", "config": {"target_shape": [-1, 2], "trainable": true, "name": "cls_0_reshape"}, "inbound_nodes": [[["cls_0_conv", 0, 0, {}]]], "name": "cls_0_reshape"}, {"class_name": "Reshape", "config": {"target_shape": [-1, 2], "trainable": true, "name": "cls_1_reshape"}, "inbound_nodes": [[["cls_1_conv", 0, 0, {}]]], "name": "cls_1_reshape"}, {"class_name": "Reshape", "config": {"target_shape": [-1, 2], "trainable": true, "name": "cls_2_reshape"}, "inbound_nodes": [[["cls_2_conv", 0, 0, {}]]], "name": "cls_2_reshape"}, {"class_name": "Reshape", "config": {"target_shape": [-1, 2], "trainable": true, "name": "cls_3_reshape"}, "inbound_nodes": [[["cls_3_conv", 0, 0, {}]]], "name": "cls_3_reshape"}, {"class_name": "Reshape", "config": {"target_shape": [-1, 2], "trainable": true, "name": "cls_4_reshape"}, "inbound_nodes": [[["cls_4_conv", 0, 0, {}]]], "name": "cls_4_reshape"}, {"class_name": "Reshape", "config": {"target_shape": [-1, 4], "trainable": true, "name": "loc_0_reshape"}, "inbound_nodes": [[["loc_0_conv", 0, 0, {}]]], "name": "loc_0_reshape"}, {"class_name": "Reshape", "config": {"target_shape": [-1, 4], "trainable": true, "name": "loc_1_reshape"}, "inbound_nodes": [[["loc_1_conv", 0, 0, {}]]], "name": "loc_1_reshape"}, {"class_name": "Reshape", "config": {"target_shape": [-1, 4], "trainable": true, "name": "loc_2_reshape"}, "inbound_nodes": [[["loc_2_conv", 0, 0, {}]]], "name": "loc_2_reshape"}, {"class_name": "Reshape", "config": {"target_shape": [-1, 4], "trainable": true, "name": "loc_3_reshape"}, "inbound_nodes": [[["loc_3_conv", 0, 0, {}]]], "name": "loc_3_reshape"}, {"class_name": "Reshape", "config": {"target_shape": [-1, 4], "trainable": true, "name": "loc_4_reshape"}, "inbound_nodes": [[["loc_4_conv", 0, 0, {}]]], "name": "loc_4_reshape"}, {"class_name": "Activation", "config": {"activation": "sigmoid", "trainable": true, "name": "cls_0_activation"}, "inbound_nodes": [[["cls_0_reshape", 0, 0, {}]]], "name": "cls_0_activation"}, {"class_name": "Activation", "config": {"activation": "sigmoid", "trainable": true, "name": "cls_1_activation"}, "inbound_nodes": [[["cls_1_reshape", 0, 0, {}]]], "name": "cls_1_activation"}, {"class_name": "Activation", "config": {"activation": "sigmoid", "trainable": true, "name": "cls_2_activation"}, "inbound_nodes": [[["cls_2_reshape", 0, 0, {}]]], "name": "cls_2_activation"}, {"class_name": "Activation", "config": {"activation": "sigmoid", "trainable": true, "name": "cls_3_activation"}, "inbound_nodes": [[["cls_3_reshape", 0, 0, {}]]], "name": "cls_3_activation"}, {"class_name": "Activation", "config": {"activation": "sigmoid", "trainable": true, "name": "cls_4_activation"}, "inbound_nodes": [[["cls_4_reshape", 0, 0, {}]]], "name": "cls_4_activation"}, {"class_name": "Concatenate", "config": {"trainable": true, "name": "loc_branch_concat", "axis": 1}, "inbound_nodes": [[["loc_0_reshape", 0, 0, {}], ["loc_1_reshape", 0, 0, {}], ["loc_2_reshape", 0, 0, {}], ["loc_3_reshape", 0, 0, {}], ["loc_4_reshape", 0, 0, {}]]], "name": "loc_branch_concat"}, {"class_name": "Concatenate", "config": {"trainable": true, "name": "cls_branch_concat", "axis": 1}, "inbound_nodes": [[["cls_0_activation", 0, 0, {}], ["cls_1_activation", 0, 0, {}], ["cls_2_activation", 0, 0, {}], ["cls_3_activation", 0, 0, {}], ["cls_4_activation", 0, 0, {}]]], "name": "cls_branch_concat"}], "input_layers": [["data", 0, 0]], "output_layers": [["loc_branch_concat", 0, 0], ["cls_branch_concat", 0, 0]], "name": "model_2"}}, "training_config": {"metrics": [], "loss": ["loc_loss", "cls_loss"], "optimizer_config": {"class_name": "Adam", "config": {"beta_1": 0.8999999761581421, "beta_2": 0.9990000128746033, "decay": 0.0, "epsilon": 1e-07, "amsgrad": false, "lr": 0.0004923854139633477}}, "loss_weights": [1, 1], "sample_weight_mode": null}}, "weightsManifest": [{"paths": ["group1-shard1of1.bin"], "weights": [{"name": "cls_0_conv/kernel", "shape": [3, 3, 64, 8], "dtype": "float32"}, {"name": "cls_0_conv/bias", "shape": [8], "dtype": "float32"}, {"name": "cls_0_insert_conv2d/kernel", "shape": [3, 3, 64, 64], "dtype": "float32"}, {"name": "cls_0_insert_conv2d_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "cls_0_insert_conv2d_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "cls_0_insert_conv2d_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "cls_0_insert_conv2d_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "cls_1_conv/kernel", "shape": [3, 3, 64, 8], "dtype": "float32"}, {"name": "cls_1_conv/bias", "shape": [8], "dtype": "float32"}, {"name": "cls_1_insert_conv2d/kernel", "shape": [3, 3, 128, 64], "dtype": "float32"}, {"name": "cls_1_insert_conv2d_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "cls_1_insert_conv2d_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "cls_1_insert_conv2d_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "cls_1_insert_conv2d_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "cls_2_conv/kernel", "shape": [3, 3, 64, 8], "dtype": "float32"}, {"name": "cls_2_conv/bias", "shape": [8], "dtype": "float32"}, {"name": "cls_2_insert_conv2d/kernel", "shape": [3, 3, 128, 64], "dtype": "float32"}, {"name": "cls_2_insert_conv2d_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "cls_2_insert_conv2d_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "cls_2_insert_conv2d_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "cls_2_insert_conv2d_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "cls_3_conv/kernel", "shape": [3, 3, 64, 8], "dtype": "float32"}, {"name": "cls_3_conv/bias", "shape": [8], "dtype": "float32"}, {"name": "cls_3_insert_conv2d/kernel", "shape": [3, 3, 64, 64], "dtype": "float32"}, {"name": "cls_3_insert_conv2d_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "cls_3_insert_conv2d_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "cls_3_insert_conv2d_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "cls_3_insert_conv2d_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "cls_4_conv/kernel", "shape": [3, 3, 64, 8], "dtype": "float32"}, {"name": "cls_4_conv/bias", "shape": [8], "dtype": "float32"}, {"name": "cls_4_insert_conv2d/kernel", "shape": [3, 3, 64, 64], "dtype": "float32"}, {"name": "cls_4_insert_conv2d_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "cls_4_insert_conv2d_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "cls_4_insert_conv2d_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "cls_4_insert_conv2d_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "conv2d_0/kernel", "shape": [3, 3, 3, 32], "dtype": "float32"}, {"name": "conv2d_0_bn/gamma", "shape": [32], "dtype": "float32"}, {"name": "conv2d_0_bn/beta", "shape": [32], "dtype": "float32"}, {"name": "conv2d_0_bn/moving_mean", "shape": [32], "dtype": "float32"}, {"name": "conv2d_0_bn/moving_variance", "shape": [32], "dtype": "float32"}, {"name": "conv2d_1/kernel", "shape": [3, 3, 32, 64], "dtype": "float32"}, {"name": "conv2d_1_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "conv2d_1_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "conv2d_1_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "conv2d_1_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "conv2d_2/kernel", "shape": [3, 3, 64, 64], "dtype": "float32"}, {"name": "conv2d_2_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "conv2d_2_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "conv2d_2_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "conv2d_2_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "conv2d_3/kernel", "shape": [3, 3, 64, 64], "dtype": "float32"}, {"name": "conv2d_3_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "conv2d_3_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "conv2d_3_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "conv2d_3_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "conv2d_4/kernel", "shape": [3, 3, 64, 128], "dtype": "float32"}, {"name": "conv2d_4_bn/gamma", "shape": [128], "dtype": "float32"}, {"name": "conv2d_4_bn/beta", "shape": [128], "dtype": "float32"}, {"name": "conv2d_4_bn/moving_mean", "shape": [128], "dtype": "float32"}, {"name": "conv2d_4_bn/moving_variance", "shape": [128], "dtype": "float32"}, {"name": "conv2d_5/kernel", "shape": [3, 3, 128, 128], "dtype": "float32"}, {"name": "conv2d_5_bn/gamma", "shape": [128], "dtype": "float32"}, {"name": "conv2d_5_bn/beta", "shape": [128], "dtype": "float32"}, {"name": "conv2d_5_bn/moving_mean", "shape": [128], "dtype": "float32"}, {"name": "conv2d_5_bn/moving_variance", "shape": [128], "dtype": "float32"}, {"name": "conv2d_6/kernel", "shape": [3, 3, 128, 64], "dtype": "float32"}, {"name": "conv2d_6_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "conv2d_6_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "conv2d_6_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "conv2d_6_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "conv2d_7/kernel", "shape": [3, 3, 64, 64], "dtype": "float32"}, {"name": "conv2d_7_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "conv2d_7_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "conv2d_7_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "conv2d_7_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "loc_0_conv/kernel", "shape": [3, 3, 64, 16], "dtype": "float32"}, {"name": "loc_0_conv/bias", "shape": [16], "dtype": "float32"}, {"name": "loc_0_insert_conv2d/kernel", "shape": [3, 3, 64, 64], "dtype": "float32"}, {"name": "loc_0_insert_conv2d_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "loc_0_insert_conv2d_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "loc_0_insert_conv2d_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "loc_0_insert_conv2d_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "loc_1_conv/kernel", "shape": [3, 3, 64, 16], "dtype": "float32"}, {"name": "loc_1_conv/bias", "shape": [16], "dtype": "float32"}, {"name": "loc_1_insert_conv2d/kernel", "shape": [3, 3, 128, 64], "dtype": "float32"}, {"name": "loc_1_insert_conv2d_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "loc_1_insert_conv2d_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "loc_1_insert_conv2d_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "loc_1_insert_conv2d_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "loc_2_conv/kernel", "shape": [3, 3, 64, 16], "dtype": "float32"}, {"name": "loc_2_conv/bias", "shape": [16], "dtype": "float32"}, {"name": "loc_2_insert_conv2d/kernel", "shape": [3, 3, 128, 64], "dtype": "float32"}, {"name": "loc_2_insert_conv2d_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "loc_2_insert_conv2d_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "loc_2_insert_conv2d_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "loc_2_insert_conv2d_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "loc_3_conv/kernel", "shape": [3, 3, 64, 16], "dtype": "float32"}, {"name": "loc_3_conv/bias", "shape": [16], "dtype": "float32"}, {"name": "loc_3_insert_conv2d/kernel", "shape": [3, 3, 64, 64], "dtype": "float32"}, {"name": "loc_3_insert_conv2d_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "loc_3_insert_conv2d_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "loc_3_insert_conv2d_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "loc_3_insert_conv2d_bn/moving_variance", "shape": [64], "dtype": "float32"}, {"name": "loc_4_conv/kernel", "shape": [3, 3, 64, 16], "dtype": "float32"}, {"name": "loc_4_conv/bias", "shape": [16], "dtype": "float32"}, {"name": "loc_4_insert_conv2d/kernel", "shape": [3, 3, 64, 64], "dtype": "float32"}, {"name": "loc_4_insert_conv2d_bn/gamma", "shape": [64], "dtype": "float32"}, {"name": "loc_4_insert_conv2d_bn/beta", "shape": [64], "dtype": "float32"}, {"name": "loc_4_insert_conv2d_bn/moving_mean", "shape": [64], "dtype": "float32"}, {"name": "loc_4_insert_conv2d_bn/moving_variance", "shape": [64], "dtype": "float32"}]}]} --------------------------------------------------------------------------------