Pārlūkot izejas kodu

fix face feature module CI problem (#2403)

* init commit with face recgnition pipeline

* add face recognition docs

* support face recognition pipeline

* rename face recognition module to face feature module
学卿 1 gadu atpakaļ
vecāks
revīzija
09a4577943

+ 13 - 1
docs/module_usage/tutorials/cv_modules/face_feature.md

@@ -89,7 +89,19 @@ python main.py -c paddlex/configs/face_recognition/MobileFaceNet.yaml \
     ],
     "val_label_file": "../../dataset/face_rec_examples/val/pair_label.txt",
     "val_num_classes": 2,
-    "val_samples": 500
+    "val_samples": 500,
+    "val_sample_paths": [
+      "check_dataset/demo_img/Don_Carcieri_0001.jpg",
+      "check_dataset/demo_img/Eric_Fehr_0001.jpg",
+      "check_dataset/demo_img/Harry_Kalas_0001.jpg",
+      "check_dataset/demo_img/Francis_Ford_Coppola_0001.jpg",
+      "check_dataset/demo_img/Amer_al-Saadi_0001.jpg",
+      "check_dataset/demo_img/Sergei_Ivanov_0001.jpg",
+      "check_dataset/demo_img/Erin_Runnion_0003.jpg",
+      "check_dataset/demo_img/Bill_Stapleton_0001.jpg",
+      "check_dataset/demo_img/Daniel_Bruehl_0001.jpg",
+      "check_dataset/demo_img/Clare_Short_0004.jpg"
+    ]
   },
   "analysis": {},
   "dataset_path": "./dataset/face_rec_examples",

+ 13 - 1
docs/module_usage/tutorials/cv_modules/face_feature_en.md

@@ -90,7 +90,19 @@ The specific content of the validation result file is:
     ],
     "val_label_file": "../../dataset/face_rec_examples/val/pair_label.txt",
     "val_num_classes": 2,
-    "val_samples": 500
+    "val_samples": 500,
+    "val_sample_paths": [
+      "check_dataset/demo_img/Don_Carcieri_0001.jpg",
+      "check_dataset/demo_img/Eric_Fehr_0001.jpg",
+      "check_dataset/demo_img/Harry_Kalas_0001.jpg",
+      "check_dataset/demo_img/Francis_Ford_Coppola_0001.jpg",
+      "check_dataset/demo_img/Amer_al-Saadi_0001.jpg",
+      "check_dataset/demo_img/Sergei_Ivanov_0001.jpg",
+      "check_dataset/demo_img/Erin_Runnion_0003.jpg",
+      "check_dataset/demo_img/Bill_Stapleton_0001.jpg",
+      "check_dataset/demo_img/Daniel_Bruehl_0001.jpg",
+      "check_dataset/demo_img/Clare_Short_0004.jpg"
+    ]
   },
   "analysis": {},
   "dataset_path": "./dataset/face_rec_examples",

+ 17 - 0
paddlex/modules/face_recognition/dataset_checker/dataset_src/check_dataset.py

@@ -110,6 +110,7 @@ def check_val(dataset_dir, output, sample_num=10):
     valid_num_parts = 3
 
     labels = []
+    sample_paths = []
     label_file = osp.join(dataset_dir, "pair_label.txt")
     if not osp.exists(label_file):
         raise DatasetFileNotFoundError(
@@ -147,10 +148,26 @@ def check_val(dataset_dir, output, sample_num=10):
                 raise CheckFailedError(
                     f"Ensure that the second number in each line in {label_file} should be int."
                 ) from e
+
+            vis_save_dir = osp.join(output, "demo_img")
+            if not osp.exists(vis_save_dir):
+                os.makedirs(vis_save_dir)
+
+            if len(sample_paths) < sample_num:
+                img = Image.open(left_img_path)
+                img = ImageOps.exif_transpose(img)
+                vis_path = osp.join(vis_save_dir, osp.basename(left_file_name))
+                img.save(vis_path)
+                sample_path = osp.join(
+                    "check_dataset", os.path.relpath(vis_path, output)
+                )
+                sample_paths.append(sample_path)
+
             labels.append(label)
     num_classes = max(labels) + 1
     attrs = {}
     attrs["val_label_file"] = osp.relpath(label_file, output)
     attrs["val_num_classes"] = num_classes
     attrs["val_samples"] = sample_cnts
+    attrs["val_sample_paths"] = sample_paths
     return attrs