You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

README.md 9.5 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. # Contents
  2. - [Face Recognition For Tracking Description](#face-recognition-for-tracking-description)
  3. - [Model Architecture](#model-architecture)
  4. - [Dataset](#dataset)
  5. - [Environment Requirements](#environment-requirements)
  6. - [Script Description](#script-description)
  7. - [Script and Sample Code](#script-and-sample-code)
  8. - [Running Example](#running-example)
  9. - [Model Description](#model-description)
  10. - [Performance](#performance)
  11. - [ModelZoo Homepage](#modelzoo-homepage)
  12. # [Face Recognition For Tracking Description](#contents)
  13. This is a face recognition for tracking network based on Resnet, with support for training and evaluation on Ascend910.
  14. ResNet (residual neural network) was proposed by Kaiming He and other four Chinese of Microsoft Research Institute. Through the use of ResNet unit, it successfully trained 152 layers of neural network, and won the championship in ilsvrc2015. The error rate on top 5 was 3.57%, and the parameter quantity was lower than vggnet, so the effect was very outstanding. Traditional convolution network or full connection network will have more or less information loss. At the same time, it will lead to the disappearance or explosion of gradient, which leads to the failure of deep network training. ResNet solves this problem to a certain extent. By passing the input information to the output, the integrity of the information is protected. The whole network only needs to learn the part of the difference between input and output, which simplifies the learning objectives and difficulties.The structure of ResNet can accelerate the training of neural network very quickly, and the accuracy of the model is also greatly improved. At the same time, ResNet is very popular, even can be directly used in the concept net network.
  15. [Paper](https://arxiv.org/pdf/1512.03385.pdf): Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. "Deep Residual Learning for Image Recognition"
  16. # [Model Architecture](#contents)
  17. Face Recognition For Tracking uses a Resnet network for performing feature extraction.
  18. # [Dataset](#contents)
  19. We use about 10K face images as training dataset and 2K as evaluating dataset in this example, and you can also use your own datasets or open source datasets (e.g. Labeled Faces in the Wild)
  20. The directory structure is as follows:
  21. ```python
  22. .
  23. └─ dataset
  24. ├─ train dataset
  25. ├─ ID1
  26. ├─ ID1_0001.jpg
  27. ├─ ID1_0002.jpg
  28. ...
  29. ├─ ID2
  30. ...
  31. ├─ ID3
  32. ...
  33. ...
  34. ├─ test dataset
  35. ├─ ID1
  36. ├─ ID1_0001.jpg
  37. ├─ ID1_0002.jpg
  38. ...
  39. ├─ ID2
  40. ...
  41. ├─ ID3
  42. ...
  43. ...
  44. ```
  45. # [Environment Requirements](#contents)
  46. - Hardware(Ascend)
  47. - Prepare hardware environment with Ascend processor. If you want to try Ascend, please send the [application form](https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/file/other/Ascend%20Model%20Zoo%E4%BD%93%E9%AA%8C%E8%B5%84%E6%BA%90%E7%94%B3%E8%AF%B7%E8%A1%A8.docx) to ascend@huawei.com. Once approved, you can get the resources.
  48. - Framework
  49. - [MindSpore](https://www.mindspore.cn/install/en)
  50. - For more information, please check the resources below:
  51. - [MindSpore tutorials](https://www.mindspore.cn/tutorial/training/en/master/index.html)
  52. - [MindSpore Python API](https://www.mindspore.cn/doc/api_python/en/master/index.html)
  53. # [Script Description](#contents)
  54. ## [Script and Sample Code](#contents)
  55. The entire code structure is as following:
  56. ```python
  57. .
  58. └─ Face Recognition For Tracking
  59. ├─ README.md
  60. ├─ scripts
  61. ├─ run_standalone_train.sh # launch standalone training(1p) in ascend
  62. ├─ run_distribute_train.sh # launch distributed training(8p) in ascend
  63. ├─ run_eval.sh # launch evaluating in ascend
  64. └─ run_export.sh # launch exporting air model
  65. ├─ src
  66. ├─ config.py # parameter configuration
  67. ├─ dataset.py # dataset loading and preprocessing for training
  68. ├─ reid.py # network backbone
  69. ├─ reid_for_export.py # network backbone for export
  70. ├─ log.py # log function
  71. ├─ loss.py # loss function
  72. ├─ lr_generator.py # generate learning rate
  73. └─ me_init.py # network initialization
  74. ├─ train.py # training scripts
  75. ├─ eval.py # evaluation scripts
  76. └─ export.py # export air model
  77. ```
  78. ## [Running Example](#contents)
  79. ### Train
  80. - Stand alone mode
  81. ```bash
  82. cd ./scripts
  83. sh run_standalone_train.sh [DATA_DIR] [USE_DEVICE_ID]
  84. ```
  85. or (fine-tune)
  86. ```bash
  87. cd ./scripts
  88. sh run_standalone_train.sh [DATA_DIR] [USE_DEVICE_ID] [PRETRAINED_BACKBONE]
  89. ```
  90. for example:
  91. ```bash
  92. cd ./scripts
  93. sh run_standalone_train.sh /home/train_dataset 0 /home/a.ckpt
  94. ```
  95. - Distribute mode (recommended)
  96. ```bash
  97. cd ./scripts
  98. sh run_distribute_train.sh [DATA_DIR] [RANK_TABLE]
  99. ```
  100. or (fine-tune)
  101. ```bash
  102. cd ./scripts
  103. sh run_distribute_train.sh [DATA_DIR] [RANK_TABLE] [PRETRAINED_BACKBONE]
  104. ```
  105. for example:
  106. ```bash
  107. cd ./scripts
  108. sh run_distribute_train.sh /home/train_dataset ./rank_table_8p.json /home/a.ckpt
  109. ```
  110. You will get the loss value of each step as following in "./output/[TIME]/[TIME].log" or "./scripts/device0/train.log":
  111. ```python
  112. epoch[0], iter[10], loss:43.314265, 8574.83 imgs/sec, lr=0.800000011920929
  113. epoch[0], iter[20], loss:45.121095, 8915.66 imgs/sec, lr=0.800000011920929
  114. epoch[0], iter[30], loss:42.342847, 9162.85 imgs/sec, lr=0.800000011920929
  115. epoch[0], iter[40], loss:39.456583, 9178.83 imgs/sec, lr=0.800000011920929
  116. ...
  117. epoch[179], iter[14900], loss:1.651353, 13001.25 imgs/sec, lr=0.02500000037252903
  118. epoch[179], iter[14910], loss:1.532123, 12669.85 imgs/sec, lr=0.02500000037252903
  119. epoch[179], iter[14920], loss:1.760322, 13457.81 imgs/sec, lr=0.02500000037252903
  120. epoch[179], iter[14930], loss:1.694281, 13417.38 imgs/sec, lr=0.02500000037252903
  121. ```
  122. ### Evaluation
  123. ```bash
  124. cd ./scripts
  125. sh run_eval.sh [EVAL_DIR] [USE_DEVICE_ID] [PRETRAINED_BACKBONE]
  126. ```
  127. for example:
  128. ```bash
  129. cd ./scripts
  130. sh run_eval.sh /home/test_dataset 0 /home/a.ckpt
  131. ```
  132. You will get the result as following in "./scripts/device0/eval.log" or txt file in [PRETRAINED_BACKBONE]'s folder:
  133. ```python
  134. 0.5: 0.9273788254649683@0.020893691253149882
  135. 0.3: 0.8393850978779193@0.07438552515516506
  136. 0.1: 0.6220871197028316@0.1523084478903911
  137. 0.01: 0.2683641598437038@0.26217882879427634
  138. 0.001: 0.11060269148211463@0.34509718987101223
  139. 0.0001: 0.05381678898728808@0.4187797093636618
  140. 1e-05: 0.035770748447963394@0.5053771466191392
  141. ```
  142. ### Convert model
  143. If you want to infer the network on Ascend 310, you should convert the model to AIR:
  144. ```bash
  145. cd ./scripts
  146. sh run_export.sh [BATCH_SIZE] [USE_DEVICE_ID] [PRETRAINED_BACKBONE]
  147. ```
  148. # [Model Description](#contents)
  149. ## [Performance](#contents)
  150. ### Training Performance
  151. | Parameters | Face Recognition For Tracking |
  152. | -------------------------- | ----------------------------------------------------------- |
  153. | Model Version | V1 |
  154. | Resource | Ascend 910; CPU 2.60GHz, 192cores; Memory, 755G |
  155. | uploaded Date | 09/30/2020 (month/day/year) |
  156. | MindSpore Version | 1.0.0 |
  157. | Dataset | 10K images |
  158. | Training Parameters | epoch=180, batch_size=16, momentum=0.9 |
  159. | Optimizer | Momentum |
  160. | Loss Function | Softmax Cross Entropy |
  161. | outputs | probability |
  162. | Speed | 1pc: 8~10 ms/step; 8pcs: 9~11 ms/step |
  163. | Total time | 1pc: 1 hours; 8pcs: 0.1 hours |
  164. | Checkpoint for Fine tuning | 17M (.ckpt file) |
  165. ### Evaluation Performance
  166. | Parameters |Face Recognition For Tracking|
  167. | ------------------- | --------------------------- |
  168. | Model Version | V1 |
  169. | Resource | Ascend 910 |
  170. | Uploaded Date | 09/30/2020 (month/day/year) |
  171. | MindSpore Version | 1.0.0 |
  172. | Dataset | 2K images |
  173. | batch_size | 128 |
  174. | outputs | recall |
  175. | Recall(8pcs) | 0.62(FAR=0.1) |
  176. | Model for inference | 17M (.ckpt file) |
  177. # [ModelZoo Homepage](#contents)
  178. Please check the official [homepage](https://gitee.com/mindspore/mindspore/tree/master/model_zoo).