diff --git a/locales/es/LC_MESSAGES/tools.mask.cli.mo b/locales/es/LC_MESSAGES/tools.mask.cli.mo index 2b153b9c..ad86f746 100644 Binary files a/locales/es/LC_MESSAGES/tools.mask.cli.mo and b/locales/es/LC_MESSAGES/tools.mask.cli.mo differ diff --git a/locales/es/LC_MESSAGES/tools.mask.cli.po b/locales/es/LC_MESSAGES/tools.mask.cli.po index da416882..1d70c85b 100644 --- a/locales/es/LC_MESSAGES/tools.mask.cli.po +++ b/locales/es/LC_MESSAGES/tools.mask.cli.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: faceswap.spanish\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-03-28 23:51+0000\n" -"PO-Revision-Date: 2024-03-29 00:01+0000\n" +"POT-Creation-Date: 2024-06-28 13:45+0100\n" +"PO-Revision-Date: 2024-06-28 13:47+0100\n" "Last-Translator: \n" "Language-Team: tokafondo\n" "Language: es_ES\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Generated-By: pygettext.py 1.5\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.4.4\n" #: tools/mask/cli.py:15 msgid "" @@ -181,7 +181,7 @@ msgstr "" "файл выравниваний. Примечание. «custom» должен быть выбранным «masker», а " "маски должны быть в том же формате, что и «input-type» (frames или faces)." -#: tools/mask/cli.py:135 tools/mask/cli.py:154 tools/mask/cli.py:174 +#: tools/mask/cli.py:135 tools/mask/cli.py:154 tools/mask/cli.py:176 msgid "import" msgstr "importar" @@ -216,9 +216,11 @@ msgstr "" #: tools/mask/cli.py:156 msgid "" -"R|Import only. The centering to use when importing masks. Note: For any job " -"other than 'import' this option is ignored as mask centering is handled " -"internally.\n" +"R|Import/Output only. When importing masks, this is the centering to use. " +"For output this is only used for outputting custom imported masks, and " +"should correspond to the centering used when importing the mask. Note: For " +"any job other than 'import' and 'output' this option is ignored as mask " +"centering is handled internally.\n" "L|face: Centers the mask on the center of the face, adjusting for pitch and " "yaw. Outside of requirements for full head masking/training, this is likely " "to be the best choice.\n" @@ -230,9 +232,12 @@ msgid "" "the nose with and crops closely to the face. Can result in the edges of the " "mask appearing outside of the training area." msgstr "" -"R|Sólo importar. El centrado a utilizar al importar máscaras. Nota: Para " -"cualquier trabajo que no sea \"importar\", esta opción se ignora ya que el " -"centrado de la máscara se maneja internamente.\n" +"R|Solo importación/salida. Al importar máscaras, este es el centrado que se " +"debe utilizar. Para la salida, esto solo se utiliza para generar máscaras " +"importadas personalizadas y debe corresponder al centrado utilizado al " +"importar la máscara. Nota: Para cualquier trabajo que no sea \"importación\" " +"y \"salida\", esta opción se ignora ya que el centrado de la máscara se " +"maneja internamente.\n" "L|cara: centra la máscara en el centro de la cara, ajustando el tono y la " "orientación. Aparte de los requisitos para el entrenamiento/enmascaramiento " "de cabeza completa, esta probablemente sea la mejor opción.\n" @@ -244,7 +249,7 @@ msgstr "" "nariz y la recorta cerca de la cara. Puede provocar que los bordes de la " "máscara aparezcan fuera del área de entrenamiento." -#: tools/mask/cli.py:179 +#: tools/mask/cli.py:181 msgid "" "Import only. The size, in pixels to internally store the mask at.\n" "The default is 128 which is fine for nearly all usecases. Larger sizes will " @@ -256,12 +261,12 @@ msgstr "" "uso. Los tamaños más grandes darán como resultado archivos de alineaciones " "más grandes y un procesamiento más largo." -#: tools/mask/cli.py:187 tools/mask/cli.py:195 tools/mask/cli.py:209 -#: tools/mask/cli.py:223 tools/mask/cli.py:233 +#: tools/mask/cli.py:189 tools/mask/cli.py:197 tools/mask/cli.py:211 +#: tools/mask/cli.py:225 tools/mask/cli.py:235 msgid "output" msgstr "salida" -#: tools/mask/cli.py:189 +#: tools/mask/cli.py:191 msgid "" "Optional output location. If provided, a preview of the masks created will " "be output in the given folder." @@ -269,7 +274,7 @@ msgstr "" "Ubicación de salida opcional. Si se proporciona, se obtendrá una vista " "previa de las máscaras creadas en la carpeta indicada." -#: tools/mask/cli.py:200 +#: tools/mask/cli.py:202 msgid "" "Apply gaussian blur to the mask output. Has the effect of smoothing the " "edges of the mask giving less of a hard edge. the size is in pixels. This " @@ -282,7 +287,7 @@ msgstr "" "redondeará al siguiente número impar. NB: Sólo afecta a la vista previa de " "salida. Si se ajusta a 0, se desactiva" -#: tools/mask/cli.py:214 +#: tools/mask/cli.py:216 msgid "" "Helps reduce 'blotchiness' on some masks by making light shades white and " "dark shades black. Higher values will impact more of the mask. NB: Only " @@ -293,7 +298,7 @@ msgstr "" "más a la máscara. NB: Sólo afecta a la vista previa de salida. Si se ajusta " "a 0, se desactiva" -#: tools/mask/cli.py:225 +#: tools/mask/cli.py:227 msgid "" "R|How to format the output when processing is set to 'output'.\n" "L|combined: The image contains the face/frame, face mask and masked face.\n" @@ -308,7 +313,7 @@ msgstr "" "enmascarada.\n" "L|mask: Sólo emite la máscara como una imagen de un solo canal." -#: tools/mask/cli.py:235 +#: tools/mask/cli.py:237 msgid "" "R|Whether to output the whole frame or only the face box when using output " "processing. Only has an effect when using frames as input." diff --git a/locales/kr/LC_MESSAGES/tools.mask.cli.mo b/locales/kr/LC_MESSAGES/tools.mask.cli.mo index 89a197bb..9de146e0 100644 Binary files a/locales/kr/LC_MESSAGES/tools.mask.cli.mo and b/locales/kr/LC_MESSAGES/tools.mask.cli.mo differ diff --git a/locales/kr/LC_MESSAGES/tools.mask.cli.po b/locales/kr/LC_MESSAGES/tools.mask.cli.po index ce2b6317..94080f7f 100644 --- a/locales/kr/LC_MESSAGES/tools.mask.cli.po +++ b/locales/kr/LC_MESSAGES/tools.mask.cli.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-03-28 23:51+0000\n" -"PO-Revision-Date: 2024-03-29 00:05+0000\n" +"POT-Creation-Date: 2024-06-28 13:45+0100\n" +"PO-Revision-Date: 2024-06-28 13:48+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: ko_KR\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.4.4\n" #: tools/mask/cli.py:15 msgid "" @@ -165,7 +165,7 @@ msgstr "" "'custom'은 선택된 'masker'여야 하며 마스크는 'input-type'(frames 또는 faces)" "과 동일한 형식이어야 합니다." -#: tools/mask/cli.py:135 tools/mask/cli.py:154 tools/mask/cli.py:174 +#: tools/mask/cli.py:135 tools/mask/cli.py:154 tools/mask/cli.py:176 msgid "import" msgstr "수입" @@ -196,9 +196,11 @@ msgstr "" #: tools/mask/cli.py:156 msgid "" -"R|Import only. The centering to use when importing masks. Note: For any job " -"other than 'import' this option is ignored as mask centering is handled " -"internally.\n" +"R|Import/Output only. When importing masks, this is the centering to use. " +"For output this is only used for outputting custom imported masks, and " +"should correspond to the centering used when importing the mask. Note: For " +"any job other than 'import' and 'output' this option is ignored as mask " +"centering is handled internally.\n" "L|face: Centers the mask on the center of the face, adjusting for pitch and " "yaw. Outside of requirements for full head masking/training, this is likely " "to be the best choice.\n" @@ -210,9 +212,11 @@ msgid "" "the nose with and crops closely to the face. Can result in the edges of the " "mask appearing outside of the training area." msgstr "" -"R|가져오기만. 마스크를 가져올 때 사용할 센터링입니다. 참고: '가져오기' 이외" -"의 모든 작업의 경우 마스크 센터링이 내부적으로 처리되므로 이 옵션은 무시됩니" -"다.\n" +"R|Import/Output only. 마스크를 가져올 때, 이것은 사용할 중앙 정렬입니다. 출력" +"의 경우, 이것은 사용자 지정 가져온 마스크를 출력하는 데만 사용되며, 마스크를 " +"가져올 때 사용된 중앙 정렬과 일치해야 합니다. 참고: 'import' 및 'output' 이외" +"의 모든 작업의 ​​경우 마스크 중앙 정렬이 내부적으로 처리되므로 이 옵션은 무시됩" +"니다.\n" "L|면: 피치와 요를 조정하여 마스크를 얼굴 중앙에 배치합니다. 머리 전체 마스킹/" "훈련에 대한 요구 사항을 제외하면 이것이 최선의 선택일 가능성이 높습니다.\n" "L|head: 마스크를 머리 중앙에 배치하여 피치와 요를 조정합니다. 참고: 마스크 내" @@ -221,7 +225,7 @@ msgstr "" "L|레거시: '원래' 추출 기술입니다. 마스크를 코 근처 중앙에 배치하고 얼굴에 가" "깝게 자릅니다. 마스크 가장자리가 훈련 영역 외부에 나타날 수 있습니다." -#: tools/mask/cli.py:179 +#: tools/mask/cli.py:181 msgid "" "Import only. The size, in pixels to internally store the mask at.\n" "The default is 128 which is fine for nearly all usecases. Larger sizes will " @@ -231,12 +235,12 @@ msgstr "" "기본값은 128이며 거의 모든 사용 사례에 적합합니다. 크기가 클수록 정렬 파일도 " "커지고 처리 시간도 길어집니다." -#: tools/mask/cli.py:187 tools/mask/cli.py:195 tools/mask/cli.py:209 -#: tools/mask/cli.py:223 tools/mask/cli.py:233 +#: tools/mask/cli.py:189 tools/mask/cli.py:197 tools/mask/cli.py:211 +#: tools/mask/cli.py:225 tools/mask/cli.py:235 msgid "output" msgstr "출력" -#: tools/mask/cli.py:189 +#: tools/mask/cli.py:191 msgid "" "Optional output location. If provided, a preview of the masks created will " "be output in the given folder." @@ -244,7 +248,7 @@ msgstr "" "선택적 출력 위치. 만약 값이 제공된다면 생성된 마스크 미리 보기가 주어진 폴더" "에 출력됩니다." -#: tools/mask/cli.py:200 +#: tools/mask/cli.py:202 msgid "" "Apply gaussian blur to the mask output. Has the effect of smoothing the " "edges of the mask giving less of a hard edge. the size is in pixels. This " @@ -256,7 +260,7 @@ msgstr "" "은 홀수여야 하며 짝수가 전달되면 다음 홀수로 반올림됩니다. NB: 출력 미리 보기" "에만 영향을 줍니다. 0으로 설정하면 꺼집니다" -#: tools/mask/cli.py:214 +#: tools/mask/cli.py:216 msgid "" "Helps reduce 'blotchiness' on some masks by making light shades white and " "dark shades black. Higher values will impact more of the mask. NB: Only " @@ -266,7 +270,7 @@ msgstr "" "줄이는 데 도움이 됩니다. 값이 클수록 마스크에 더 많은 영향을 미칩니다. NB: 출" "력 미리 보기에만 영향을 줍니다. 0으로 설정하면 꺼집니다" -#: tools/mask/cli.py:225 +#: tools/mask/cli.py:227 msgid "" "R|How to format the output when processing is set to 'output'.\n" "L|combined: The image contains the face/frame, face mask and masked face.\n" @@ -279,7 +283,7 @@ msgstr "" "L|masked: 마스크된 얼굴/프레임을 Rgba 이미지로 출력합니다.\n" "L|mask: 마스크를 단일 채널 이미지로만 출력합니다." -#: tools/mask/cli.py:235 +#: tools/mask/cli.py:237 msgid "" "R|Whether to output the whole frame or only the face box when using output " "processing. Only has an effect when using frames as input." diff --git a/locales/ru/LC_MESSAGES/tools.mask.cli.mo b/locales/ru/LC_MESSAGES/tools.mask.cli.mo index e682d111..89631d0c 100644 Binary files a/locales/ru/LC_MESSAGES/tools.mask.cli.mo and b/locales/ru/LC_MESSAGES/tools.mask.cli.mo differ diff --git a/locales/ru/LC_MESSAGES/tools.mask.cli.po b/locales/ru/LC_MESSAGES/tools.mask.cli.po index 1f63fe42..6cabf81c 100644 --- a/locales/ru/LC_MESSAGES/tools.mask.cli.po +++ b/locales/ru/LC_MESSAGES/tools.mask.cli.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-03-28 23:51+0000\n" -"PO-Revision-Date: 2024-03-29 00:07+0000\n" +"POT-Creation-Date: 2024-06-28 13:45+0100\n" +"PO-Revision-Date: 2024-06-28 13:48+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: ru\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.4.4\n" #: tools/mask/cli.py:15 msgid "" @@ -175,7 +175,7 @@ msgstr "" "de alineaciones. Nota: 'custom' debe ser el 'masker' seleccionado y las " "máscaras deben tener el mismo formato que el 'input-type' (frames o faces)" -#: tools/mask/cli.py:135 tools/mask/cli.py:154 tools/mask/cli.py:174 +#: tools/mask/cli.py:135 tools/mask/cli.py:154 tools/mask/cli.py:176 msgid "import" msgstr "Импортировать" @@ -208,9 +208,11 @@ msgstr "" #: tools/mask/cli.py:156 msgid "" -"R|Import only. The centering to use when importing masks. Note: For any job " -"other than 'import' this option is ignored as mask centering is handled " -"internally.\n" +"R|Import/Output only. When importing masks, this is the centering to use. " +"For output this is only used for outputting custom imported masks, and " +"should correspond to the centering used when importing the mask. Note: For " +"any job other than 'import' and 'output' this option is ignored as mask " +"centering is handled internally.\n" "L|face: Centers the mask on the center of the face, adjusting for pitch and " "yaw. Outside of requirements for full head masking/training, this is likely " "to be the best choice.\n" @@ -222,9 +224,12 @@ msgid "" "the nose with and crops closely to the face. Can result in the edges of the " "mask appearing outside of the training area." msgstr "" -"R|Только импорт. Центрирование, используемое при импорте масок. Примечание. " -"Для любого задания, кроме «импорта», этот параметр игнорируется, поскольку " -"центрирование маски обрабатывается внутри.\n" +"R|Только импорт/вывод. При импорте масок это центрирование для " +"использования. Для вывода это используется только для вывода " +"пользовательских импортированных масок и должно соответствовать " +"центрированию, используемому при импорте маски. Примечание: для любого " +"задания, кроме «импорта» и «вывода», эта опция игнорируется, поскольку " +"центрирование маски обрабатывается внутренне.\n" "L|face: центрирует маску по центру лица с регулировкой угла наклона и " "отклонения от курса. Помимо требований к полной маскировке/тренировке " "головы, это, вероятно, будет лучшим выбором.\n" @@ -236,7 +241,7 @@ msgstr "" "приближает ее к лицу. Это может привести к тому, что края маски окажутся за " "пределами тренировочной зоны." -#: tools/mask/cli.py:179 +#: tools/mask/cli.py:181 msgid "" "Import only. The size, in pixels to internally store the mask at.\n" "The default is 128 which is fine for nearly all usecases. Larger sizes will " @@ -247,12 +252,12 @@ msgstr "" "использования. Большие размеры приведут к увеличению размера файлов " "выравниваний и более длительной обработке." -#: tools/mask/cli.py:187 tools/mask/cli.py:195 tools/mask/cli.py:209 -#: tools/mask/cli.py:223 tools/mask/cli.py:233 +#: tools/mask/cli.py:189 tools/mask/cli.py:197 tools/mask/cli.py:211 +#: tools/mask/cli.py:225 tools/mask/cli.py:235 msgid "output" msgstr "вывод" -#: tools/mask/cli.py:189 +#: tools/mask/cli.py:191 msgid "" "Optional output location. If provided, a preview of the masks created will " "be output in the given folder." @@ -260,7 +265,7 @@ msgstr "" "Необязательное местоположение вывода. Если указано, предварительный просмотр " "созданных масок будет выведен в указанную папку." -#: tools/mask/cli.py:200 +#: tools/mask/cli.py:202 msgid "" "Apply gaussian blur to the mask output. Has the effect of smoothing the " "edges of the mask giving less of a hard edge. the size is in pixels. This " @@ -273,7 +278,7 @@ msgstr "" "Примечание: влияет только на предварительный просмотр. Установите значение 0 " "для выключения" -#: tools/mask/cli.py:214 +#: tools/mask/cli.py:216 msgid "" "Helps reduce 'blotchiness' on some masks by making light shades white and " "dark shades black. Higher values will impact more of the mask. NB: Only " @@ -284,7 +289,7 @@ msgstr "" "часть маски. Примечание: влияет только на предварительный просмотр. " "Установите значение 0 для выключения" -#: tools/mask/cli.py:225 +#: tools/mask/cli.py:227 msgid "" "R|How to format the output when processing is set to 'output'.\n" "L|combined: The image contains the face/frame, face mask and masked face.\n" @@ -297,7 +302,7 @@ msgstr "" "L|masked: Вывести лицо/кадр как изображение rgba с маскированным лицом.\n" "L|mask: Выводить только маску как одноканальное изображение." -#: tools/mask/cli.py:235 +#: tools/mask/cli.py:237 msgid "" "R|Whether to output the whole frame or only the face box when using output " "processing. Only has an effect when using frames as input." diff --git a/locales/tools.mask.cli.pot b/locales/tools.mask.cli.pot index 54563a86..f8024c88 100644 --- a/locales/tools.mask.cli.pot +++ b/locales/tools.mask.cli.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-03-28 23:51+0000\n" +"POT-Creation-Date: 2024-06-28 13:45+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -114,7 +114,7 @@ msgid "" "must be in the same format as the 'input-type' (frames or faces)" msgstr "" -#: tools/mask/cli.py:135 tools/mask/cli.py:154 tools/mask/cli.py:174 +#: tools/mask/cli.py:135 tools/mask/cli.py:154 tools/mask/cli.py:176 msgid "import" msgstr "" @@ -135,9 +135,11 @@ msgstr "" #: tools/mask/cli.py:156 msgid "" -"R|Import only. The centering to use when importing masks. Note: For any job " -"other than 'import' this option is ignored as mask centering is handled " -"internally.\n" +"R|Import/Output only. When importing masks, this is the centering to use. " +"For output this is only used for outputting custom imported masks, and " +"should correspond to the centering used when importing the mask. Note: For " +"any job other than 'import' and 'output' this option is ignored as mask " +"centering is handled internally.\n" "L|face: Centers the mask on the center of the face, adjusting for pitch and " "yaw. Outside of requirements for full head masking/training, this is likely " "to be the best choice.\n" @@ -150,25 +152,25 @@ msgid "" "mask appearing outside of the training area." msgstr "" -#: tools/mask/cli.py:179 +#: tools/mask/cli.py:181 msgid "" "Import only. The size, in pixels to internally store the mask at.\n" "The default is 128 which is fine for nearly all usecases. Larger sizes will " "result in larger alignments files and longer processing." msgstr "" -#: tools/mask/cli.py:187 tools/mask/cli.py:195 tools/mask/cli.py:209 -#: tools/mask/cli.py:223 tools/mask/cli.py:233 +#: tools/mask/cli.py:189 tools/mask/cli.py:197 tools/mask/cli.py:211 +#: tools/mask/cli.py:225 tools/mask/cli.py:235 msgid "output" msgstr "" -#: tools/mask/cli.py:189 +#: tools/mask/cli.py:191 msgid "" "Optional output location. If provided, a preview of the masks created will " "be output in the given folder." msgstr "" -#: tools/mask/cli.py:200 +#: tools/mask/cli.py:202 msgid "" "Apply gaussian blur to the mask output. Has the effect of smoothing the " "edges of the mask giving less of a hard edge. the size is in pixels. This " @@ -176,14 +178,14 @@ msgid "" "to the next odd number. NB: Only effects the output preview. Set to 0 for off" msgstr "" -#: tools/mask/cli.py:214 +#: tools/mask/cli.py:216 msgid "" "Helps reduce 'blotchiness' on some masks by making light shades white and " "dark shades black. Higher values will impact more of the mask. NB: Only " "effects the output preview. Set to 0 for off" msgstr "" -#: tools/mask/cli.py:225 +#: tools/mask/cli.py:227 msgid "" "R|How to format the output when processing is set to 'output'.\n" "L|combined: The image contains the face/frame, face mask and masked face.\n" @@ -191,7 +193,7 @@ msgid "" "L|mask: Only output the mask as a single channel image." msgstr "" -#: tools/mask/cli.py:235 +#: tools/mask/cli.py:237 msgid "" "R|Whether to output the whole frame or only the face box when using output " "processing. Only has an effect when using frames as input." diff --git a/tools/mask/cli.py b/tools/mask/cli.py index 4ec06e9e..cc14bb1b 100644 --- a/tools/mask/cli.py +++ b/tools/mask/cli.py @@ -153,9 +153,11 @@ class MaskArgs(FaceSwapArgs): "default": "face", "group": _("import"), "help": _( - "R|Import only. The centering to use when importing masks. Note: For any job " - "other than 'import' this option is ignored as mask centering is handled " - "internally." + "R|Import/Output only. When importing masks, this is the centering to use. For " + "output this is only used for outputting custom imported masks, and should " + "correspond to the centering used when importing the mask. Note: For any job " + "other than 'import' and 'output' this option is ignored as mask centering is " + "handled internally." "\nL|face: Centers the mask on the center of the face, adjusting for " "pitch and yaw. Outside of requirements for full head masking/training, this " "is likely to be the best choice." diff --git a/tools/mask/mask_output.py b/tools/mask/mask_output.py index 344332a9..79ffb809 100644 --- a/tools/mask/mask_output.py +++ b/tools/mask/mask_output.py @@ -49,6 +49,7 @@ class Output: self._type: T.Literal["combined", "masked", "mask"] = arguments.output_type self._full_frame: bool = arguments.full_frame self._mask_type = arguments.masker + self._centering: CenteringType = arguments.centering self._input_is_faces = arguments.input_type == "faces" self._saver = self._set_saver(arguments.output, arguments.processing) @@ -445,6 +446,9 @@ class Output: else: mask_types = [self._mask_type] + if self._mask_type == "custom": + mask_types.append(f"{self._mask_type}_{self._centering}") + final_masks = set() for idx in reversed(range(len(detected_faces))): face_idx, detected_face = detected_faces[idx]