From af25eaf799ab8c63b2ee92d755d2fab20138b033 Mon Sep 17 00:00:00 2001
From: gaotingquan <gaotingquan@baidu.com>
Date: Tue, 9 Nov 2021 10:15:21 +0000
Subject: [PATCH] docs: update flower102 label map list

---
 dataset/{flowers102/__init__.py => .gitkeep}  |  0
 .../flowers102/generate_flowers102_list.py    | 39 -------------------
 .../quick_start_classification_new_user.md    | 30 ++++++++------
 .../quick_start/MobileNetV3_large_x1_0.yaml   |  2 +-
 ppcls/configs/quick_start/ResNet50_vd.yaml    |  2 +-
 .../new_user/ShuffleNetV2_x0_25.yaml          |  1 +
 6 files changed, 21 insertions(+), 53 deletions(-)
 rename dataset/{flowers102/__init__.py => .gitkeep} (100%)
 delete mode 100644 dataset/flowers102/generate_flowers102_list.py

diff --git a/dataset/flowers102/__init__.py b/dataset/.gitkeep
similarity index 100%
rename from dataset/flowers102/__init__.py
rename to dataset/.gitkeep
diff --git a/dataset/flowers102/generate_flowers102_list.py b/dataset/flowers102/generate_flowers102_list.py
deleted file mode 100644
index 90066d750..000000000
--- a/dataset/flowers102/generate_flowers102_list.py
+++ /dev/null
@@ -1,39 +0,0 @@
-"""
-.mat files data format
-imagelabel.mat
-jpg_name   1     2     3 ... 
-label      32    12    66 ... 
-
-setid.mat
-jpg_name(10 records in a class)  24 6 100 65 32 ...
-label                            4 ...
-"""
-"""
-Usage: 
-    python generate_flower_list.py prefix_folder mode
-    python generate_flower_list.py jpg train > train_list.txt
-    python generate_flower_list.py jpg valid > val_list.txt
-"""
-
-import scipy.io
-import numpy as np
-import os
-import sys
-
-data_path = sys.argv[1]
-imagelabels_path = './imagelabels.mat'
-setid_path = './setid.mat'
-
-labels = scipy.io.loadmat(imagelabels_path)
-labels = np.array(labels['labels'][0])
-setid = scipy.io.loadmat(setid_path)
-
-d = {}
-d['train'] = np.array(setid['trnid'][0])
-d['valid'] = np.array(setid['valid'][0])
-d['test'] = np.array(setid['tstid'][0])
-
-for id in d[sys.argv[2]]:
-    message = str(data_path) + "/image_" + str(id).zfill(5) + ".jpg " + str(
-        labels[id - 1] - 1)
-    print(message)
diff --git a/docs/zh_CN/quick_start/quick_start_classification_new_user.md b/docs/zh_CN/quick_start/quick_start_classification_new_user.md
index dfa89c589..faaecf19e 100644
--- a/docs/zh_CN/quick_start/quick_start_classification_new_user.md
+++ b/docs/zh_CN/quick_start/quick_start_classification_new_user.md
@@ -47,18 +47,18 @@ cd $path_to_PaddleClas
 
 ```shell
 # linux or mac
-cd dataset/flowers102
+cd dataset/
 # 如果希望从浏览器中直接下载,可以复制该链接并访问,然后下载解压即可
 wget https://paddle-imagenet-models-name.bj.bcebos.com/data/flowers102.zip
 # 解压
 unzip flowers102.zip
 ```
 
-没有安装 `wget` 命令或者在 Windows 中下载的话,需要将地址拷贝到浏览器中下载,并进行解压到 PaddleClas 的根目录即可。
+没有安装 `wget` 命令或者在 Windows 中下载的话,需要将地址拷贝到浏览器中下载,并进行解压到目录 `PaddleClas/dataset/` 下面即可。
 
