├── Attendance folder ├── Readme.md ├── attendance.txt └── login.txt ├── Face_Antispoofing_System-main ├── antispoofing_models │ ├── Readme.md │ ├── antispoofing_model.h5 │ └── antispoofing_model.json └── models │ ├── Readme.md │ └── haarcascade_frontalface_default.xml ├── LICENSE ├── Project Working Video Demo.mp4 ├── README.md ├── RealTimeFaceRecognitionBasedAttendanceMonitoringSystem.ipynb ├── RealTimeFaceRecognitionBasedAttendanceMonitoringSystem_Flowchart.png ├── Results ├── AcknowledgementEmail.png ├── FaceDetectionAndRecognition.png ├── LoginStudentsData.png ├── Readme.md └── RealTimeFaceRecognitionBasedAttendanceMonitoringSystem_Flowchart.png ├── SubProjects ├── Attendance Update │ ├── ATTENDANCE DATABASE UPDATE (1).mp4 │ ├── AttendanceDatabaseUpdate.ipynb │ ├── LoginUpdate1.png │ ├── LoginUpdate2.png │ └── Readme.md ├── Automatic Mailing Acknowledgement │ ├── AutomaticMailingFeature-Result.png │ ├── Automatic_Mailing_Acknowledgement.ipynb │ ├── Readme.md │ └── VIDEO GUIDANCE FOR CREATING AUTOMAINIG FEATURE (1).mp4 ├── Readme.md └── VideoCapture in GoogleColab │ └── Readme.md └── face_recognition ├── Gousemya.jpg ├── NAGASESHU.jpeg ├── NAGASESHU.jpg ├── Readme.md ├── SRISRI.png ├── Surya.jpeg ├── VAMSI.jfif ├── VAMSI.jpeg ├── VAMSI.png └── VIKAS.jpg /Attendance folder/Readme.md: -------------------------------------------------------------------------------- 1 | This Folder contains Text Database Files related to Student Attendance and Login student data. 2 | -------------------------------------------------------------------------------- /Attendance folder/attendance.txt: -------------------------------------------------------------------------------- 1 | || Attendance || 2 | <<<<<<<<<<<<----------->>>>>>>>>>>>>>> 3 | <<<<<<<<<<<<----------->>>>>>>>>>>>>>>SRISRI attended 4 | NAGASESHU attended 5 | VAMSI attended 6 | SRISRI attended 7 | NAGASESHU attended 8 | NAGASESHU attended 9 | SRISRI attended 10 | VAMSI attended 11 | NAGASESHU attended 12 | SRISRI attended 13 | SRISRI attended 14 | VIKAS attended 15 | VIKAS attended 16 | VAMSI attended 17 | NAGASESHU attended 18 | NAGASESHU attended 19 | VIKAS attended 20 | SRISRI attended 21 | SRISRI attended 22 | VIKAS attended 23 | NAGASESHU attended 24 | SRISRI attended 25 | VAMSI attended 26 | VIKAS attended 27 | SRISRI attended 28 | SRISRI attended 29 | VIKAS attended 30 | NAGASESHU attended 31 | NAGASESHU attended 32 | VAMSI attended 33 | VIKAS attended 34 | SRISRI attended 35 | VIKAS attended 36 | SRISRI attended 37 | NAGASESHU attended 38 | VIKAS attended 39 | NAGASESHU attended 40 | VIKAS attended 41 | VAMSI attended 42 | NAGASESHU attended 43 | SRISRI attended 44 | NAGASESHU attended 45 | VIKAS attended 46 | NAGASESHU attended 47 | VAMSI attended 48 | SRISRI attended 49 | SRISRI attended 50 | VIKAS attended 51 | VIKAS attended 52 | VIKAS attended 53 | VIKAS attended 54 | SRISRI attended 55 | VIKAS attended 56 | NAGASESHU attended 57 | NAGASESHU attended 58 | SRISRI attended 59 | SRISRI attended 60 | SRISRI attended 61 | SRISRI attended 62 | SRISRI attended 63 | SRISRI attended 64 | SRISRI attended 65 | NAGASESHU attended 66 | SRISRI attended 67 | NAGASESHU attended 68 | NAGASESHU attended 69 | SRISRI attended 70 | SRISRI attended 71 | NAGASESHU attended 72 | NAGASESHU attended 73 | NAGASESHU attended 74 | NAGASESHU attended 75 | VAMSI attended 76 | SRISRI attended 77 | SRISRI attended 78 | SRISRI attended 79 | SRISRI attended 80 | NAGASESHU attended 81 | NAGASESHU attended 82 | VAMSI attended 83 | VAMSI attended 84 | SRISRI attended 85 | SRISRI attended 86 | SRISRI attended 87 | SRISRI attended 88 | SRISRI attended 89 | SRISRI attended 90 | SRISRISRISRISRISRI logout on 06/04/2023 at 23:01:18 attended 91 | SRISRI login on 06/04/2023 at 23:01:28 attended 92 | SRISRI login marked on 06/04/2023 at 23:04:18 93 | SRISRI logout marked on 06/04/2023 at 23:05:32 94 | SRISRI login marked on 06/04/2023 at 23:08:52 95 | SRISRI logout marked on 06/04/2023 at 23:11:55 96 | SRISRI login marked on 06/04/2023 at 23:12:01 97 | SRISRI logout marked on 06/04/2023 at 23:14:36 98 | SRISRI login marked on 06/04/2023 at 23:14:39 99 | SRISRI logout marked on 06/04/2023 at 23:14:59 100 | SRISRI login marked on 06/04/2023 at 23:25:39 101 | SRISRI logout marked on 06/04/2023 at 23:25:47 102 | SRISRI login marked on 07/04/2023 at 11:06:17 103 | NAGASESHU logout marked on 07/04/2023 at 11:06:58 104 | NAGASESHU login marked on 07/04/2023 at 11:08:35 105 | NAGASESHU logout marked on 07/04/2023 at 11:08:40 106 | NAGASESHU login marked on 07/04/2023 at 11:08:57 107 | NAGASESHU logout marked on 07/04/2023 at 11:09:01 108 | NAGASESHU login marked on 07/04/2023 at 11:09:15 109 | NAGASESHU logout marked on 07/04/2023 at 11:10:50 110 | NAGASESHU login marked on 07/04/2023 at 11:11:01 111 | NAGASESHU logout marked on 07/04/2023 at 11:11:04 112 | NAGASESHU login marked on 07/04/2023 at 11:11:09 113 | NAGASESHU logout marked on 07/04/2023 at 11:11:14 114 | NAGASESHU login marked on 07/04/2023 at 11:12:10 115 | NAGASESHU logout marked on 07/04/2023 at 11:12:32 116 | VIKAS login marked on 07/04/2023 at 11:13:48 117 | NAGASESHU logout marked on 07/04/2023 at 11:13:52 118 | NAGASESHU login marked on 07/04/2023 at 11:13:56 119 | NAGASESHU logout marked on 07/04/2023 at 11:14:03 120 | NAGASESHU login marked on 07/04/2023 at 11:14:40 121 | NAGASESHU logout marked on 07/04/2023 at 11:14:47 122 | NAGASESHU login marked on 07/04/2023 at 11:14:51 123 | NAGASESHU logout marked on 07/04/2023 at 11:14:56 124 | VIKAS login marked on 07/04/2023 at 11:15:13 125 | NAGASESHU logout marked on 07/04/2023 at 11:15:21 126 | VIKAS logout marked on 07/04/2023 at 11:15:27 127 | NAGASESHU login marked on 07/04/2023 at 11:15:31 128 | NAGASESHU logout marked on 07/04/2023 at 11:15:39 129 | NAGASESHU login marked on 07/04/2023 at 11:16:30 130 | NAGASESHU logout marked on 07/04/2023 at 11:16:36 131 | NAGASESHU login marked on 07/04/2023 at 11:17:12 132 | NAGASESHU logout marked on 07/04/2023 at 11:17:26 133 | NAGASESHU login marked on 07/04/2023 at 11:17:31 134 | NAGASESHU logout marked on 07/04/2023 at 11:17:36 135 | NAGASESHU login marked on 07/04/2023 at 11:17:40 136 | NAGASESHU logout marked on 07/04/2023 at 11:17:44 137 | NAGASESHU login marked on 07/04/2023 at 11:20:06 138 | VIKAS login marked on 07/04/2023 at 11:20:39 139 | NAGASESHU logout marked on 07/04/2023 at 11:21:02 140 | NAGASESHU login marked on 07/04/2023 at 11:21:12 141 | NAGASESHU logout marked on 07/04/2023 at 11:21:23 142 | NAGASESHU login marked on 07/04/2023 at 11:21:29 143 | NAGASESHU logout marked on 07/04/2023 at 11:21:34 144 | VIKAS logout marked on 07/04/2023 at 11:21:51 145 | NAGASESHU logout marked on 07/04/2023 at 11:21:55 146 | SRISRI logout marked on 07/04/2023 at 13:58:15 147 | SRISRI login marked on 07/04/2023 at 13:58:18 148 | SRISRI logout marked on 07/04/2023 at 13:58:20 149 | SRISRI login marked on 07/04/2023 at 13:58:23 150 | SRISRI logout marked on 07/04/2023 at 13:58:25 151 | SRISRI login marked on 07/04/2023 at 13:58:43 152 | SRISRI logout marked on 07/04/2023 at 13:58:46 153 | SRISRI login marked on 07/04/2023 at 13:58:48 154 | VAMSI login marked on 07/04/2023 at 13:59:28 155 | SRISRI logout marked on 07/04/2023 at 14:01:48 156 | SRISRI login marked on 07/04/2023 at 14:01:50 157 | SRISRI logout marked on 07/04/2023 at 14:01:53 158 | SRISRI login marked on 07/04/2023 at 14:02:03 159 | SRISRI logout marked on 07/04/2023 at 14:02:05 160 | SRISRI login marked on 07/04/2023 at 14:02:08 161 | SRISRI logout marked on 07/04/2023 at 14:02:10 162 | SRISRI login marked on 07/04/2023 at 14:02:13 163 | SRISRI logout marked on 07/04/2023 at 14:03:55 164 | SRISRI login marked on 07/04/2023 at 14:03:59 165 | SRISRI logout marked on 07/04/2023 at 14:04:02 166 | NAGASESHU login marked on 07/04/2023 at 14:05:30 167 | SRISRI logout marked on 17/04/2023 at 12:07:21 168 | SRISRI login marked on 28/04/2023 at 17:56:39 169 | SRISRI logout marked on 28/04/2023 at 17:57:18 170 | NAGASESHU logout marked on 28/04/2023 at 17:57:43 171 | NAGASESHU login marked on 28/04/2023 at 17:57:48 172 | VAMSI logout marked on 28/04/2023 at 17:57:59 173 | VIKAS login marked on 28/04/2023 at 17:58:37 174 | VIKAS logout marked on 28/04/2023 at 17:58:41 175 | SRISRI login marked on 28/04/2023 at 18:08:07 176 | SRISRI logout marked on 28/04/2023 at 18:11:12 177 | VIKAS logout marked on 28/04/2023 at 18:17:24 178 | NAGASESHU login marked on 28/04/2023 at 18:18:54 179 | VAMSI login marked on 28/04/2023 at 18:21:00 180 | VAMSI logout marked on 28/04/2023 at 18:25:53 181 | SRISRI logout marked on 28/04/2023 at 18:25:59 182 | NAGASESHU login marked on 28/04/2023 at 18:26:03 183 | NAGASESHU logout marked on 28/04/2023 at 18:26:07 184 | NAGASESHU login marked on 28/04/2023 at 18:26:25 185 | NAGASESHU logout marked on 28/04/2023 at 18:26:45 186 | SRISRI login marked on 28/04/2023 at 18:26:53 187 | NAGASESHU logout marked on 28/04/2023 at 18:27:07 188 | SRISRI login marked on 28/04/2023 at 18:27:49 189 | NAGASESHU logout marked on 28/04/2023 at 18:28:17 190 | VIKAS login marked on 28/04/2023 at 18:28:23 191 | VIKAS logout marked on 28/04/2023 at 18:28:51 192 | NAGASESHU login marked on 28/04/2023 at 18:29:21 193 | NAGASESHU logout marked on 28/04/2023 at 18:29:28 194 | NAGASESHU login marked on 28/04/2023 at 18:29:34 195 | VIKAS logout marked on 28/04/2023 at 18:29:50 196 | SRISRI login marked on 28/04/2023 at 18:31:35 197 | NAGASESHU login marked on 28/04/2023 at 18:31:40 198 | NAGASESHU logout marked on 28/04/2023 at 18:32:03 199 | VAMSI login marked on 28/04/2023 at 18:32:16 200 | VAMSI logout marked on 28/04/2023 at 18:32:20 201 | VAMSI login marked on 28/04/2023 at 18:32:27 202 | VAMSI logout marked on 28/04/2023 at 18:33:10 203 | VAMSI login marked on 28/04/2023 at 18:33:15 204 | VAMSI logout marked on 28/04/2023 at 18:33:20 205 | VAMSI login marked on 28/04/2023 at 18:33:24 206 | SRISRI logout marked on 28/04/2023 at 18:33:29 207 | SRISRI login marked on 28/04/2023 at 18:33:59 208 | SRISRI logout marked on 28/04/2023 at 18:34:03 209 | VAMSI login marked on 28/04/2023 at 18:34:09 210 | VAMSI logout marked on 28/04/2023 at 18:34:13 211 | SRISRI login marked on 28/04/2023 at 18:34:22 212 | NAGASESHU login marked on 28/04/2023 at 18:35:07 213 | NAGASESHU logout marked on 28/04/2023 at 18:35:12 214 | NAGASESHU login marked on 28/04/2023 at 18:35:16 215 | NAGASESHU logout marked on 28/04/2023 at 18:35:22 216 | VIKAS login marked on 28/04/2023 at 18:35:27 217 | VIKAS logout marked on 28/04/2023 at 18:35:32 218 | VIKAS login marked on 28/04/2023 at 18:35:37 219 | NAGASESHU logout marked on 28/04/2023 at 18:35:41 220 | NAGASESHU login marked on 28/04/2023 at 18:35:46 221 | NAGASESHU logout marked on 28/04/2023 at 18:35:52 222 | VIKAS login marked on 28/04/2023 at 18:35:56 223 | VIKAS logout marked on 28/04/2023 at 18:36:02 224 | VIKAS login marked on 28/04/2023 at 18:36:06 225 | NAGASESHU logout marked on 28/04/2023 at 18:36:10 226 | VIKAS login marked on 28/04/2023 at 18:36:14 227 | NAGASESHU logout marked on 28/04/2023 at 18:36:34 228 | VIKAS login marked on 28/04/2023 at 18:36:48 229 | VIKAS logout marked on 28/04/2023 at 18:37:33 230 | VIKAS login marked on 28/04/2023 at 18:37:37 231 | VIKAS logout marked on 28/04/2023 at 18:37:46 232 | VIKAS login marked on 28/04/2023 at 18:37:51 233 | VIKAS logout marked on 28/04/2023 at 18:37:55 234 | VIKAS login marked on 28/04/2023 at 18:37:59 235 | NAGASESHU logout marked on 28/04/2023 at 18:38:02 236 | NAGASESHU login marked on 28/04/2023 at 18:38:06 237 | VIKAS logout marked on 28/04/2023 at 18:38:10 238 | VIKAS login marked on 28/04/2023 at 18:38:16 239 | VIKAS logout marked on 28/04/2023 at 18:38:20 240 | VIKAS login marked on 28/04/2023 at 18:38:30 241 | VIKAS logout marked on 28/04/2023 at 18:38:45 242 | VIKAS login marked on 28/04/2023 at 18:38:49 243 | VIKAS logout marked on 28/04/2023 at 18:38:53 244 | VIKAS login marked on 28/04/2023 at 18:38:58 245 | VIKAS logout marked on 28/04/2023 at 18:39:02 246 | VIKAS login marked on 28/04/2023 at 18:39:09 247 | NAGASESHU login marked on 28/04/2023 at 18:39:16 248 | VIKAS logout marked on 28/04/2023 at 18:39:21 249 | VIKAS login marked on 28/04/2023 at 18:39:25 250 | VAMSI login marked on 28/04/2023 at 18:43:45 251 | VIKAS logout marked on 28/04/2023 at 18:44:12 252 | SRISRI logout marked on 28/04/2023 at 18:45:45 253 | SRISRI login marked on 28/04/2023 at 18:46:20 254 | VAMSI logout marked on 29/04/2023 at 14:43:31 255 | VIKAS login marked on 29/04/2023 at 14:47:34 256 | VIKAS logout marked on 29/04/2023 at 14:48:59 257 | VIKAS login marked on 29/04/2023 at 14:49:07 258 | VIKAS logout marked on 29/04/2023 at 14:49:13 259 | VIKAS login marked on 29/04/2023 at 14:49:26 260 | VIKAS logout marked on 29/04/2023 at 14:49:30 261 | NAGASESHU logout marked on 02/05/2023 at 16:47:46 262 | SRISRI login marked on 02/05/2023 at 16:48:16 263 | NAGASESHU login marked on 02/05/2023 at 17:41:38 264 | NAGASESHU logout marked on 03/05/2023 at 10:54:11 265 | SRISRI logout marked on 03/05/2023 at 10:54:18 266 | SRISRI login marked on 03/05/2023 at 10:54:21 267 | VAMSI login marked on 03/05/2023 at 10:54:25 268 | NAGASESHU login marked on 03/05/2023 at 10:54:35 269 | SRISRI logout marked on 03/05/2023 at 12:13:42 270 | NAGASESHU login marked on 03/05/2023 at 13:04:15 271 | VIKAS login marked on 03/05/2023 at 13:05:16 272 | SRISRI login marked on 03/05/2023 at 20:06:07 273 | SRISRI logout marked on 03/05/2023 at 20:06:09 274 | SRISRI login marked on 03/05/2023 at 20:06:17 275 | -------------------------------------------------------------------------------- /Attendance folder/login.txt: -------------------------------------------------------------------------------- 1 | List of students in the class (or) login students list: 2 | _______________________________________________________ 3 | VAMSI 4 | NAGASESHU 5 | VIKAS 6 | SRISRI 7 | -------------------------------------------------------------------------------- /Face_Antispoofing_System-main/antispoofing_models/Readme.md: -------------------------------------------------------------------------------- 1 | This folder contains Antispoofing Model files which are used in this project to find the face is real or spoof(Fake). 2 | -------------------------------------------------------------------------------- /Face_Antispoofing_System-main/antispoofing_models/antispoofing_model.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/Face_Antispoofing_System-main/antispoofing_models/antispoofing_model.h5 -------------------------------------------------------------------------------- /Face_Antispoofing_System-main/antispoofing_models/antispoofing_model.json: -------------------------------------------------------------------------------- 1 | {"class_name": "Functional", "config": {"name": "model", "layers": [{"class_name": "InputLayer", "config": {"batch_input_shape": [null, 160, 160, 3], "dtype": "float32", "sparse": false, "ragged": false, "name": "input_1"}, "name": "input_1", "inbound_nodes": []}, {"class_name": "Conv2D", "config": {"name": "Conv1", "trainable": false, "dtype": "float32", "filters": 32, "kernel_size": [3, 3], "strides": [2, 2], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "Conv1", "inbound_nodes": [[["input_1", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "bn_Conv1", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "bn_Conv1", "inbound_nodes": [[["Conv1", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "Conv1_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "Conv1_relu", "inbound_nodes": [[["bn_Conv1", 0, 0, {}]]]}, {"class_name": "DepthwiseConv2D", "config": {"name": "expanded_conv_depthwise", "trainable": false, "dtype": "float32", "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_regularizer": null, "activity_regularizer": null, "bias_constraint": null, "depth_multiplier": 1, "depthwise_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "depthwise_regularizer": null, "depthwise_constraint": null}, "name": "expanded_conv_depthwise", "inbound_nodes": [[["Conv1_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "expanded_conv_depthwise_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "expanded_conv_depthwise_BN", "inbound_nodes": [[["expanded_conv_depthwise", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "expanded_conv_depthwise_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "expanded_conv_depthwise_relu", "inbound_nodes": [[["expanded_conv_depthwise_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "expanded_conv_project", "trainable": false, "dtype": "float32", "filters": 16, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "expanded_conv_project", "inbound_nodes": [[["expanded_conv_depthwise_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "expanded_conv_project_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "expanded_conv_project_BN", "inbound_nodes": [[["expanded_conv_project", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_1_expand", "trainable": false, "dtype": "float32", "filters": 96, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_1_expand", "inbound_nodes": [[["expanded_conv_project_BN", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_1_expand_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_1_expand_BN", "inbound_nodes": [[["block_1_expand", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_1_expand_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_1_expand_relu", "inbound_nodes": [[["block_1_expand_BN", 0, 0, {}]]]}, {"class_name": "ZeroPadding2D", "config": {"name": "block_1_pad", "trainable": false, "dtype": "float32", "padding": [[0, 1], [0, 1]], "data_format": "channels_last"}, "name": "block_1_pad", "inbound_nodes": [[["block_1_expand_relu", 0, 0, {}]]]}, {"class_name": "DepthwiseConv2D", "config": {"name": "block_1_depthwise", "trainable": false, "dtype": "float32", "kernel_size": [3, 3], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_regularizer": null, "activity_regularizer": null, "bias_constraint": null, "depth_multiplier": 1, "depthwise_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "depthwise_regularizer": null, "depthwise_constraint": null}, "name": "block_1_depthwise", "inbound_nodes": [[["block_1_pad", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_1_depthwise_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_1_depthwise_BN", "inbound_nodes": [[["block_1_depthwise", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_1_depthwise_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_1_depthwise_relu", "inbound_nodes": [[["block_1_depthwise_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_1_project", "trainable": false, "dtype": "float32", "filters": 24, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_1_project", "inbound_nodes": [[["block_1_depthwise_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_1_project_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_1_project_BN", "inbound_nodes": [[["block_1_project", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_2_expand", "trainable": false, "dtype": "float32", "filters": 144, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_2_expand", "inbound_nodes": [[["block_1_project_BN", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_2_expand_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_2_expand_BN", "inbound_nodes": [[["block_2_expand", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_2_expand_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_2_expand_relu", "inbound_nodes": [[["block_2_expand_BN", 0, 0, {}]]]}, {"class_name": "DepthwiseConv2D", "config": {"name": "block_2_depthwise", "trainable": false, "dtype": "float32", "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_regularizer": null, "activity_regularizer": null, "bias_constraint": null, "depth_multiplier": 1, "depthwise_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "depthwise_regularizer": null, "depthwise_constraint": null}, "name": "block_2_depthwise", "inbound_nodes": [[["block_2_expand_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_2_depthwise_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_2_depthwise_BN", "inbound_nodes": [[["block_2_depthwise", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_2_depthwise_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_2_depthwise_relu", "inbound_nodes": [[["block_2_depthwise_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_2_project", "trainable": false, "dtype": "float32", "filters": 24, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_2_project", "inbound_nodes": [[["block_2_depthwise_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_2_project_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_2_project_BN", "inbound_nodes": [[["block_2_project", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "block_2_add", "trainable": false, "dtype": "float32"}, "name": "block_2_add", "inbound_nodes": [[["block_1_project_BN", 0, 0, {}], ["block_2_project_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_3_expand", "trainable": false, "dtype": "float32", "filters": 144, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_3_expand", "inbound_nodes": [[["block_2_add", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_3_expand_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_3_expand_BN", "inbound_nodes": [[["block_3_expand", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_3_expand_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_3_expand_relu", "inbound_nodes": [[["block_3_expand_BN", 0, 0, {}]]]}, {"class_name": "ZeroPadding2D", "config": {"name": "block_3_pad", "trainable": false, "dtype": "float32", "padding": [[0, 1], [0, 1]], "data_format": "channels_last"}, "name": "block_3_pad", "inbound_nodes": [[["block_3_expand_relu", 0, 0, {}]]]}, {"class_name": "DepthwiseConv2D", "config": {"name": "block_3_depthwise", "trainable": false, "dtype": "float32", "kernel_size": [3, 3], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_regularizer": null, "activity_regularizer": null, "bias_constraint": null, "depth_multiplier": 1, "depthwise_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "depthwise_regularizer": null, "depthwise_constraint": null}, "name": "block_3_depthwise", "inbound_nodes": [[["block_3_pad", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_3_depthwise_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_3_depthwise_BN", "inbound_nodes": [[["block_3_depthwise", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_3_depthwise_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_3_depthwise_relu", "inbound_nodes": [[["block_3_depthwise_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_3_project", "trainable": false, "dtype": "float32", "filters": 32, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_3_project", "inbound_nodes": [[["block_3_depthwise_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_3_project_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_3_project_BN", "inbound_nodes": [[["block_3_project", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_4_expand", "trainable": false, "dtype": "float32", "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_4_expand", "inbound_nodes": [[["block_3_project_BN", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_4_expand_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_4_expand_BN", "inbound_nodes": [[["block_4_expand", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_4_expand_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_4_expand_relu", "inbound_nodes": [[["block_4_expand_BN", 0, 0, {}]]]}, {"class_name": "DepthwiseConv2D", "config": {"name": "block_4_depthwise", "trainable": false, "dtype": "float32", "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_regularizer": null, "activity_regularizer": null, "bias_constraint": null, "depth_multiplier": 1, "depthwise_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "depthwise_regularizer": null, "depthwise_constraint": null}, "name": "block_4_depthwise", "inbound_nodes": [[["block_4_expand_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_4_depthwise_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_4_depthwise_BN", "inbound_nodes": [[["block_4_depthwise", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_4_depthwise_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_4_depthwise_relu", "inbound_nodes": [[["block_4_depthwise_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_4_project", "trainable": false, "dtype": "float32", "filters": 32, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_4_project", "inbound_nodes": [[["block_4_depthwise_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_4_project_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_4_project_BN", "inbound_nodes": [[["block_4_project", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "block_4_add", "trainable": false, "dtype": "float32"}, "name": "block_4_add", "inbound_nodes": [[["block_3_project_BN", 0, 0, {}], ["block_4_project_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_5_expand", "trainable": false, "dtype": "float32", "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_5_expand", "inbound_nodes": [[["block_4_add", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_5_expand_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_5_expand_BN", "inbound_nodes": [[["block_5_expand", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_5_expand_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_5_expand_relu", "inbound_nodes": [[["block_5_expand_BN", 0, 0, {}]]]}, {"class_name": "DepthwiseConv2D", "config": {"name": "block_5_depthwise", "trainable": false, "dtype": "float32", "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_regularizer": null, "activity_regularizer": null, "bias_constraint": null, "depth_multiplier": 1, "depthwise_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "depthwise_regularizer": null, "depthwise_constraint": null}, "name": "block_5_depthwise", "inbound_nodes": [[["block_5_expand_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_5_depthwise_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_5_depthwise_BN", "inbound_nodes": [[["block_5_depthwise", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_5_depthwise_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_5_depthwise_relu", "inbound_nodes": [[["block_5_depthwise_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_5_project", "trainable": false, "dtype": "float32", "filters": 32, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_5_project", "inbound_nodes": [[["block_5_depthwise_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_5_project_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_5_project_BN", "inbound_nodes": [[["block_5_project", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "block_5_add", "trainable": false, "dtype": "float32"}, "name": "block_5_add", "inbound_nodes": [[["block_4_add", 0, 0, {}], ["block_5_project_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_6_expand", "trainable": false, "dtype": "float32", "filters": 192, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_6_expand", "inbound_nodes": [[["block_5_add", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_6_expand_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_6_expand_BN", "inbound_nodes": [[["block_6_expand", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_6_expand_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_6_expand_relu", "inbound_nodes": [[["block_6_expand_BN", 0, 0, {}]]]}, {"class_name": "ZeroPadding2D", "config": {"name": "block_6_pad", "trainable": false, "dtype": "float32", "padding": [[0, 1], [0, 1]], "data_format": "channels_last"}, "name": "block_6_pad", "inbound_nodes": [[["block_6_expand_relu", 0, 0, {}]]]}, {"class_name": "DepthwiseConv2D", "config": {"name": "block_6_depthwise", "trainable": false, "dtype": "float32", "kernel_size": [3, 3], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_regularizer": null, "activity_regularizer": null, "bias_constraint": null, "depth_multiplier": 1, "depthwise_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "depthwise_regularizer": null, "depthwise_constraint": null}, "name": "block_6_depthwise", "inbound_nodes": [[["block_6_pad", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_6_depthwise_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_6_depthwise_BN", "inbound_nodes": [[["block_6_depthwise", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_6_depthwise_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_6_depthwise_relu", "inbound_nodes": [[["block_6_depthwise_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_6_project", "trainable": false, "dtype": "float32", "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_6_project", "inbound_nodes": [[["block_6_depthwise_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_6_project_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_6_project_BN", "inbound_nodes": [[["block_6_project", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_7_expand", "trainable": false, "dtype": "float32", "filters": 384, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_7_expand", "inbound_nodes": [[["block_6_project_BN", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_7_expand_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_7_expand_BN", "inbound_nodes": [[["block_7_expand", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_7_expand_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_7_expand_relu", "inbound_nodes": [[["block_7_expand_BN", 0, 0, {}]]]}, {"class_name": "DepthwiseConv2D", "config": {"name": "block_7_depthwise", "trainable": false, "dtype": "float32", "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_regularizer": null, "activity_regularizer": null, "bias_constraint": null, "depth_multiplier": 1, "depthwise_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "depthwise_regularizer": null, "depthwise_constraint": null}, "name": "block_7_depthwise", "inbound_nodes": [[["block_7_expand_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_7_depthwise_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_7_depthwise_BN", "inbound_nodes": [[["block_7_depthwise", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_7_depthwise_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_7_depthwise_relu", "inbound_nodes": [[["block_7_depthwise_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_7_project", "trainable": false, "dtype": "float32", "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_7_project", "inbound_nodes": [[["block_7_depthwise_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_7_project_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_7_project_BN", "inbound_nodes": [[["block_7_project", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "block_7_add", "trainable": false, "dtype": "float32"}, "name": "block_7_add", "inbound_nodes": [[["block_6_project_BN", 0, 0, {}], ["block_7_project_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_8_expand", "trainable": false, "dtype": "float32", "filters": 384, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_8_expand", "inbound_nodes": [[["block_7_add", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_8_expand_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_8_expand_BN", "inbound_nodes": [[["block_8_expand", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_8_expand_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_8_expand_relu", "inbound_nodes": [[["block_8_expand_BN", 0, 0, {}]]]}, {"class_name": "DepthwiseConv2D", "config": {"name": "block_8_depthwise", "trainable": false, "dtype": "float32", "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_regularizer": null, "activity_regularizer": null, "bias_constraint": null, "depth_multiplier": 1, "depthwise_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "depthwise_regularizer": null, "depthwise_constraint": null}, "name": "block_8_depthwise", "inbound_nodes": [[["block_8_expand_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_8_depthwise_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_8_depthwise_BN", "inbound_nodes": [[["block_8_depthwise", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_8_depthwise_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_8_depthwise_relu", "inbound_nodes": [[["block_8_depthwise_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_8_project", "trainable": false, "dtype": "float32", "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_8_project", "inbound_nodes": [[["block_8_depthwise_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_8_project_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_8_project_BN", "inbound_nodes": [[["block_8_project", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "block_8_add", "trainable": false, "dtype": "float32"}, "name": "block_8_add", "inbound_nodes": [[["block_7_add", 0, 0, {}], ["block_8_project_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_9_expand", "trainable": false, "dtype": "float32", "filters": 384, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_9_expand", "inbound_nodes": [[["block_8_add", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_9_expand_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_9_expand_BN", "inbound_nodes": [[["block_9_expand", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_9_expand_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_9_expand_relu", "inbound_nodes": [[["block_9_expand_BN", 0, 0, {}]]]}, {"class_name": "DepthwiseConv2D", "config": {"name": "block_9_depthwise", "trainable": false, "dtype": "float32", "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_regularizer": null, "activity_regularizer": null, "bias_constraint": null, "depth_multiplier": 1, "depthwise_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "depthwise_regularizer": null, "depthwise_constraint": null}, "name": "block_9_depthwise", "inbound_nodes": [[["block_9_expand_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_9_depthwise_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_9_depthwise_BN", "inbound_nodes": [[["block_9_depthwise", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_9_depthwise_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_9_depthwise_relu", "inbound_nodes": [[["block_9_depthwise_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_9_project", "trainable": false, "dtype": "float32", "filters": 64, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_9_project", "inbound_nodes": [[["block_9_depthwise_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_9_project_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_9_project_BN", "inbound_nodes": [[["block_9_project", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "block_9_add", "trainable": false, "dtype": "float32"}, "name": "block_9_add", "inbound_nodes": [[["block_8_add", 0, 0, {}], ["block_9_project_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_10_expand", "trainable": false, "dtype": "float32", "filters": 384, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_10_expand", "inbound_nodes": [[["block_9_add", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_10_expand_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_10_expand_BN", "inbound_nodes": [[["block_10_expand", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_10_expand_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_10_expand_relu", "inbound_nodes": [[["block_10_expand_BN", 0, 0, {}]]]}, {"class_name": "DepthwiseConv2D", "config": {"name": "block_10_depthwise", "trainable": false, "dtype": "float32", "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_regularizer": null, "activity_regularizer": null, "bias_constraint": null, "depth_multiplier": 1, "depthwise_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "depthwise_regularizer": null, "depthwise_constraint": null}, "name": "block_10_depthwise", "inbound_nodes": [[["block_10_expand_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_10_depthwise_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_10_depthwise_BN", "inbound_nodes": [[["block_10_depthwise", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_10_depthwise_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_10_depthwise_relu", "inbound_nodes": [[["block_10_depthwise_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_10_project", "trainable": false, "dtype": "float32", "filters": 96, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_10_project", "inbound_nodes": [[["block_10_depthwise_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_10_project_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_10_project_BN", "inbound_nodes": [[["block_10_project", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_11_expand", "trainable": false, "dtype": "float32", "filters": 576, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_11_expand", "inbound_nodes": [[["block_10_project_BN", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_11_expand_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_11_expand_BN", "inbound_nodes": [[["block_11_expand", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_11_expand_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_11_expand_relu", "inbound_nodes": [[["block_11_expand_BN", 0, 0, {}]]]}, {"class_name": "DepthwiseConv2D", "config": {"name": "block_11_depthwise", "trainable": false, "dtype": "float32", "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_regularizer": null, "activity_regularizer": null, "bias_constraint": null, "depth_multiplier": 1, "depthwise_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "depthwise_regularizer": null, "depthwise_constraint": null}, "name": "block_11_depthwise", "inbound_nodes": [[["block_11_expand_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_11_depthwise_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_11_depthwise_BN", "inbound_nodes": [[["block_11_depthwise", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_11_depthwise_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_11_depthwise_relu", "inbound_nodes": [[["block_11_depthwise_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_11_project", "trainable": false, "dtype": "float32", "filters": 96, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_11_project", "inbound_nodes": [[["block_11_depthwise_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_11_project_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_11_project_BN", "inbound_nodes": [[["block_11_project", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "block_11_add", "trainable": false, "dtype": "float32"}, "name": "block_11_add", "inbound_nodes": [[["block_10_project_BN", 0, 0, {}], ["block_11_project_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_12_expand", "trainable": false, "dtype": "float32", "filters": 576, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_12_expand", "inbound_nodes": [[["block_11_add", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_12_expand_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_12_expand_BN", "inbound_nodes": [[["block_12_expand", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_12_expand_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_12_expand_relu", "inbound_nodes": [[["block_12_expand_BN", 0, 0, {}]]]}, {"class_name": "DepthwiseConv2D", "config": {"name": "block_12_depthwise", "trainable": false, "dtype": "float32", "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_regularizer": null, "activity_regularizer": null, "bias_constraint": null, "depth_multiplier": 1, "depthwise_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "depthwise_regularizer": null, "depthwise_constraint": null}, "name": "block_12_depthwise", "inbound_nodes": [[["block_12_expand_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_12_depthwise_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_12_depthwise_BN", "inbound_nodes": [[["block_12_depthwise", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_12_depthwise_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_12_depthwise_relu", "inbound_nodes": [[["block_12_depthwise_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_12_project", "trainable": false, "dtype": "float32", "filters": 96, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_12_project", "inbound_nodes": [[["block_12_depthwise_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_12_project_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_12_project_BN", "inbound_nodes": [[["block_12_project", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "block_12_add", "trainable": false, "dtype": "float32"}, "name": "block_12_add", "inbound_nodes": [[["block_11_add", 0, 0, {}], ["block_12_project_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_13_expand", "trainable": false, "dtype": "float32", "filters": 576, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_13_expand", "inbound_nodes": [[["block_12_add", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_13_expand_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_13_expand_BN", "inbound_nodes": [[["block_13_expand", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_13_expand_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_13_expand_relu", "inbound_nodes": [[["block_13_expand_BN", 0, 0, {}]]]}, {"class_name": "ZeroPadding2D", "config": {"name": "block_13_pad", "trainable": false, "dtype": "float32", "padding": [[0, 1], [0, 1]], "data_format": "channels_last"}, "name": "block_13_pad", "inbound_nodes": [[["block_13_expand_relu", 0, 0, {}]]]}, {"class_name": "DepthwiseConv2D", "config": {"name": "block_13_depthwise", "trainable": false, "dtype": "float32", "kernel_size": [3, 3], "strides": [2, 2], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_regularizer": null, "activity_regularizer": null, "bias_constraint": null, "depth_multiplier": 1, "depthwise_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "depthwise_regularizer": null, "depthwise_constraint": null}, "name": "block_13_depthwise", "inbound_nodes": [[["block_13_pad", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_13_depthwise_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_13_depthwise_BN", "inbound_nodes": [[["block_13_depthwise", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_13_depthwise_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_13_depthwise_relu", "inbound_nodes": [[["block_13_depthwise_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_13_project", "trainable": false, "dtype": "float32", "filters": 160, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_13_project", "inbound_nodes": [[["block_13_depthwise_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_13_project_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_13_project_BN", "inbound_nodes": [[["block_13_project", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_14_expand", "trainable": false, "dtype": "float32", "filters": 960, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_14_expand", "inbound_nodes": [[["block_13_project_BN", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_14_expand_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_14_expand_BN", "inbound_nodes": [[["block_14_expand", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_14_expand_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_14_expand_relu", "inbound_nodes": [[["block_14_expand_BN", 0, 0, {}]]]}, {"class_name": "DepthwiseConv2D", "config": {"name": "block_14_depthwise", "trainable": false, "dtype": "float32", "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_regularizer": null, "activity_regularizer": null, "bias_constraint": null, "depth_multiplier": 1, "depthwise_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "depthwise_regularizer": null, "depthwise_constraint": null}, "name": "block_14_depthwise", "inbound_nodes": [[["block_14_expand_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_14_depthwise_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_14_depthwise_BN", "inbound_nodes": [[["block_14_depthwise", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_14_depthwise_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_14_depthwise_relu", "inbound_nodes": [[["block_14_depthwise_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_14_project", "trainable": false, "dtype": "float32", "filters": 160, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_14_project", "inbound_nodes": [[["block_14_depthwise_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_14_project_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_14_project_BN", "inbound_nodes": [[["block_14_project", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "block_14_add", "trainable": false, "dtype": "float32"}, "name": "block_14_add", "inbound_nodes": [[["block_13_project_BN", 0, 0, {}], ["block_14_project_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_15_expand", "trainable": false, "dtype": "float32", "filters": 960, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_15_expand", "inbound_nodes": [[["block_14_add", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_15_expand_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_15_expand_BN", "inbound_nodes": [[["block_15_expand", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_15_expand_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_15_expand_relu", "inbound_nodes": [[["block_15_expand_BN", 0, 0, {}]]]}, {"class_name": "DepthwiseConv2D", "config": {"name": "block_15_depthwise", "trainable": false, "dtype": "float32", "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_regularizer": null, "activity_regularizer": null, "bias_constraint": null, "depth_multiplier": 1, "depthwise_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "depthwise_regularizer": null, "depthwise_constraint": null}, "name": "block_15_depthwise", "inbound_nodes": [[["block_15_expand_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_15_depthwise_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_15_depthwise_BN", "inbound_nodes": [[["block_15_depthwise", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_15_depthwise_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_15_depthwise_relu", "inbound_nodes": [[["block_15_depthwise_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_15_project", "trainable": false, "dtype": "float32", "filters": 160, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_15_project", "inbound_nodes": [[["block_15_depthwise_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_15_project_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_15_project_BN", "inbound_nodes": [[["block_15_project", 0, 0, {}]]]}, {"class_name": "Add", "config": {"name": "block_15_add", "trainable": false, "dtype": "float32"}, "name": "block_15_add", "inbound_nodes": [[["block_14_add", 0, 0, {}], ["block_15_project_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_16_expand", "trainable": false, "dtype": "float32", "filters": 960, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_16_expand", "inbound_nodes": [[["block_15_add", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_16_expand_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_16_expand_BN", "inbound_nodes": [[["block_16_expand", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_16_expand_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_16_expand_relu", "inbound_nodes": [[["block_16_expand_BN", 0, 0, {}]]]}, {"class_name": "DepthwiseConv2D", "config": {"name": "block_16_depthwise", "trainable": false, "dtype": "float32", "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "bias_initializer": {"class_name": "Zeros", "config": {}}, "bias_regularizer": null, "activity_regularizer": null, "bias_constraint": null, "depth_multiplier": 1, "depthwise_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "depthwise_regularizer": null, "depthwise_constraint": null}, "name": "block_16_depthwise", "inbound_nodes": [[["block_16_expand_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_16_depthwise_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_16_depthwise_BN", "inbound_nodes": [[["block_16_depthwise", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "block_16_depthwise_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "block_16_depthwise_relu", "inbound_nodes": [[["block_16_depthwise_BN", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "block_16_project", "trainable": false, "dtype": "float32", "filters": 320, "kernel_size": [1, 1], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "block_16_project", "inbound_nodes": [[["block_16_depthwise_relu", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "block_16_project_BN", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "block_16_project_BN", "inbound_nodes": [[["block_16_project", 0, 0, {}]]]}, {"class_name": "Conv2D", "config": {"name": "Conv_1", "trainable": false, "dtype": "float32", "filters": 1280, "kernel_size": [1, 1], "strides": [1, 1], "padding": "valid", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": false, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "Conv_1", "inbound_nodes": [[["block_16_project_BN", 0, 0, {}]]]}, {"class_name": "BatchNormalization", "config": {"name": "Conv_1_bn", "trainable": false, "dtype": "float32", "axis": [3], "momentum": 0.999, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "name": "Conv_1_bn", "inbound_nodes": [[["Conv_1", 0, 0, {}]]]}, {"class_name": "ReLU", "config": {"name": "out_relu", "trainable": false, "dtype": "float32", "max_value": 6.0, "negative_slope": 0.0, "threshold": 0.0}, "name": "out_relu", "inbound_nodes": [[["Conv_1_bn", 0, 0, {}]]]}, {"class_name": "Flatten", "config": {"name": "flatten", "trainable": true, "dtype": "float32", "data_format": "channels_last"}, "name": "flatten", "inbound_nodes": [[["out_relu", 0, 0, {}]]]}, {"class_name": "Dropout", "config": {"name": "dropout", "trainable": true, "dtype": "float32", "rate": 0.3, "noise_shape": null, "seed": null}, "name": "dropout", "inbound_nodes": [[["flatten", 0, 0, {}]]]}, {"class_name": "Dense", "config": {"name": "dense", "trainable": true, "dtype": "float32", "units": 8, "activation": "relu", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "dense", "inbound_nodes": [[["dropout", 0, 0, {}]]]}, {"class_name": "Dense", "config": {"name": "dense_1", "trainable": true, "dtype": "float32", "units": 1, "activation": "sigmoid", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "name": "dense_1", "inbound_nodes": [[["dense", 0, 0, {}]]]}], "input_layers": [["input_1", 0, 0]], "output_layers": [["dense_1", 0, 0]]}, "keras_version": "2.4.0", "backend": "tensorflow"} -------------------------------------------------------------------------------- /Face_Antispoofing_System-main/models/Readme.md: -------------------------------------------------------------------------------- 1 | This Model folder contains HARRCASCADE xml file.This file is used for FaceDetection in this project. 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 SRISRI JAKKA 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 | -------------------------------------------------------------------------------- /Project Working Video Demo.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/Project Working Video Demo.mp4 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Real-Time-Face-Recognition-Based-Attendance-Monitoring-System 2 | This Repository contains the software required For REAL TIME FACE RECOGNITION BASED ATTENDANCE MONITORING SYSTEM. 3 | This Repository is a open source for learners and developers for reference to developing a new software for Digital Attendance System in Educational Institutes ,Offices,..etc. 4 | This Repository also helpful in developing high secure Login based on face recognition. 5 | 6 | # Requirements for this project: 7 | > A google account > for Google colab and Google Drive access 8 | > 9 | > > google drive to store the whole project related data and Google Colab to run the code. 10 | > 11 | > High Resolution webcamera.For this project 1080MP camera gives more better capturing results compared to less resolution cameras. 12 | 13 | # Motivation 14 | >The primary motivation behind taking up this project is to detect and recognize the face’s from user to the images present in the database. 15 | >Instead of taking manual attendance daily, this can be much useful in educational Institutions and organizations for daily verification of user or candidate. 16 | 17 | # Flowchart this project: 18 | 19 | >![image](https://user-images.githubusercontent.com/106643865/236116057-218d4b47-f289-433c-9fb6-ff758d998a4e.png) 20 | 21 | # Results: 22 | >
23 | > Resutl1:In this way the camera automatic captured photo is furtur processed to obtain results 24 | >
25 | > Result2:The data is updated in Attendance Folder in the Login.txt 26 | >
27 | > Result3:The data is updated in Attendance Folder in the attendance.txt 28 | >
29 | > Result4:The Acknowledgement is sent to the Gaurdian or parent. 30 | >
31 |
32 | 33 | # Adventages of this Project: 34 | In this Project the webcam will capture the Real time data of video.so this model is called Real time based model. 35 | This Project then automatically capture the photo frame of video where if the Face is Detected in the Photo frame. 36 | Then the Photo is tested against the anti-spoofing model to verify the photo captured is "Real" or "Spoof" 37 | If the photo captured is Real then the Photo frame is moved furthur for Face Recognition Based on databased loaded images at known_faces_dir. 38 | If a Match of a photo was found in database of known_faces_dir then the Attendance is Marked in the database and the Login students data. 39 | Then to provide acknowledgement to the Parents or Gaurdians.we have added a feature called automatic mailing.so this project also provide acknowledgement. 40 | This project also uses the GoogleDrive as a storage and Google Colab for Execution.So it is a cloud based model. 41 | 42 | 43 | # Demo Video 44 | > 45 | > https://user-images.githubusercontent.com/106643865/235976000-746e8ae9-019e-4c9b-88ea-c26ed3b35397.mp4 46 | 47 | # Project Practical Usecases: 48 | This model is efficient accurate for using small oraganisations to big multinational Organisations. 49 | This model is recomended for Educational Institutions for Attendance Management. 50 | This model is better to use in banks to improve security for seceret rooms. 51 | This model is one of the best suitable in military zones at enterence to control the unauthorised entry. 52 | This model is useful in everywhere in real life from Automatic home entry sytem to entry in Rockets launcing places. 53 | 54 | 58 | 59 | -------------------------------------------------------------------------------- /RealTimeFaceRecognitionBasedAttendanceMonitoringSystem.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "provenance": [] 7 | }, 8 | "kernelspec": { 9 | "name": "python3", 10 | "display_name": "Python 3" 11 | }, 12 | "language_info": { 13 | "name": "python" 14 | }, 15 | "accelerator": "GPU", 16 | "gpuClass": "standard" 17 | }, 18 | "cells": [ 19 | { 20 | "cell_type": "code", 21 | "source": [ 22 | "#FINAL PROJECT CODE\n", 23 | "\n", 24 | "#--------CODE FOR INPUT IMAGE TAKING-----------------\n", 25 | "print()\n", 26 | "from IPython.display import display, Javascript, Image\n", 27 | "from google.colab.output import eval_js\n", 28 | "from base64 import b64decode, b64encode\n", 29 | "import cv2\n", 30 | "import numpy as np\n", 31 | "import PIL\n", 32 | "import io\n", 33 | "# import html\n", 34 | "import time \n", 35 | "import os\n", 36 | "!pip install tensorflow\n", 37 | "from tensorflow.keras.models import model_from_json\n", 38 | "import smtplib\n", 39 | "import ssl\n", 40 | "from email.message import EmailMessage\n", 41 | "from datetime import datetime\n", 42 | "import collections\n", 43 | "from pytz import timezone\n", 44 | "!pip install face_recognition\n", 45 | "import concurrent.futures\n", 46 | "import face_recognition\n", 47 | "import os \n", 48 | "import shutil\n", 49 | "# Mount Google Drive\n", 50 | "from google.colab import drive\n", 51 | "drive.mount('/content/drive')\n", 52 | "# Load known faces\n", 53 | "known_faces_dir = \"/content/drive/MyDrive/Colab Notebooks/Real_time_face_recognition_based_Attendance_monitoring_system/face_recognition/\"\n", 54 | "known_face_names = []\n", 55 | "known_face_encodings = []\n", 56 | "resulted_founded_names = []\n", 57 | "d = collections.defaultdict(lambda : 'Not found')#['vilasagaram.vikas@gmail.com','20R25A0421'] )\n", 58 | "d ['SRISRI'] = ['srisree322@gmail.com','19R21A04K7'] ; d['NAGASESHU'] = ['bnagaseshu2001@gmail.com' ,'19R21A04K2'] \n", 59 | "d ['VIKAS'] = ['vilasagaram.vikas@gmail.com','20R25A0421'] ; d['VAMSI'] = ['vamsi251002@gmail.com', '20R25A0420']\n", 60 | "d ['VIKAS1'] = ['vilasagaram.vikas@gmail.com','20R25A0421'] ; d ['VIKAS2'] = ['vilasagaram.vikas@gmail.com','20R25A0421']\n", 61 | "curr_folder_path = \"/content/drive/MyDrive/Colab Notebooks/Real_time_face_recognition_based_Attendance_monitoring_system/Face_Antispoofing_System-main/\"\n", 62 | "\n", 63 | "root_dir = os.getcwd()\n", 64 | "# Load Face Detection Model\n", 65 | "face_cascade = cv2.CascadeClassifier(\"models/haarcascade_frontalface_default.xml\")\n", 66 | "# Load Anti-Spoofing Model graph\n", 67 | "json_file = open(curr_folder_path+'antispoofing_models/antispoofing_model.json','r')\n", 68 | "loaded_model_json = json_file.read()\n", 69 | "json_file.close()\n", 70 | "model = model_from_json(loaded_model_json)\n", 71 | "# load antispoofing model weights \n", 72 | "model.load_weights(curr_folder_path+'antispoofing_models/antispoofing_model.h5')\n", 73 | "print(\"Model loaded from disk\")\n", 74 | "#\n", 75 | "#-------CODE for Recognition and attendance marking--- \n", 76 | "for filename in os.listdir(known_faces_dir):\n", 77 | " if not filename.startswith('.'):\n", 78 | " image = face_recognition.load_image_file(os.path.join(known_faces_dir, filename))\n", 79 | " face_encodings = face_recognition.face_encodings(image, num_jitters=10, model=\"large\")\n", 80 | " if face_encodings:\n", 81 | " known_face_encodings.append(face_encodings[0])\n", 82 | " known_face_names.append(os.path.splitext(filename)[0])\n", 83 | "\n", 84 | "# function to convert the JavaScript object into an OpenCV image\n", 85 | "def js_to_image(js_reply):\n", 86 | " \"\"\"\n", 87 | " Params:\n", 88 | " js_reply: JavaScript object containing image from webcam\n", 89 | " Returns:\n", 90 | " img: OpenCV BGR image\n", 91 | " \"\"\"\n", 92 | " # decode base64 image\n", 93 | " image_bytes = b64decode(js_reply.split(',')[1])\n", 94 | " # convert bytes to numpy array\n", 95 | " jpg_as_np = np.frombuffer(image_bytes, dtype=np.uint8)\n", 96 | " # decode numpy array into OpenCV BGR image\n", 97 | " img = cv2.imdecode(jpg_as_np, flags=1)\n", 98 | "\n", 99 | " return img\n", 100 | "\n", 101 | "# function to convert OpenCV Rectangle bounding box image into base64 byte string to be overlayed on video stream\n", 102 | "def bbox_to_bytes(bbox_array):\n", 103 | " \"\"\"\n", 104 | " Params:\n", 105 | " bbox_array: Numpy array (pixels) containing rectangle to overlay on video stream.\n", 106 | " Returns:\n", 107 | " bytes: Base64 image byte string\n", 108 | " \"\"\"\n", 109 | " # convert array into PIL image\n", 110 | " bbox_PIL = PIL.Image.fromarray(bbox_array, 'RGBA')\n", 111 | " iobuf = io.BytesIO()\n", 112 | " # format bbox into png for return\n", 113 | " bbox_PIL.save(iobuf, format='png')\n", 114 | " # format return string\n", 115 | " bbox_bytes = 'data:image/png;base64,{}'.format((str(b64encode(iobuf.getvalue()), 'utf-8')))\n", 116 | "\n", 117 | " return bbox_bytes\n", 118 | "\n", 119 | "# initialize the Haar Cascade face detection model\n", 120 | "face_cascade = cv2.CascadeClassifier(cv2.samples.findFile(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml'))\n", 121 | "\n", 122 | "def take_photo(filename='photo.jpg', quality=0.8):\n", 123 | " js = Javascript('''\n", 124 | " async function takePhoto(quality) {\n", 125 | " const div = document.createElement('div');\n", 126 | " const capture = document.createElement('button');\n", 127 | " capture.textContent = 'Capture';\n", 128 | " div.appendChild(capture);\n", 129 | "\n", 130 | " const video = document.createElement('video');\n", 131 | " video.style.display = 'block';\n", 132 | " const stream = await navigator.mediaDevices.getUserMedia({video: true});\n", 133 | "\n", 134 | " document.body.appendChild(div);\n", 135 | " div.appendChild(video);\n", 136 | " video.srcObject = stream;\n", 137 | " await video.play();\n", 138 | "\n", 139 | " // Resize the output to fit the video element.\n", 140 | " google.colab.output.setIframeHeight(document.documentElement.scrollHeight, true);\n", 141 | "\n", 142 | " // Wait for Capture to be clicked.\n", 143 | " await new Promise((resolve) => capture.onclick = resolve);\n", 144 | "\n", 145 | " const canvas = document.createElement('canvas');\n", 146 | " canvas.width = video.videoWidth;\n", 147 | " canvas.height = video.videoHeight;\n", 148 | " canvas.getContext('2d').drawImage(video, 0, 0);\n", 149 | " stream.getVideoTracks()[0].stop();\n", 150 | " div.remove();\n", 151 | " return canvas.toDataURL('image/jpeg', quality);\n", 152 | " }\n", 153 | " ''')\n", 154 | " display(js)\n", 155 | "\n", 156 | " # get photo data\n", 157 | " data = eval_js('takePhoto({})'.format(quality))\n", 158 | " # get OpenCV format image\n", 159 | " img = js_to_image(data) \n", 160 | " # grayscale img\n", 161 | " gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)\n", 162 | " print(gray.shape)\n", 163 | " # get face bounding box coordinates using Haar Cascade\n", 164 | " faces = face_cascade.detectMultiScale(gray)\n", 165 | " # draw face bounding box on image\n", 166 | " for (x,y,w,h) in faces:\n", 167 | " img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)\n", 168 | " # save image\n", 169 | " cv2.imwrite(filename, img)\n", 170 | "\n", 171 | " return filename\n", 172 | "\n", 173 | "# JavaScript to properly create our live video stream using our webcam as input\n", 174 | "def video_stream():\n", 175 | " js = Javascript('''\n", 176 | " var video;\n", 177 | " var div = null;\n", 178 | " var stream;\n", 179 | " var captureCanvas;\n", 180 | " var imgElement;\n", 181 | " var labelElement;\n", 182 | " \n", 183 | " var pendingResolve = null;\n", 184 | " var shutdown = false;\n", 185 | " \n", 186 | " function removeDom() {\n", 187 | " stream.getVideoTracks()[0].stop();\n", 188 | " video.remove();\n", 189 | " div.remove();\n", 190 | " video = null;\n", 191 | " div = null;\n", 192 | " stream = null;\n", 193 | " imgElement = null;\n", 194 | " captureCanvas = null;\n", 195 | " labelElement = null;\n", 196 | " }\n", 197 | " \n", 198 | " function onAnimationFrame() {\n", 199 | " if (!shutdown) {\n", 200 | " window.requestAnimationFrame(onAnimationFrame);\n", 201 | " }\n", 202 | " if (pendingResolve) {\n", 203 | " var result = \"\";\n", 204 | " if (!shutdown) {\n", 205 | " captureCanvas.getContext('2d').drawImage(video, 0, 0, 640, 480);\n", 206 | " result = captureCanvas.toDataURL('image/jpeg', 0.8)\n", 207 | " }\n", 208 | " var lp = pendingResolve;\n", 209 | " pendingResolve = null;\n", 210 | " lp(result);\n", 211 | " }\n", 212 | " }\n", 213 | " \n", 214 | " async function createDom() {\n", 215 | " if (div !== null) {\n", 216 | " return stream;\n", 217 | " }\n", 218 | "\n", 219 | " div = document.createElement('div');\n", 220 | " div.style.border = '2px solid black';\n", 221 | " div.style.padding = '3px';\n", 222 | " div.style.width = '100%';\n", 223 | " div.style.maxWidth = '600px';\n", 224 | " document.body.appendChild(div);\n", 225 | " \n", 226 | " const modelOut = document.createElement('div');\n", 227 | " modelOut.innerHTML = \"Status:\";\n", 228 | " labelElement = document.createElement('span');\n", 229 | " labelElement.innerText = 'No data';\n", 230 | " labelElement.style.fontWeight = 'bold';\n", 231 | " modelOut.appendChild(labelElement);\n", 232 | " div.appendChild(modelOut);\n", 233 | " \n", 234 | " video = document.createElement('video');\n", 235 | " video.style.display = 'block';\n", 236 | " video.width = div.clientWidth - 6;\n", 237 | " video.setAttribute('playsinline', '');\n", 238 | " video.onclick = () => { shutdown = true; };\n", 239 | " stream = await navigator.mediaDevices.getUserMedia(\n", 240 | " {video: { facingMode: \"environment\"}});\n", 241 | " div.appendChild(video);\n", 242 | "\n", 243 | " imgElement = document.createElement('img');\n", 244 | " imgElement.style.position = 'absolute';\n", 245 | " imgElement.style.zIndex = 1;\n", 246 | " imgElement.onclick = () => { shutdown = true; };\n", 247 | " div.appendChild(imgElement);\n", 248 | " \n", 249 | " const instruction = document.createElement('div');\n", 250 | " instruction.innerHTML = \n", 251 | " '' +\n", 252 | " 'When finished, click here or on the video to stop this demo';\n", 253 | " div.appendChild(instruction);\n", 254 | " instruction.onclick = () => { shutdown = true; };\n", 255 | " \n", 256 | " video.srcObject = stream;\n", 257 | " await video.play();\n", 258 | "\n", 259 | " captureCanvas = document.createElement('canvas');\n", 260 | " captureCanvas.width = 640; //video.videoWidth;\n", 261 | " captureCanvas.height = 480; //video.videoHeight;\n", 262 | " window.requestAnimationFrame(onAnimationFrame);\n", 263 | " \n", 264 | " return stream;\n", 265 | " }\n", 266 | " async function stream_frame(label, imgData) {\n", 267 | " if (shutdown) {\n", 268 | " removeDom();\n", 269 | " shutdown = false;\n", 270 | " return '';\n", 271 | " }\n", 272 | "\n", 273 | " var preCreate = Date.now();\n", 274 | " stream = await createDom();\n", 275 | " \n", 276 | " var preShow = Date.now();\n", 277 | " if (label != \"\") {\n", 278 | " labelElement.innerHTML = label;\n", 279 | " }\n", 280 | " \n", 281 | " if (imgData != \"\") {\n", 282 | " var videoRect = video.getClientRects()[0];\n", 283 | " imgElement.style.top = videoRect.top + \"px\";\n", 284 | " imgElement.style.left = videoRect.left + \"px\";\n", 285 | " imgElement.style.width = videoRect.width + \"px\";\n", 286 | " imgElement.style.height = videoRect.height + \"px\";\n", 287 | " imgElement.src = imgData;\n", 288 | " }\n", 289 | " \n", 290 | " var preCapture = Date.now();\n", 291 | " var result = await new Promise(function(resolve, reject) {\n", 292 | " pendingResolve = resolve;\n", 293 | " });\n", 294 | " shutdown = false;\n", 295 | " \n", 296 | " return {'create': preShow - preCreate, \n", 297 | " 'show': preCapture - preShow, \n", 298 | " 'capture': Date.now() - preCapture,\n", 299 | " 'img': result};\n", 300 | " }\n", 301 | " ''')\n", 302 | "\n", 303 | " display(js)\n", 304 | " \n", 305 | "def video_frame(label, bbox):\n", 306 | " data = eval_js('stream_frame(\"{}\", \"{}\")'.format(label, bbox))\n", 307 | " return data \n", 308 | "\n", 309 | "\n", 310 | "# start streaming video from webcam\n", 311 | "video_stream()\n", 312 | "# label for video\n", 313 | "label_html = 'Capturing...'\n", 314 | "# initialze bounding box to empty\n", 315 | "bbox = ''\n", 316 | "count = 0 \n", 317 | "i =0\n", 318 | "reali = 0 ; name = \"\" ; label = \"Proxy\" ; resulted_founded_names = []\n", 319 | "while True:\n", 320 | " js_reply = video_frame(label_html, bbox)\n", 321 | " if not js_reply:\n", 322 | " i = 0 ; reali = 0\n", 323 | " break\n", 324 | "\n", 325 | " # convert JS response to OpenCV Image\n", 326 | " img = js_to_image(js_reply[\"img\"])\n", 327 | "\n", 328 | " # create transparent overlay for bounding box\n", 329 | " bbox_array = np.zeros([480,640,4], dtype=np.uint8)\n", 330 | "\n", 331 | " #\n", 332 | " frame = img\n", 333 | " #\n", 334 | "\n", 335 | " # grayscale image for face detection\n", 336 | " gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)\n", 337 | "\n", 338 | " try:\n", 339 | " faces = face_cascade.detectMultiScale(gray,1.3,5)\n", 340 | " for (x,y,w,h) in faces: \n", 341 | " print(\"number\",i); i+=1\n", 342 | " face = frame[y-5:y+h+5,x-5:x+w+5]\n", 343 | " resized_face = cv2.resize(face,(160,160))\n", 344 | " resized_face = resized_face.astype(\"float\") / 255.0\n", 345 | " # resized_face = img_to_array(resized_face)\n", 346 | " resized_face = np.expand_dims(resized_face, axis=0)\n", 347 | " # pass the face ROI through the trained liveness detector\n", 348 | " # model to determine if the face is \"real\" or \"Proxy\"\n", 349 | " print(\"just came/...\")\n", 350 | " preds = model.predict(resized_face)[0]\n", 351 | " print(\">>preds>>\",preds)\n", 352 | " if preds> 0.5:\n", 353 | " label = 'spoof'\n", 354 | " cv2.putText(frame, label, (x,y - 10),\n", 355 | " cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0,0,255), 2)\n", 356 | " cv2.rectangle(frame, (x, y), (x+w,y+h),\n", 357 | " (0, 0, 255), 2)\n", 358 | " else:\n", 359 | " label = 'real'\n", 360 | " reali += 1\n", 361 | " cv2.putText(frame, label, (x,y - 10),\n", 362 | " cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0,255,0), 2)\n", 363 | " cv2.rectangle(frame, (x, y), (x+w,y+h),\n", 364 | " (0, 255, 0), 2)\n", 365 | " # save image\n", 366 | " filename = \"photo.jpg\"\n", 367 | " cv2.imwrite(filename, frame)\n", 368 | " print('Saved to {}'.format(filename))\n", 369 | " display(Image(filename))\n", 370 | " print(\"result>>\",label)\n", 371 | " except: pass\n", 372 | "#----------------------------------------------------\n", 373 | " if label =='real': \n", 374 | " label = \"Proxy\"\n", 375 | " # Load test image\n", 376 | " test_image_path = \"/content/photo.jpg\"\n", 377 | " test_image = face_recognition.load_image_file(test_image_path)\n", 378 | "\n", 379 | " # Define face recognition function\n", 380 | " def recognize_face(face_encoding):\n", 381 | " matches = face_recognition.compare_faces(known_face_encodings, face_encoding, tolerance=0.4)\n", 382 | " if True in matches:\n", 383 | " match_index = matches.index(True)\n", 384 | " name = known_face_names[match_index]\n", 385 | " return name\n", 386 | " else:\n", 387 | " return None\n", 388 | "\n", 389 | " # Find faces in test image\n", 390 | " face_locations = face_recognition.face_locations(test_image, model='cnn')\n", 391 | " face_encodings = face_recognition.face_encodings(test_image, face_locations, num_jitters=10, model=\"large\")\n", 392 | "\n", 393 | " # Create or open attendance file in append mode\n", 394 | " attendance_file = open(\"/content/drive/MyDrive/Colab Notebooks/Real_time_face_recognition_based_Attendance_monitoring_system/Attendance folder/attendance.txt\", \"a\")\n", 395 | "\n", 396 | " # Check if test image contains at least one face\n", 397 | " if not face_encodings:\n", 398 | " print(\"No faces found in test image.\")\n", 399 | " else:\n", 400 | " # Parallelize face recognition process\n", 401 | " with concurrent.futures.ProcessPoolExecutor() as executor:\n", 402 | " results = executor.map(recognize_face, face_encodings)\n", 403 | " resulted_founded_names = list(results)\n", 404 | " # Write attendance to file\n", 405 | " for i, result in enumerate(results):\n", 406 | " if result:\n", 407 | " name = result\n", 408 | " resulted_founded_names.append(name)\n", 409 | " print(f\"Match found: {name}\")\n", 410 | "\n", 411 | " else:\n", 412 | " print(\"No match found.\")\n", 413 | " #-----------------------------------------------------\n", 414 | "\n", 415 | " #--------CODE FOR EMAIL SENDING ----------------------\n", 416 | " for name in resulted_founded_names:\n", 417 | " try:\n", 418 | " ##################################\n", 419 | " def update_login(student_name):\n", 420 | " file_path = '/content/drive/MyDrive/Colab Notebooks/Real_time_face_recognition_based_Attendance_monitoring_system/Attendance folder/login.txt'\n", 421 | " # student_name = input(\"Enter student name: \")\n", 422 | "\n", 423 | " with open(file_path, 'r') as file:\n", 424 | " lines = file.readlines()\n", 425 | " # print(\"initial>\",lines)\n", 426 | "\n", 427 | " found = 0\n", 428 | " new_lines = []\n", 429 | "\n", 430 | " for line in lines:\n", 431 | " if line.strip() == student_name:\n", 432 | " found = 1 \n", 433 | " print(found,\"<<\")\n", 434 | " continue\n", 435 | " else:\n", 436 | " new_lines.append(line)\n", 437 | "\n", 438 | " if not found:\n", 439 | " new_lines.append(student_name + '\\n')\n", 440 | "\n", 441 | " with open(file_path, 'w') as file:\n", 442 | " file.writelines(new_lines)\n", 443 | "\n", 444 | " with open(file_path, 'r') as file:\n", 445 | " lines = file.readlines()\n", 446 | " return found\n", 447 | " # print(\"final>\",lines)\n", 448 | " ##################################\n", 449 | " # Get the current date and time\n", 450 | " now = datetime.now(timezone(\"Asia/Kolkata\"))\n", 451 | " current_time = now.strftime(\"%H:%M:%S\")\n", 452 | " current_date = now.strftime(\"%d/%m/%Y\")\n", 453 | " founded = update_login(name)\n", 454 | " res_loginRout = \"Login time\"\n", 455 | " if founded:\n", 456 | " attendance_file.write(f\"{name} logout marked on {current_date} at {current_time}\\n\")\n", 457 | " res_loginRout = \"Logout time\"\n", 458 | " else:\n", 459 | " attendance_file.write(f\"{name} login marked on {current_date} at {current_time}\\n\")\n", 460 | " attendance_file.close() # Close attendance file\n", 461 | " print(founded,res_loginRout)\n", 462 | " for i in range(1):\n", 463 | "\n", 464 | " # for i in range(10):\n", 465 | " # Define email sender and receiver\n", 466 | " email_sender = 'srisri.jakka@gmail.com'#'bnagaseshu2001@gmail.com'#'srisri.jakka@gmail.com'\n", 467 | " email_password = 'causkxscjmqxrokp'#'tkldvzvmttkwtcvv'#'ncwxbldpctyvzwjb'\n", 468 | " email_receiver = d[name][0]#'skgouse131@gmail'#'bnagaseshu2001@gmail.com'#'vilasagaram.vikas@gmail.com'#'skgouse131@gmail.com'\n", 469 | "\n", 470 | " # Set the subject and body of the email\n", 471 | " subject = 'SSNV Organisation REAL-TIME FACE RECOGNITION BASED ATTENDANCE MONITORING SYSTEM.'#'Check out Your ward attendance!'\n", 472 | " body = f\"\"\"\n", 473 | " <<<<<<<<<<<<< YOUR ATTENDANCE >>>>>>>>>>>>>>>\n", 474 | " -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n", 475 | " RollNo : {d[name][1]} \n", 476 | " NAME : {name} \n", 477 | " DATE : {current_date} \n", 478 | " TIME : {current_time} \n", 479 | " {name} {res_loginRout} attended on {current_date} at {current_time} has successfully marked the attendance. \n", 480 | " ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n", 481 | " Dear {d[name][0]}, \\n\n", 482 | " This message is from Organisation/college automatic attendance system. \\n \n", 483 | " Your attendance has been successfully marked using the face recognition system. This means that you have been present and accounted for during work hours. I would like to take this opportunity to congratulate you on your successful use of the system.\n", 484 | " \\n\n", 485 | " The face recognition system has also enhanced our security measures, as it only allows authorized personnel with registered faces to enter the premises. This ensures that our workplace remains safe and secure at all times.\n", 486 | " \\n\n", 487 | " As a Organisation/college attendance system would like to remind you to continue using the face recognition system for attendance marking. It is important that we maintain accurate attendance records to ensure that everyone is accounted for during work hours..\n", 488 | " \\n\n", 489 | " Thank you for your attention to this matter.\n", 490 | " \\n\n", 491 | " Best regards,\n", 492 | " \\n\n", 493 | " {name}\"\"\"\n", 494 | "\n", 495 | " em = EmailMessage()\n", 496 | " em['From'] = 'XYZ'#email_sender\n", 497 | " em['To'] = email_receiver\n", 498 | " em['Subject'] = subject\n", 499 | " em.set_content(body)\n", 500 | "\n", 501 | " # Add SSL (layer of security)\n", 502 | " context = ssl.create_default_context()\n", 503 | "\n", 504 | " # Log in and send the email\n", 505 | " with smtplib.SMTP_SSL('smtp.gmail.com', 465, context=context) as smtp:\n", 506 | " smtp.login(email_sender, email_password)\n", 507 | " smtp.sendmail(email_sender, email_receiver, em.as_string()) \n", 508 | " print(f\"emailsent to {name}\") \n", 509 | " except:\n", 510 | " print(\"NO match found\")\n", 511 | " resulted_founded_names = []\n", 512 | " #------------------------------------------------------------------------" 513 | ], 514 | "metadata": { 515 | "id": "MJp4CLRPSKOl" 516 | }, 517 | "execution_count": null, 518 | "outputs": [] 519 | } 520 | ] 521 | } -------------------------------------------------------------------------------- /RealTimeFaceRecognitionBasedAttendanceMonitoringSystem_Flowchart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/RealTimeFaceRecognitionBasedAttendanceMonitoringSystem_Flowchart.png -------------------------------------------------------------------------------- /Results/AcknowledgementEmail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/Results/AcknowledgementEmail.png -------------------------------------------------------------------------------- /Results/FaceDetectionAndRecognition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/Results/FaceDetectionAndRecognition.png -------------------------------------------------------------------------------- /Results/LoginStudentsData.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/Results/LoginStudentsData.png -------------------------------------------------------------------------------- /Results/Readme.md: -------------------------------------------------------------------------------- 1 | # Results: 2 | >
3 | > Resutl1:In this way the camera automatic captured photo is furtur processed to obtain results 4 | >
5 | > Result2:The data is updated in Attendance Folder in the Login.txt 6 | >
7 | > Result3:The data is updated in Attendance Folder in the attendance.txt 8 | >
9 | > Result4:The Acknowledgement is sent to the Gaurdian or parent. 10 | >
11 |
12 | -------------------------------------------------------------------------------- /Results/RealTimeFaceRecognitionBasedAttendanceMonitoringSystem_Flowchart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/Results/RealTimeFaceRecognitionBasedAttendanceMonitoringSystem_Flowchart.png -------------------------------------------------------------------------------- /SubProjects/Attendance Update/ATTENDANCE DATABASE UPDATE (1).mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/SubProjects/Attendance Update/ATTENDANCE DATABASE UPDATE (1).mp4 -------------------------------------------------------------------------------- /SubProjects/Attendance Update/AttendanceDatabaseUpdate.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "provenance": [] 7 | }, 8 | "kernelspec": { 9 | "name": "python3", 10 | "display_name": "Python 3" 11 | }, 12 | "language_info": { 13 | "name": "python" 14 | } 15 | }, 16 | "cells": [ 17 | { 18 | "cell_type": "code", 19 | "execution_count": 12, 20 | "metadata": { 21 | "colab": { 22 | "base_uri": "https://localhost:8080/" 23 | }, 24 | "id": "T6JFiN_puYeL", 25 | "outputId": "9feb0f04-d6bd-4407-fc24-9ba0dd81d534" 26 | }, 27 | "outputs": [ 28 | { 29 | "output_type": "stream", 30 | "name": "stdout", 31 | "text": [ 32 | "initial> ['List of students in the class (or) login students list:\\n', '_______________________________________________________\\n', 'VAMSI\\n', 'NAGASESHU\\n', 'VIKAS\\n', 'SRISRI\\n']\n", 33 | "final> ['List of students in the class (or) login students list:\\n', '_______________________________________________________\\n', 'VAMSI\\n', 'NAGASESHU\\n', 'VIKAS\\n', 'SRISRI\\n', 'Spark\\n']\n" 34 | ] 35 | }, 36 | { 37 | "output_type": "execute_result", 38 | "data": { 39 | "text/plain": [ 40 | "0" 41 | ] 42 | }, 43 | "metadata": {}, 44 | "execution_count": 12 45 | } 46 | ], 47 | "source": [ 48 | "def update_login(student_name):\n", 49 | " file_path = '/content/drive/MyDrive/Colab Notebooks/Real_time_face_recognition_based_Attendance_monitoring_system/Attendance folder/login.txt'\n", 50 | " # student_name = input(\"Enter student name: \")\n", 51 | "\n", 52 | " with open(file_path, 'r') as file:\n", 53 | " lines = file.readlines()\n", 54 | " print(\"initial>\",lines)\n", 55 | "\n", 56 | " found = 0\n", 57 | " new_lines = []\n", 58 | "\n", 59 | " for line in lines:\n", 60 | " if line.strip() == student_name:\n", 61 | " found = 1 \n", 62 | " print(found,\"<<\")\n", 63 | " continue\n", 64 | " else:\n", 65 | " new_lines.append(line)\n", 66 | "\n", 67 | " if not found:\n", 68 | " new_lines.append(student_name + '\\n')\n", 69 | "\n", 70 | " with open(file_path, 'w') as file:\n", 71 | " file.writelines(new_lines)\n", 72 | "\n", 73 | " with open(file_path, 'r') as file:\n", 74 | " lines = file.readlines()\n", 75 | " print(\"final>\",lines)\n", 76 | " return found\n", 77 | "\n", 78 | "update_login(\"Spark\")" 79 | ] 80 | } 81 | ] 82 | } -------------------------------------------------------------------------------- /SubProjects/Attendance Update/LoginUpdate1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/SubProjects/Attendance Update/LoginUpdate1.png -------------------------------------------------------------------------------- /SubProjects/Attendance Update/LoginUpdate2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/SubProjects/Attendance Update/LoginUpdate2.png -------------------------------------------------------------------------------- /SubProjects/Attendance Update/Readme.md: -------------------------------------------------------------------------------- 1 | # ATTENDANCE DATABASE UPDATE 2 | This Feature is to update the Attendance of the Attended Student Login and Logout in Attendance Folder on Login.txt and attendance.txt Files.
3 | 4 | # Requirements for this project: 5 | > A google account > for Google colab and Google Drive access 6 | > 7 | > > google drive to store the whole project related data and Google Colab to run the code. 8 | > 9 | 10 |
 11 | Need : To Update Attendance you are required to create a Folder                                                                                                
12 | Solution: I like to use google drive is my storage because to overcome the disasters Cloud storage is best solution.So i prefer Google Drive.
13 | >Folder Creation: Open Google Drive
14 | >Create a Folder: with Folder name as you like or i prefer "Attendance folder".Because this is the folder name we used for this project.
15 | >Create 2 text Files: 1.One File for attendance.txt -> To store the Log data in the formate of "StudentName with Login/Logout and Date and Time".
16 | 2.Another File for Login.txt -> To store the List of Login or Presented Students.
17 | 18 | 19 |
20 | Need : To open the File in the Project
21 | >Solution: 22 | >> with open(file_path, 'r') as file: 23 | >> lines = file.readlines() 24 | > Where, file_path='/content/drive/MyDrive/Colab Notebooks/Real_time_face_recognition_based_Attendance_monitoring_system/Attendance folder/login.txt' 25 | > The above path is an example of input path file as login.txt 26 | > lines is a list of lines in the file. 27 | > ex: 28 | > _________________________ 29 | > |Login.txt | 30 | > |------------------------| 31 | > | Srisri | 32 | > | Seshu | 33 | > |________________________| for this login.txt >output> lines = [ 'Srisri\n' , 'Seshu\n' ] 34 | 35 | 36 | Need : To write in a file just opened aboe with new content of lines. 37 | >Solution: 38 | >> with open(file_path, 'w') as file: 39 | >> file.writelines(new_lines) 40 | > Where, file_path='/content/drive/MyDrive/Colab Notebooks/Real_time_face_recognition_based_Attendance_monitoring_system/Attendance folder/login.txt' 41 | > The above path is an example of input path file as login.txt 42 | > new_lines is a list of lines in the file. 43 | > ex: 44 | > new_lines = [ 'VamsiAnurag\n' , 'Srisri\n' , 'Seshu\n' , 'Vikas\n' ] 45 | > for this new_lines input login.txt becomes > 46 | > _________________________ 47 | > |Login.txt | 48 | > |------------------------| 49 | > | VamsiAnurag | 50 | > | Srisri | 51 | > | Seshu | 52 | > | Vikas | 53 | > |________________________| 54 | 55 | 56 | Need : I want List of students in the class as a file as login.txt. 57 | >Solution: 58 | > 59 | > Algorithm: 60 | > 1.I want to find wheather student is login or not? 61 | > 2.If student is already found logged then now the student is attended for logout.In this case i like to remove the name of student in the login.txt 62 | > 3.If student is not found in login.txt then this is the time of student login so i like to add the student name in the login.txt 63 | > 64 | 65 | 66 |
 67 | def update_login(student_name):
 68 |       # This is My login.txt File path 
 69 |       file_path = '/content/drive/MyDrive/Colab Notebooks/Real_time_face_recognition_based_Attendance_monitoring_system/Attendance folder/login.txt'
 70 |       # student_name = input("Enter student name: ")
 71 | 
 72 |       # I would like to open and read the lines of login.txt file
 73 |       with open(file_path, 'r') as file:
 74 |           lines = file.readlines()
 75 |       print("initial>",lines)
 76 | 
 77 |       #let till now student is not found i like to serch inside the login.txt
 78 |       found = 0
 79 |       new_lines = []
 80 | 
 81 |       for line in lines:
 82 |           #if student scaned by Attendance system is Already Login then 
 83 |           #i need to remove it in new file so remove adding student name in new_lines
 84 |           if line.strip() == student_name:
 85 |               found = 1 
 86 |               print(found,"<<")
 87 |               continue
 88 |           else:
 89 |               new_lines.append(line)  
 90 | 
 91 |       #If the student is not found in the login list then i need to add the student name in the login.txt by new_lines
 92 |       if not found:
 93 |           new_lines.append(student_name + '\n')
 94 | 
 95 |       #Write the new_lines in the login.txt to modify the changes
 96 |       with open(file_path, 'w') as file:
 97 |           file.writelines(new_lines)
 98 | 
 99 |       #to verify the resulted login.txt file open in readmode and Print the output.
100 |       with open(file_path, 'r') as file:
101 |           lines = file.readlines()
102 |       print("final>",lines)
103 |       for i in lines:
104 |         print(i)
105 |       return found
106 | 
107 | # I need to provide the input of Student name to update_login function to modify the login.txt
108 | update_login("Spark")
109 | 
110 | 111 | ## VIDEO GUIDANCE TO ACHIEVE ATTENDANCE DATABASE UPDATE 112 | 113 | > https://user-images.githubusercontent.com/106643865/236190622-40772a55-165c-4ce8-9578-a15e700b6cc8.mp4 114 | 115 | ## RESULTS: 116 | > Login.txt Modification in case 1 117 | >![LoginUpdate1](https://user-images.githubusercontent.com/106643865/236175776-24f05797-cc5e-408e-b9b9-2ac345c16cc3.png) 118 | > Login.txt Modification in case 2 119 | >![LoginUpdate2](https://user-images.githubusercontent.com/106643865/236175801-7044db82-7764-4b26-acb5-78ab895e34e0.png) 120 | -------------------------------------------------------------------------------- /SubProjects/Automatic Mailing Acknowledgement/AutomaticMailingFeature-Result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/SubProjects/Automatic Mailing Acknowledgement/AutomaticMailingFeature-Result.png -------------------------------------------------------------------------------- /SubProjects/Automatic Mailing Acknowledgement/Automatic_Mailing_Acknowledgement.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "provenance": [] 7 | }, 8 | "kernelspec": { 9 | "name": "python3", 10 | "display_name": "Python 3" 11 | }, 12 | "language_info": { 13 | "name": "python" 14 | } 15 | }, 16 | "cells": [ 17 | { 18 | "cell_type": "code", 19 | "execution_count": 5, 20 | "metadata": { 21 | "colab": { 22 | "base_uri": "https://localhost:8080/" 23 | }, 24 | "id": "cfkidW-isO1O", 25 | "outputId": "0884fa49-0830-4b97-8b62-03f4a5e98412" 26 | }, 27 | "outputs": [ 28 | { 29 | "output_type": "stream", 30 | "name": "stdout", 31 | "text": [ 32 | "0 Login time\n", 33 | "emailsent to SRISRI\n" 34 | ] 35 | } 36 | ], 37 | "source": [ 38 | "#--------CODE FOR EMAIL SENDING ----------------------\n", 39 | "import smtplib\n", 40 | "import ssl\n", 41 | "from email.message import EmailMessage\n", 42 | "from datetime import datetime\n", 43 | "import collections\n", 44 | "from pytz import timezone\n", 45 | "resulted_founded_names = ['SRISRI']\n", 46 | "d = collections.defaultdict(lambda : 'Not found')#['vilasagaram.vikas@gmail.com','20R25A0421'] )\n", 47 | "d ['SRISRI'] = ['srisri.jakka@gmail.com','19R21A04K7'] ; d['NAGASESHU'] = ['bnagaseshu2001@gmail.com' ,'19R21A04K2'] \n", 48 | "d ['VIKAS'] = ['vilasagaram.vikas@gmail.com','20R25A0421'] ; d['VAMSI'] = ['vamsi251002@gmail.com', '20R25A0420']\n", 49 | "d ['VIKAS1'] = ['vilasagaram.vikas@gmail.com','20R25A0421'] ; d ['VIKAS2'] = ['vilasagaram.vikas@gmail.com','20R25A0421']\n", 50 | "for name in resulted_founded_names:\n", 51 | " try:\n", 52 | " if d[name] == 'Not found': pass\n", 53 | " \n", 54 | " ##################################\n", 55 | " def update_login(student_name):\n", 56 | " file_path = '/content/drive/MyDrive/Colab Notebooks/Real_time_face_recognition_based_Attendance_monitoring_system/Attendance folder/login.txt'\n", 57 | " # student_name = input(\"Enter student name: \")\n", 58 | "\n", 59 | " with open(file_path, 'r') as file:\n", 60 | " lines = file.readlines()\n", 61 | " # print(\"initial>\",lines)\n", 62 | "\n", 63 | " found = 0\n", 64 | " new_lines = []\n", 65 | "\n", 66 | " for line in lines:\n", 67 | " if line.strip() == student_name:\n", 68 | " found = 1 \n", 69 | " print(found,\"<<\")\n", 70 | " continue\n", 71 | " else:\n", 72 | " new_lines.append(line)\n", 73 | "\n", 74 | " if not found:\n", 75 | " new_lines.append(student_name + '\\n')\n", 76 | "\n", 77 | " with open(file_path, 'w') as file:\n", 78 | " file.writelines(new_lines)\n", 79 | "\n", 80 | " with open(file_path, 'r') as file:\n", 81 | " lines = file.readlines()\n", 82 | " return found\n", 83 | " # print(\"final>\",lines)\n", 84 | " ##################################\n", 85 | " founded = update_login(name)\n", 86 | " res_loginRout = \"Login time\"\n", 87 | " if founded: res_loginRout = \"Logout time\"\n", 88 | " print(founded,res_loginRout)\n", 89 | " for i in range(1):\n", 90 | " # Get the current date and time\n", 91 | " now = datetime.now(timezone(\"Asia/Kolkata\"))\n", 92 | " current_time = now.strftime(\"%H:%M:%S\")\n", 93 | " current_date = now.strftime(\"%d/%m/%Y\")\n", 94 | "\n", 95 | " # for i in range(10):\n", 96 | " # Define email sender and receiver\n", 97 | " email_sender = 'srisri.jakka@gmail.com'\n", 98 | " email_password = 'lxprtekjbjixaram'\n", 99 | " email_receiver = d[name][0]#'skgouse131@gmail'#'bnagaseshu2001@gmail.com'#'vilasagaram.vikas@gmail.com'#'skgouse131@gmail.com'\n", 100 | "\n", 101 | " # Set the subject and body of the email\n", 102 | " subject = 'SSNV Organisation REAL-TIME FACE RECOGNITION BASED ATTENDANCE MONITORING SYSTEM.'#'Check out Your ward attendance!'\n", 103 | " body = f\"\"\"\n", 104 | " <<<<<<<<<<<<< YOUR ATTENDANCE >>>>>>>>>>>>>>>\n", 105 | " -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n", 106 | " RollNo : {d[name][1]} \n", 107 | " NAME : {name} \n", 108 | " DATE : {current_date} \n", 109 | " TIME : {current_time} \n", 110 | " {name} {res_loginRout} attended on {current_date} at {current_time} has successfully marked the attendance. \n", 111 | " ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\n", 112 | " Dear {d[name][0]}, \\n\n", 113 | " This message is from Organisation/college automatic attendance system. \\n \n", 114 | " Your attendance has been successfully marked using the face recognition system. This means that you have been present and accounted for during work hours. I would like to take this opportunity to congratulate you on your successful use of the system.\n", 115 | " \\n\n", 116 | " The face recognition system has also enhanced our security measures, as it only allows authorized personnel with registered faces to enter the premises. This ensures that our workplace remains safe and secure at all times.\n", 117 | " \\n\n", 118 | " As a Organisation/college attendance system would like to remind you to continue using the face recognition system for attendance marking. It is important that we maintain accurate attendance records to ensure that everyone is accounted for during work hours..\n", 119 | " \\n\n", 120 | " Thank you for your attention to this matter.\n", 121 | " \\n\n", 122 | " Best regards,\n", 123 | " \\n\n", 124 | " {name}\"\"\"\n", 125 | "\n", 126 | " em = EmailMessage()\n", 127 | " em['From'] = 'XYZ'#email_sender\n", 128 | " em['To'] = email_receiver\n", 129 | " em['Subject'] = subject\n", 130 | " em.set_content(body)\n", 131 | "\n", 132 | " # Add SSL (layer of security)\n", 133 | " context = ssl.create_default_context()\n", 134 | "\n", 135 | " # Log in and send the email\n", 136 | " with smtplib.SMTP_SSL('smtp.gmail.com', 465, context=context) as smtp:\n", 137 | " smtp.login(email_sender, email_password)\n", 138 | " smtp.sendmail(email_sender, email_receiver, em.as_string()) \n", 139 | " print(f\"emailsent to {name}\") \n", 140 | " resulted_founded_names = []\n", 141 | " except:\n", 142 | " print(\"NO match found\")\n", 143 | "#------------------------------------------------------------------------" 144 | ] 145 | } 146 | ] 147 | } -------------------------------------------------------------------------------- /SubProjects/Automatic Mailing Acknowledgement/Readme.md: -------------------------------------------------------------------------------- 1 | This Feature Deals with Automatic mailing based on student details of attended student. 2 | 3 | Needs : 4 | > 5 | To send an email for Automatic Monitoring System: 6 | Step1 - Need to know wheather Student is Login or Logout based on founded data inside the login.txt file. 7 | Step2 - Get the current date and time 8 | Step3 - Define email sender and receiver 9 | Step4 - Set the subject and body of the email 10 | Step5 - Add SSL (layer of security) 11 | Step6 - Log in and send the email 12 | 13 | Step1 - Need to know wheather Student is Login or Logout based on founded data inside the login.txt file.
14 | 15 | def update_login(student_name): 16 | file_path = '/content/drive/MyDrive/Colab Notebooks/Real_time_face_recognition_based_Attendance_monitoring_system/Attendance folder/login.txt' 17 | # student_name = input("Enter student name: ") 18 | 19 | with open(file_path, 'r') as file: 20 | lines = file.readlines() 21 | # print("initial>",lines) 22 | 23 | found = 0 24 | new_lines = [] 25 | 26 | for line in lines: 27 | if line.strip() == student_name: 28 | found = 1 29 | print(found,"<<") 30 | continue 31 | else: 32 | new_lines.append(line) 33 | 34 | if not found: 35 | new_lines.append(student_name + '\n') 36 | 37 | with open(file_path, 'w') as file: 38 | file.writelines(new_lines) 39 | 40 | with open(file_path, 'r') as file: 41 | lines = file.readlines() 42 | return found 43 | # print("final>",lines) 44 | ################################## 45 | founded = update_login(name) 46 | 47 | 48 | Step2 - Get the current date and time
49 | 50 | from datetime import datetime 51 | now = datetime.now(timezone("Asia/Kolkata")) 52 | current_time = now.strftime("%H:%M:%S") 53 | current_date = now.strftime("%d/%m/%Y") 54 | 55 | Step3 - Define email sender and receiver
56 | 57 | email_sender = 'srisri.jakka@gmail.com' 58 | email_password = 'lxprtekjbjixaram' 59 | email_receiver = 'bnagaseshu2001@gmail.com' 60 | 61 | Step4 - Set the subject and body of the email
62 | 63 | subject = 'SSNV Organisation REAL-TIME FACE RECOGNITION BASED ATTENDANCE MONITORING SYSTEM.'#'Check out Your ward attendance!' 64 | body = f""" 65 | <<<<<<<<<<<<< YOUR ATTENDANCE >>>>>>>>>>>>>>> 66 | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 67 | RollNo : {d[name][1]} 68 | NAME : {name} 69 | DATE : {current_date} 70 | TIME : {current_time} 71 | {name} {res_loginRout} attended on {current_date} at {current_time} has successfully marked the attendance. 72 | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 73 | Dear {d[name][0]}, \n 74 | This message is from Organisation/college automatic attendance system. \n 75 | Your attendance has been successfully marked using the face recognition system. This means that you have been present and accounted for during work hours. I would like to take this opportunity to congratulate you on your successful use of the system. 76 | \n 77 | The face recognition system has also enhanced our security measures, as it only allows authorized personnel with registered faces to enter the premises. This ensures that our workplace remains safe and secure at all times. 78 | \n 79 | As a Organisation/college attendance system would like to remind you to continue using the face recognition system for attendance marking. It is important that we maintain accurate attendance records to ensure that everyone is accounted for during work hours.. 80 | \n 81 | Thank you for your attention to this matter. 82 | \n 83 | Best regards, 84 | \n 85 | {name}""" 86 | 87 | em = EmailMessage() 88 | em['From'] = 'XYZ'#email_sender 89 | em['To'] = email_receiver 90 | em['Subject'] = subject 91 | em.set_content(body) 92 | 93 | Step5 - Add SSL (layer of security)
94 | 95 | context = ssl.create_default_context() 96 | 97 | Step6 - Log in and send the email
98 | 99 | with smtplib.SMTP_SSL('smtp.gmail.com', 465, context=context) as smtp: 100 | smtp.login(email_sender, email_password) 101 | smtp.sendmail(email_sender, email_receiver, em.as_string()) 102 | print(f"emailsent to {name}") 103 | 104 | 105 | 106 | OVERALL FINAL CODE IS: 107 | 108 | #--------CODE FOR EMAIL SENDING ---------------------- 109 | import smtplib 110 | import ssl 111 | from email.message import EmailMessage 112 | from datetime import datetime 113 | import collections 114 | from pytz import timezone 115 | resulted_founded_names = ['SRISRI'] 116 | d = collections.defaultdict(lambda : 'Not found')#['vilasagaram.vikas@gmail.com','20R25A0421'] ) 117 | d ['SRISRI'] = ['srisri.jakka@gmail.com','19R21A04K7'] ; d['NAGASESHU'] = ['bnagaseshu2001@gmail.com' ,'19R21A04K2'] 118 | d ['VIKAS'] = ['vilasagaram.vikas@gmail.com','20R25A0421'] ; d['VAMSI'] = ['vamsi251002@gmail.com', '20R25A0420'] 119 | d ['VIKAS1'] = ['vilasagaram.vikas@gmail.com','20R25A0421'] ; d ['VIKAS2'] = ['vilasagaram.vikas@gmail.com','20R25A0421'] 120 | for name in resulted_founded_names: 121 | try: 122 | if d[name] == 'Not found': pass 123 | 124 | ################################## 125 | def update_login(student_name): 126 | file_path = '/content/drive/MyDrive/Colab Notebooks/Real_time_face_recognition_based_Attendance_monitoring_system/Attendance folder/login.txt' 127 | # student_name = input("Enter student name: ") 128 | 129 | with open(file_path, 'r') as file: 130 | lines = file.readlines() 131 | # print("initial>",lines) 132 | 133 | found = 0 134 | new_lines = [] 135 | 136 | for line in lines: 137 | if line.strip() == student_name: 138 | found = 1 139 | print(found,"<<") 140 | continue 141 | else: 142 | new_lines.append(line) 143 | 144 | if not found: 145 | new_lines.append(student_name + '\n') 146 | 147 | with open(file_path, 'w') as file: 148 | file.writelines(new_lines) 149 | 150 | with open(file_path, 'r') as file: 151 | lines = file.readlines() 152 | return found 153 | # print("final>",lines) 154 | ################################## 155 | founded = update_login(name) 156 | res_loginRout = "Login time" 157 | if founded: res_loginRout = "Logout time" 158 | print(founded,res_loginRout) 159 | for i in range(1): 160 | # Get the current date and time 161 | now = datetime.now(timezone("Asia/Kolkata")) 162 | current_time = now.strftime("%H:%M:%S") 163 | current_date = now.strftime("%d/%m/%Y") 164 | 165 | # for i in range(10): 166 | # Define email sender and receiver 167 | email_sender = 'srisri.jakka@gmail.com' 168 | email_password = 'lxprtekjbjixbsri' 169 | email_receiver = d[name][0]#'skgouse131@gmail'#'bnagaseshu2001@gmail.com'#'vilasagaram.vikas@gmail.com'#'skgouse131@gmail.com' 170 | 171 | # Set the subject and body of the email 172 | subject = 'SSNV Organisation REAL-TIME FACE RECOGNITION BASED ATTENDANCE MONITORING SYSTEM.'#'Check out Your ward attendance!' 173 | body = f""" 174 | <<<<<<<<<<<<< YOUR ATTENDANCE >>>>>>>>>>>>>>> 175 | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 176 | RollNo : {d[name][1]} 177 | NAME : {name} 178 | DATE : {current_date} 179 | TIME : {current_time} 180 | {name} {res_loginRout} attended on {current_date} at {current_time} has successfully marked the attendance. 181 | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 182 | Dear {d[name][0]}, \n 183 | This message is from Organisation/college automatic attendance system. \n 184 | Your attendance has been successfully marked using the face recognition system. This means that you have been present and accounted for during work hours. I would like to take this opportunity to congratulate you on your successful use of the system. 185 | \n 186 | The face recognition system has also enhanced our security measures, as it only allows authorized personnel with registered faces to enter the premises. This ensures that our workplace remains safe and secure at all times. 187 | \n 188 | As a Organisation/college attendance system would like to remind you to continue using the face recognition system for attendance marking. It is important that we maintain accurate attendance records to ensure that everyone is accounted for during work hours.. 189 | \n 190 | Thank you for your attention to this matter. 191 | \n 192 | Best regards, 193 | \n 194 | {name}""" 195 | 196 | em = EmailMessage() 197 | em['From'] = 'XYZ'#email_sender 198 | em['To'] = email_receiver 199 | em['Subject'] = subject 200 | em.set_content(body) 201 | 202 | # Add SSL (layer of security) 203 | context = ssl.create_default_context() 204 | 205 | # Log in and send the email 206 | with smtplib.SMTP_SSL('smtp.gmail.com', 465, context=context) as smtp: 207 | smtp.login(email_sender, email_password) 208 | smtp.sendmail(email_sender, email_receiver, em.as_string()) 209 | print(f"emailsent to {name}") 210 | resulted_founded_names = [] 211 | except: 212 | print("NO match found") 213 | #------------------------------------------------------------------------ 214 | 215 | ## VIDEO GUIDANCE FOR CREATING AUTOMAINIG FEATURE FOR THIS PROJECT AND FOR REAL TIME USING COLAB AND GOOGLE DRIVE by PYTHON CODE 216 | 217 | https://user-images.githubusercontent.com/106643865/236247866-2f702281-def1-4b77-96e1-f1ce70ad7fae.mp4 218 | 219 | 220 | Result: 221 | > Acknowledgement Email is Sent Successfully 222 | > ![AutomaticMailingFeature-Result](https://user-images.githubusercontent.com/106643865/236212934-6946c66e-2e05-413e-86b2-66beefac7fa8.png) 223 | 224 | -------------------------------------------------------------------------------- /SubProjects/Automatic Mailing Acknowledgement/VIDEO GUIDANCE FOR CREATING AUTOMAINIG FEATURE (1).mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/SubProjects/Automatic Mailing Acknowledgement/VIDEO GUIDANCE FOR CREATING AUTOMAINIG FEATURE (1).mp4 -------------------------------------------------------------------------------- /SubProjects/Readme.md: -------------------------------------------------------------------------------- 1 | # These are Sub Features present in the project. 2 | This Project is a combination of following SubProjects:
3 | 1.VideoCapture in GoogleColab
4 | 2.Face Detection
5 | 3.Face Recognition
6 | 4.Attendance Update
7 | 5.Automatic Mailing Acknowledgement
8 | -------------------------------------------------------------------------------- /SubProjects/VideoCapture in GoogleColab/Readme.md: -------------------------------------------------------------------------------- 1 | # REAL TIME VIDEO CAPTURE IN GOOGLE COLAB NOTEBOOK 2 | In Google colab since it is a cloud platform it doesnot have any direct display attaced to it. 3 | So we are using the google colab references for creating a video stream for taking camera video as input converting the data into photo frames.For further process. 4 | For more reference please visit: https://colab.research.google.com/drive/1QnC7lV7oVFk5OZCm75fqbLAfD9qBy9bw 5 | 6 | -------------------------------------------------------------------------------- /face_recognition/Gousemya.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/face_recognition/Gousemya.jpg -------------------------------------------------------------------------------- /face_recognition/NAGASESHU.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/face_recognition/NAGASESHU.jpeg -------------------------------------------------------------------------------- /face_recognition/NAGASESHU.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/face_recognition/NAGASESHU.jpg -------------------------------------------------------------------------------- /face_recognition/Readme.md: -------------------------------------------------------------------------------- 1 | This is a folder for known faces used in code as "Know faces dir = ...path" 2 | -------------------------------------------------------------------------------- /face_recognition/SRISRI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/face_recognition/SRISRI.png -------------------------------------------------------------------------------- /face_recognition/Surya.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/face_recognition/Surya.jpeg -------------------------------------------------------------------------------- /face_recognition/VAMSI.jfif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/face_recognition/VAMSI.jfif -------------------------------------------------------------------------------- /face_recognition/VAMSI.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/face_recognition/VAMSI.jpeg -------------------------------------------------------------------------------- /face_recognition/VAMSI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/face_recognition/VAMSI.png -------------------------------------------------------------------------------- /face_recognition/VIKAS.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Srisrijakka1/Real-Time-Face-Recognition-Based-Attendance-Monitoring-System/7af08db1e97ebbed6580f218eb918291dd9914f1/face_recognition/VIKAS.jpg --------------------------------------------------------------------------------