From 7935dd976977ad6b400f2aa1efa3f31b17ce243f Mon Sep 17 00:00:00 2001 From: Tiago Freitas Pereira <tiagofrepereira@gmail.com> Date: Wed, 9 Jun 2021 16:32:02 +0200 Subject: [PATCH] Fixed bug with VGG16. The code was pointing to the hot-encoded instead to the fc7 --- bob/bio/face/embeddings/opencv.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/bob/bio/face/embeddings/opencv.py b/bob/bio/face/embeddings/opencv.py index 7965914e..08228eba 100644 --- a/bob/bio/face/embeddings/opencv.py +++ b/bob/bio/face/embeddings/opencv.py @@ -108,7 +108,7 @@ class VGG16_Oxford(OpenCVTransformer): """ - def __init__(self): + def __init__(self, embedding_layer="fc7"): urls = [ "https://www.robots.ox.ac.uk/~vgg/software/vgg_face/src/vgg_face_caffe.tar.gz", "http://bobconda.lab.idiap.ch/public-upload/data/bob/bob.bio.face/master/caffe/vgg_face_caffe.tar.gz", @@ -126,6 +126,7 @@ class VGG16_Oxford(OpenCVTransformer): checkpoint_path = os.path.join(path, "vgg_face_caffe", "VGG_FACE.caffemodel") caffe_average_img = [129.1863, 104.7624, 93.5940] + self.embedding_layer = embedding_layer def preprocessor(X): """ @@ -152,6 +153,20 @@ class VGG16_Oxford(OpenCVTransformer): net = cv2.dnn.readNet(self.checkpoint_path, self.config) self.model = net + def transform(self, X): + import cv2 + + if self.model is None: + self._load_model() + + X = check_array(X, allow_nd=True) + + X = self.preprocessor(X) + + self.model.setInput(X) + + return self.model.forward(self.embedding_layer) + def vgg16_oxford_baseline(annotation_type, fixed_positions=None): """ -- GitLab