{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "4d70291b", "metadata": {}, "outputs": [], "source": [ "# import the necessary packages\n", "from tensorflow.keras.applications.mobilenet_v2 import preprocess_input\n", "from tensorflow.keras.preprocessing.image import img_to_array\n", "from tensorflow.keras.models import load_model\n", "from imutils.video import VideoStream\n", "import numpy as np\n", "import imutils\n", "import time\n", "import cv2\n", "import os" ] }, { "cell_type": "code", "execution_count": 2, "id": "d59f4c2f", "metadata": {}, "outputs": [], "source": [ "def detect_and_predict_mask(frame, faceNet, maskNet):\n", " # grab the dimensions of the frame and then construct a blob from it\n", " (h, w) = frame.shape[:2]\n", " blob = cv2.dnn.blobFromImage(frame, 1.0, (224,224),(104.0,177.0,123.0) )\n", " \n", " # pass the blob through the network and obtain the face detections\n", " faceNet.setInput(blob)\n", " detections = faceNet.forward()\n", " print(detections.shape)\n", " \n", " # initialize our list of faces, their corresponding locations, and the list of predictions from our face mask network\n", " faces = []\n", " locs = []\n", " preds = []\n", " # loop over the detections\n", " for i in range(0,detections.shape[2]):\n", " # extract the confidence (i.e., probability) associated with the detection\n", " confidence = detections[0,0,i,2]\n", " \n", " # filter out weak detections by ensuring the confidence is greater than minimum confidence\n", " if confidence > 0.5:\n", " # compute the (x, y)-cordinates of the bounding box for the object\n", " box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])\n", " (startX, startY, endX, endY) = box.astype(\"int\")\n", " \n", " # ensure the bounding boxes fall within the dimensions of the frame\n", " (startX , startY) = (max(0,startX) , max(0,startY))\n", " (endX, endY) = (min(w-1,endX) , min(h-1,endY))\n", " \n", " # extract the face ROI, convert it from BGR to RGB channel ordering, resize it to 224x224, and preprocess it face=frame[startY:endY, startX:endX]\n", " # bounding mask only for face detected\n", " face = frame[startY:endY , startX:endX]\n", " face = cv2.cvtColor(face, cv2.COLOR_BGR2RGB)\n", " face = cv2.resize(face, (224,224))\n", " face = img_to_array(face)\n", " face = preprocess_input(face)\n", " \n", " # add the face and bounding boxes to their respective lists\n", " faces.append(face)\n", " locs.append((startX, startY, endX, endY))\n", " \n", " # only make a predictions if at least one face was detected\n", " if len(faces) > 0:\n", " # far faster inference we'll make batch predictions on *all* faces at the same time rather than one-by-one predictions in the above 'for' loop\n", " faces = np.array(faces,dtype=\"float32\")\n", " preds = maskNet.predict(faces, batch_size=32)\n", " \n", " # return a 2-tuple of the face locations and their corresponding locations\n", " return (locs, preds)" ] }, { "cell_type": "code", "execution_count": 4, "id": "74bfdab6", "metadata": {}, "outputs": [], "source": [ "# load our serialized face detector model from disk\n", "prototxtPath = r\"deploy.prototxt.txt\"\n", "weightsPath = r\"res10_300x300_ssd_iter_140000.caffemodel\"\n", "faceNet = cv2.dnn.readNet(prototxtPath,weightsPath)\n", "\n", "# load the face mask detector model from disk\n", "maskNet = load_model(\"mask_detector.model\")" ] }, { "cell_type": "code", "execution_count": 7, "id": "52cc9df2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[INFO] starting video stream...\n", "[INFO] starting video stream...\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 62ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 64ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 59ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 111ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 78ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 67ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 63ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 59ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 56ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 49ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 55ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 64ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 67ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 56ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 57ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 57ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 55ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 49ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 48ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 56ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 54ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 60ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 54ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 58ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 54ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 70ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 68ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 56ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 57ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 49ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 58ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 59ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 55ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 54ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 53ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 54ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 61ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 53ms/step\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 46ms/step\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 54ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 54ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 54ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 56ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 55ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 53ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 59ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 55ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 53ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 64ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 49ms/step\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 49ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 61ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 55ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 74ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 62ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 58ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 59ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 49ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 48ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 55ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 53ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 54ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 53ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 53ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 55ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 53ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 49ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 57ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 60ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 59ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 57ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 62ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 59ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 54ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 53ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 54ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 59ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 48ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 53ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 54ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 54ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 60ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 60ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 49ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 49ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 47ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 47ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 48ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 55ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 54ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 49ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 48ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 54ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 48ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 47ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 49ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 53ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 53ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 49ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 49ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 49ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 53ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 49ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 50ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 52ms/step\n", "(1, 1, 200, 7)\n", "1/1 [==============================] - 0s 51ms/step\n" ] } ], "source": [ "# initialize the video stream\n", "print(\"[INFO] starting video stream...\")\n", "vs = VideoStream(src=0).start()\n", "\n", "# initialize the video stream\n", "print(\"[INFO] starting video stream...\")\n", "vs = VideoStream(src=0).start()\n", "# loop over the frames from the video stream\n", "while True:\n", " # grab the frame from the threaded video stream and resize it to have a max width of 400 pixels\n", " frame = vs.read()\n", " frame = imutils.resize(frame,width=400)\n", " \n", " # detect faces in the frame and determine if they are wearing a face mask or not\n", " (locs, preds) = detect_and_predict_mask(frame, faceNet, maskNet)\n", " \n", " # loop over the detected face locations and their correspondings locations\n", " for (box, pred) in zip(locs, preds):\n", " # unpack the bounding box and predictions\n", " (startX, startY, endX, endY) = box\n", " (mask, withoutMask) = pred\n", " \n", " # determine the class label and color we'll use to draw the bounding box and text\n", " label = \"Mask\" if mask> withoutMask else \"No Mask\"\n", " color = (0,255,0) if label==\"Mask\" else (0,0,255)\n", " \n", " # include the probability in the label\n", " label = \"{}: {:.2f}%\".format(label,max(mask, withoutMask) *100)\n", " \n", " # display the label and bounding box rectangle on the output frame\n", " cv2.putText(frame,label,(startX,startY-10), cv2.FONT_HERSHEY_SIMPLEX, 0.45, color, 2)\n", " cv2.rectangle(frame, (startX,startY), (endX,endY),color,2)\n", " \n", " # show the output frame\n", " cv2.imshow(\"Frame\",frame)\n", " key = cv2.waitKey(1) & 0xFF\n", " \n", " # if the 'q' key was pressed, break from the loop\n", " if key == ord(\"q\"):\n", " break\n", " \n", " \n", "# do a bit of cleanup\n", "cv2.destroyAllWindows()\n", "vs.stop()" ] }, { "cell_type": "code", "execution_count": 8, "id": "8b404a2f", "metadata": {}, "outputs": [], "source": [ "vs.stop()" ] }, { "cell_type": "code", "execution_count": 9, "id": "7fe320b0", "metadata": {}, "outputs": [], "source": [ "cv2.destroyAllWindows()" ] }, { "cell_type": "code", "execution_count": null, "id": "a24deadc", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.9" } }, "nbformat": 4, "nbformat_minor": 5 }