-解压完成后,在文件夹下已经生成用于训练和测试的三个 `.txt` 文件:`train_list.txt`(训练集,1020张图)、`val_list.txt`(验证集,1020张图)、`train_extra_list.txt`(更大的训练集,7169张图)。文件中每行格式:**图像相对路径**  **图像的label_id**(注意:中间有空格)。
+解压完成后,在目录 `PaddleClas/dataset/flowers102` 下有用于训练和测试的三个 `.txt` 文件:`train_list.txt`(训练集,1020张图)、`val_list.txt`(验证集,1020张图)、`train_extra_list.txt`(更大的训练集,7169张图)。文件中每行格式:**图像相对路径**  **图像的label_id**(注意:中间有空格),此外还有flowers102数据集 label id 与类别名称的映射文件:`flowers102_label_list.txt`。
 
-此时flowers102数据集存放在**dataset/flowers102/jpg** 文件夹中,图像示例如下:
+flowers102数据集的图像文件存放在 `dataset/flowers102/jpg` 目录中,图像示例如下:
 
 <div align="center">
 <img src="../../images/quick_start/Examples-Flower-102.png" width = "800" />
@@ -122,7 +122,7 @@ python tools/train.py -c ./ppcls/configs/quick_start/new_user/ShuffleNetV2_x0_25
 #### 不使用预训练模型
 
 ```shell
-python3 tools/train.py -c ./ppcls/configs/quick_start/ResNet50_vd.yaml
+python tools/train.py -c ./ppcls/configs/quick_start/ResNet50_vd.yaml
 ```
 
 训练完成后,验证集的`Top1 Acc`曲线如下所示,最高准确率为0.2735。训练精度曲线下图所示
@@ -136,7 +136,7 @@ python3 tools/train.py -c ./ppcls/configs/quick_start/ResNet50_vd.yaml
 基于 ImageNet1k 分类预训练模型进行微调,训练脚本如下所示
 
 ```shell
-python3 tools/train.py -c ./ppcls/configs/quick_start/ResNet50_vd.yaml -o Arch.pretrained=True
+python tools/train.py -c ./ppcls/configs/quick_start/ResNet50_vd.yaml -o Arch.pretrained=True
 ```
 
 **注**:此训练脚本使用 GPU,如使用 CPU 可按照上文中[4.1 使用CPU进行模型训练](#4.1)所示,进行修改。
@@ -149,20 +149,26 @@ python3 tools/train.py -c ./ppcls/configs/quick_start/ResNet50_vd.yaml -o Arch.p
 
 ## 5. 模型预测
 
-训练完成后预测代码如下:
+训练完成后,可以使用训练好的模型进行预测,以训练的 ResNet50_vd 模型为例,预测代码如下:
 
 ```shell
 cd $path_to_PaddleClas
-python3 tools/infer.py -c ./ppcls/configs/quick_start/new_user/ShuffleNetV2_x0_25.yaml -o Infer.infer_imgs=dataset/flowers102/jpg/image_00001.jpg -o Global.pretrained_model=output/ShuffleNetV2_x0_25/best_model
+python tools/infer.py -c ./ppcls/configs/quick_start/ResNet50_vd.yaml -o Infer.infer_imgs=dataset/flowers102/jpg/image_00001.jpg -o Global.pretrained_model=output/ResNet50_vd/best_model
 ```
 
 `-i` 输入为单张图像路径,运行成功后,示例结果如下:
 
-`[{'class_ids': [76, 65, 34, 9, 69], 'scores': [0.91762, 0.01801, 0.00833, 0.0071, 0.00669], 'file_name': 'dataset/flowers102/jpg/image_00001.jpg', 'label_names': []}]`
+`[{'class_ids': [76, 51, 37, 33, 9], 'scores': [0.99998, 0.0, 0.0, 0.0, 0.0], 'file_name': 'dataset/flowers102/jpg/image_00001.jpg', 'label_names': ['passion flower', 'wild pansy', 'great masterwort', 'mexican aster', 'globe thistle']}]`
 
-`-i` 输入为图像集所在目录,运行成功后,示例结果如下:
+当然也可以使用训练的 ShuffleNetV2_x0_25 模型进行预测,代码如下:
 
-```txt
-[{'class_ids': [76, 65, 34, 9, 69], 'scores': [0.91762, 0.01801, 0.00833, 0.0071, 0.00669], 'file_name': 'dataset/flowers102/jpg/image_00001.jpg', 'label_names': []}, {'class_ids': [76, 69, 34, 28, 9], 'scores': [0.77122, 0.06295, 0.02537, 0.02531, 0.0251], 'file_name': 'dataset/flowers102/jpg/image_00002.jpg', 'label_names': []}, {'class_ids': [99, 76, 81, 85, 16], 'scores': [0.26374, 0.20423, 0.07818, 0.06042, 0.05499], 'file_name': 'dataset/flowers102/jpg/image_00003.jpg', 'label_names': []}, {'class_ids': [9, 37, 34, 24, 76], 'scores': [0.17784, 0.16651, 0.14539, 0.12096, 0.04816], 'file_name': 'dataset/flowers102/jpg/image_00004.jpg', 'label_names': []}, {'class_ids': [76, 66, 91, 16, 13], 'scores': [0.95494, 0.00688, 0.00596, 0.00352, 0.00308], 'file_name': 'dataset/flowers102/jpg/image_00005.jpg', 'label_names': []}, {'class_ids': [76, 66, 34, 8, 43], 'scores': [0.44425, 0.07487, 0.05609, 0.05609, 0.03667], 'file_name': 'dataset/flowers102/jpg/image_00006.jpg', 'label_names': []}, {'class_ids': [86, 93, 81, 22, 21], 'scores': [0.44714, 0.13582, 0.07997, 0.0514, 0.03497], 'file_name': 'dataset/flowers102/jpg/image_00007.jpg', 'label_names': []}, {'class_ids': [13, 76, 81, 18, 97], 'scores': [0.26771, 0.1734, 0.06576, 0.0451, 0.03986], 'file_name': 'dataset/flowers102/jpg/image_00008.jpg', 'label_names': []}, {'class_ids': [34, 76, 8, 5, 9], 'scores': [0.67224, 0.31896, 0.00241, 0.00227, 0.00102], 'file_name': 'dataset/flowers102/jpg/image_00009.jpg', 'label_names': []}, {'class_ids': [76, 34, 69, 65, 66], 'scores': [0.95185, 0.01101, 0.00875, 0.00452, 0.00406], 'file_name': 'dataset/flowers102/jpg/image_00010.jpg', 'label_names': []}]
+```shell
+cd $path_to_PaddleClas
+python tools/infer.py -c ./ppcls/configs/quick_start/new_user/ShuffleNetV2_x0_25.yaml -o Infer.infer_imgs=dataset/flowers102/jpg/image_00001.jpg -o Global.pretrained_model=output/ShuffleNetV2_x0_25/best_model
 ```
+
+`-i` 参数也可以为待测图像文件所在目录(`dataset/flowers102/jpg/`),运行成功后,部分示例结果如下:
+
+`[{'class_ids': [76, 51, 37, 33, 9], 'scores': [0.99998, 0.0, 0.0, 0.0, 0.0], 'file_name': 'dataset/flowers102/jpg/image_00001.jpg', 'label_names': ['passion flower', 'wild pansy', 'great masterwort', 'mexican aster', 'globe thistle']}, {'class_ids': [76, 51, 37, 33, 32], 'scores': [0.99999, 0.0, 0.0, 0.0, 0.0], 'file_name': 'dataset/flowers102/jpg/image_00002.jpg', 'label_names': ['passion flower', 'wild pansy', 'great masterwort', 'mexican aster', 'love in the mist']}, {'class_ids': [76, 12, 39, 73, 78], 'scores': [0.99998, 0.0, 0.0, 0.0, 0.0], 'file_name': 'dataset/flowers102/jpg/image_00003.jpg', 'label_names': ['passion flower', 'king protea', 'lenten rose', 'rose', 'toad lily']}, {'class_ids': [76, 37, 34, 12, 9], 'scores': [0.86282, 0.11177, 0.00717, 0.00599, 0.00397], 'file_name': 'dataset/flowers102/jpg/image_00004.jpg', 'label_names': ['passion flower', 'great masterwort', 'alpine sea holly', 'king protea', 'globe thistle']}, {'class_ids': [76, 37, 33, 51, 69], 'scores': [0.9999, 1e-05, 1e-05, 0.0, 0.0], 'file_name': 'dataset/flowers102/jpg/image_00005.jpg', 'label_names': ['passion flower', 'great masterwort', 'mexican aster', 'wild pansy', 'tree poppy']}, {'class_ids': [76, 37, 51, 33, 73], 'scores': [0.99999, 0.0, 0.0, 0.0, 0.0], 'file_name': 'dataset/flowers102/jpg/image_00006.jpg', 'label_names': ['passion flower', 'great masterwort', 'wild pansy', 'mexican aster', 'rose']}, {'class_ids': [76, 37, 12, 91, 30], 'scores': [0.98746, 0.00211, 0.00201, 0.00136, 0.0007], 'file_name': 'dataset/flowers102/jpg/image_00007.jpg', 'label_names': ['passion flower', 'great masterwort', 'king protea', 'bee balm', 'carnation']}, {'class_ids': [76, 37, 81, 77, 72], 'scores': [0.99976, 3e-05, 2e-05, 2e-05, 1e-05], 'file_name': 'dataset/flowers102/jpg/image_00008.jpg', 'label_names': ['passion flower', 'great masterwort', 'clematis', 'lotus', 'water lily']}, {'class_ids': [76, 37, 13, 12, 34], 'scores': [0.99646, 0.00144, 0.00092, 0.00035, 0.00027], 'file_name': 'dataset/flowers102/jpg/image_00009.jpg', 'label_names': ['passion flower', 'great masterwort', 'spear thistle', 'king protea', 'alpine sea holly']}, {'class_ids': [76, 37, 34, 33, 51], 'scores': [0.99999, 0.0, 0.0, 0.0, 0.0], 'file_name': 'dataset/flowers102/jpg/image_00010.jpg', 'label_names': ['passion flower', 'great masterwort', 'alpine sea holly', 'mexican aster', 'wild pansy']}]`
+
 其中,列表的长度为 batch_size 的大小。
diff --git a/ppcls/configs/quick_start/MobileNetV3_large_x1_0.yaml b/ppcls/configs/quick_start/MobileNetV3_large_x1_0.yaml
index 394f201cc..7b7c1d592 100644
--- a/ppcls/configs/quick_start/MobileNetV3_large_x1_0.yaml
+++ b/ppcls/configs/quick_start/MobileNetV3_large_x1_0.yaml
@@ -119,7 +119,7 @@ Infer:
   PostProcess:
     name: Topk
     topk: 5
-    class_id_map_file: ppcls/utils/imagenet1k_label_list.txt
+    class_id_map_file: ./dataset/flowers102/flowers102_label_list.txt
 
 Metric:
   Train:
diff --git a/ppcls/configs/quick_start/ResNet50_vd.yaml b/ppcls/configs/quick_start/ResNet50_vd.yaml
index 1b4e844fa..d18f8dcb7 100644
--- a/ppcls/configs/quick_start/ResNet50_vd.yaml
+++ b/ppcls/configs/quick_start/ResNet50_vd.yaml
@@ -118,7 +118,7 @@ Infer:
   PostProcess:
     name: Topk
     topk: 5
-    class_id_map_file: ppcls/utils/imagenet1k_label_list.txt
+    class_id_map_file: ./dataset/flowers102/flowers102_label_list.txt
 
 Metric:
   Train:
diff --git a/ppcls/configs/quick_start/new_user/ShuffleNetV2_x0_25.yaml b/ppcls/configs/quick_start/new_user/ShuffleNetV2_x0_25.yaml
index f58522c1e..26bef7fc5 100644
--- a/ppcls/configs/quick_start/new_user/ShuffleNetV2_x0_25.yaml
+++ b/ppcls/configs/quick_start/new_user/ShuffleNetV2_x0_25.yaml
@@ -118,6 +118,7 @@ Infer:
   PostProcess:
     name: Topk
     topk: 5
+    class_id_map_file: ./dataset/flowers102/flowers102_label_list.txt
 
 Metric:
   Train: