Skip to content

Instantly share code, notes, and snippets.

@brotherofken
Created June 29, 2020 20:40
Show Gist options
  • Save brotherofken/990a0c75e5b46ceb72d12ab6c9d04102 to your computer and use it in GitHub Desktop.
Save brotherofken/990a0c75e5b46ceb72d12ab6c9d04102 to your computer and use it in GitHub Desktop.
Changes that make face filter working
diff --git a/lib/face_filter.py b/lib/face_filter.py
index 096709d..cb4a10f 100644
--- a/lib/face_filter.py
+++ b/lib/face_filter.py
@@ -5,7 +5,7 @@ import logging
from lib.vgg_face import VGGFace
from lib.image import read_image
-from plugins.extract.pipeline import Extractor
+from plugins.extract.pipeline import Extractor, ExtractMedia
logger = logging.getLogger(__name__) # pylint: disable=invalid-name
@@ -72,8 +72,8 @@ class FaceFilter():
self.queue_images(extractor)
extractor.launch()
for faces in extractor.detected_faces():
- filename = faces["filename"]
- detected_faces = faces["detected_faces"]
+ filename = faces.filename
+ detected_faces = faces.detected_faces
if len(detected_faces) > 1:
logger.warning("Multiple faces found in %s file: '%s'. Using first detected "
"face.", self.filters[filename]["type"], filename)
@@ -84,11 +84,8 @@ class FaceFilter():
in_queue = extractor.input_queue
for fname, img in self.filters.items():
logger.debug("Adding to filter queue: '%s' (%s)", fname, img["type"])
- feed_dict = dict(filename=fname, image=img["image"])
- if img.get("detected_faces", None):
- feed_dict["detected_faces"] = img["detected_faces"]
- logger.debug("Queueing filename: '%s' items: %s",
- fname, list(feed_dict.keys()))
+ feed_dict = ExtractMedia(fname, image=img['image'], detected_faces=img.get('detected_faces', None))
+ logger.debug("Queueing filename: '%s'", fname)
in_queue.put(feed_dict)
logger.debug("Sending EOF to filter queue")
in_queue.put("EOF")
diff --git a/plugins/extract/pipeline.py b/plugins/extract/pipeline.py
index cadf2b5..1878764 100644
--- a/plugins/extract/pipeline.py
+++ b/plugins/extract/pipeline.py
@@ -87,7 +87,7 @@ class Extractor():
self._flow = self._set_flow(detector, aligner, masker)
# We only ever need 1 item in each queue. This is 2 items cached (1 in queue 1 waiting
# for queue) at each point. Adding more just stacks RAM with no speed benefit.
- self._queue_size = 1
+ self._queue_size = 2
self._vram_stats = self._get_vram_stats()
self._detect = self._load_detect(detector, rotate_images, min_size, configfile)
self._align = self._load_align(aligner, configfile, normalize_method)
diff --git a/scripts/fsmedia.py b/scripts/fsmedia.py
index 042ec3b..ffa0406 100644
--- a/scripts/fsmedia.py
+++ b/scripts/fsmedia.py
@@ -629,4 +629,4 @@ class FaceFilter(PostProcessAction):
logger.trace("Accepting recognised face. Frame: %s. Face: %s",
extract_media.filename, idx)
ret_faces.append(detect_face)
- extract_media.detected_faces = ret_faces
+ extract_media.add_detected_faces(ret_faces)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment