fasd / Test.py
Alisher Amantay
first commit
9067733
raw
history blame
1.6 kB
import cv2 as cv
import torch
import torch.nn as nn
from torchvision import transforms
import numpy as np
from Model import DeePixBiS
from Loss import PixWiseBCELoss
from Metrics import predict, test_accuracy, test_loss
model = DeePixBiS(pretrained=False)
model.load_state_dict(torch.load('./DeePixBiS.pth'))
model.eval()
tfms = transforms.Compose([
transforms.ToPILImage(),
transforms.Resize((224, 224)),
transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])
faceClassifier = cv.CascadeClassifier('Classifiers/haarface.xml')
camera = cv.VideoCapture(0)
while cv.waitKey(1) & 0xFF != ord('q'):
_, img = camera.read()
grey = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
faces = faceClassifier.detectMultiScale(grey, scaleFactor=1.1, minNeighbors=4)
for x, y, w, h in faces:
faceRegion = img[y:y + h, x:x + w]
faceRegion = cv.cvtColor(faceRegion, cv.COLOR_BGR2RGB)
# cv.imshow('Test', faceRegion)
faceRegion = tfms(faceRegion)
faceRegion = faceRegion.unsqueeze(0)
mask, binary = model.forward(faceRegion)
res = torch.mean(mask).item()
# res = binary.item()
if res < 0.7:
label = f'Spoof {res:.2f}'
color = (0, 0, 255)
else:
label = f'Real {res:.2f}'
color = (0, 255, 0)
print(f'{label}: {res}')
cv.rectangle(img, (x, y), (x + w, y + h), color, 2)
cv.putText(img, label, (x, y + h + 30), cv.FONT_HERSHEY_COMPLEX, 1, color)
cv.imshow('Deep Pixel-wise Binary Supervision Anti-Spoofing', img)