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 27 kB

5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445
  1. # Contents
  2. - [MaskRCNN Description](#maskrcnn-description)
  3. - [Model Architecture](#model-architecture)
  4. - [Dataset](#dataset)
  5. - [Environment Requirements](#environment-requirements)
  6. - [Quick Start](#quick-start)
  7. - [Script Description](#script-description)
  8. - [Script and Sample Code](#script-and-sample-code)
  9. - [Script Parameters](#script-parameters)
  10. - [Training Script Parameters](#training-script-parameters)
  11. - [Parameters Configuration](#parameters-configuration)
  12. - [Training Process](#training-process)
  13. - [Training](#training)
  14. - [Distributed Training](#distributed-training)
  15. - [Training Result](#training-result)
  16. - [Evaluation Process](#evaluation-process)
  17. - [Evaluation](#evaluation)
  18. - [Evaluation Result](#evaluation-result)
  19. - [Model Description](#model-description)
  20. - [Performance](#performance)
  21. - [Evaluation Performance](#evaluation-performance)
  22. - [Inference Performance](#inference-performance)
  23. - [Description of Random Situation](#description-of-random-situation)
  24. - [ModelZoo Homepage](#modelzoo-homepage)
  25. # [MaskRCNN Description](#contents)
  26. MaskRCNN is a conceptually simple, flexible, and general framework for object instance segmentation. The approach efficiently detects objects in an image while simultaneously generating a high-quality segmentation mask for each instance. The method, called Mask R-CNN, extends Faster R-CNN by adding a branch for predicting an object mask in
  27. parallel with the existing branch for bounding box recognition. Mask R-CNN is simple to train and adds only a small overhead to Faster R-CNN, running at 5 fps. Moreover, Mask R-CNN is easy to generalize to other tasks, e.g., allowing to estimate human poses in the same framework.
  28. It shows top results in all three tracks of the COCO suite of challenges, including instance segmentation, boundingbox object detection, and person keypoint detection. Without bells and whistles, Mask R-CNN outperforms all existing, single-model entries on every task, including the COCO 2016 challenge winners.
  29. # [Model Architecture](#contents)
  30. MaskRCNN is a two-stage target detection network. It extends FasterRCNN by adding a branch for predicting an object mask in parallel with the existing branch for bounding box recognition.This network uses a region proposal network (RPN), which can share the convolution features of the whole image with the detection network, so that the calculation of region proposal is almost cost free. The whole network further combines RPN and mask branch into a network by sharing the convolution features.
  31. [Paper](http://cn.arxiv.org/pdf/1703.06870v3): Kaiming He, Georgia Gkioxari, Piotr Dollar and Ross Girshick. "MaskRCNN"
  32. # [Dataset](#contents)
  33. Note that you can run the scripts based on the dataset mentioned in original paper or widely used in relevant domain/network architecture. In the following sections, we will introduce how to run the scripts using the related dataset below.
  34. - [COCO2017](https://cocodataset.org/) is a popular dataset with bounding-box and pixel-level stuff annotations. These annotations can be used for scene understanding tasks like semantic segmentation, object detection and image captioning. There are 118K/5K images for train/val.
  35. - Dataset size: 19G
  36. - Train: 18G, 118000 images
  37. - Val: 1G, 5000 images
  38. - Annotations: 241M, instances, captions, person_keypoints, etc.
  39. - Data format: image and json files
  40. - Note: Data will be processed in dataset.py
  41. # [Environment Requirements](#contents)
  42. - Hardware(Ascend)
  43. - 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.
  44. - Framework
  45. - [MindSpore](https://gitee.com/mindspore/mindspore)
  46. - For more information, please check the resources below:
  47. - [MindSpore Tutorials](https://www.mindspore.cn/tutorial/training/en/master/index.html)
  48. - [MindSpore Python API](https://www.mindspore.cn/doc/api_python/en/master/index.html)
  49. - third-party libraries
  50. ```bash
  51. pip install Cython
  52. pip install pycocotools
  53. pip install mmcv=0.2.14
  54. ```
  55. # [Quick Start](#contents)
  56. 1. Download the dataset COCO2017.
  57. 2. Change the COCO_ROOT and other settings you need in `config.py`. The directory structure should look like the follows:
  58. ```
  59. .
  60. └─cocodataset
  61. ├─annotations
  62. ├─instance_train2017.json
  63. └─instance_val2017.json
  64. ├─val2017
  65. └─train2017
  66. ```
  67. If you use your own dataset to train the network, **Select dataset to other when run script.**
  68. Create a txt file to store dataset information organized in the way as shown as following:
  69. ```
  70. train2017/0000001.jpg 0,259,401,459,7 35,28,324,201,2 0,30,59,80,2
  71. ```
  72. Each row is an image annotation split by spaces. The first column is a relative path of image, followed by columns containing box and class information in the format [xmin,ymin,xmax,ymax,class]. We read image from an image path joined by the `IMAGE_DIR`(dataset directory) and the relative path in `ANNO_PATH`(the TXT file path), which can be set in `config.py`.
  73. 3. Execute train script.
  74. After dataset preparation, you can start training as follows:
  75. ```
  76. # distributed training
  77. sh run_distribute_train.sh [RANK_TABLE_FILE] [PRETRAINED_CKPT]
  78. # standalone training
  79. sh run_standalone_train.sh [PRETRAINED_CKPT]
  80. ```
  81. Note:
  82. 1. To speed up data preprocessing, MindSpore provide a data format named MindRecord, hence the first step is to generate MindRecord files based on COCO2017 dataset before training. The process of converting raw COCO2017 dataset to MindRecord format may take about 4 hours.
  83. 2. For distributed training, a [hccl configuration file](https://gitee.com/mindspore/mindspore/tree/master/model_zoo/utils/hccl_tools) with JSON format needs to be created in advance.
  84. 3. PRETRAINED_CKPT is a resnet50 checkpoint that trained over ImageNet2012.
  85. 4. For large models like MaskRCNN, it's better to export an external environment variable `export HCCL_CONNECT_TIMEOUT=600` to extend hccl connection checking time from the default 120 seconds to 600 seconds. Otherwise, the connection could be timeout since compiling time increases with the growth of model size.
  86. 4. Execute eval script.
  87. After training, you can start evaluation as follows:
  88. ```bash
  89. # Evaluation
  90. sh run_eval.sh [VALIDATION_JSON_FILE] [CHECKPOINT_PATH]
  91. ```
  92. Note:
  93. 1. VALIDATION_JSON_FILE is a label json file for evaluation.
  94. # [Script Description](#contents)
  95. ## [Script and Sample Code](#contents)
  96. ```shell
  97. .
  98. └─MaskRcnn
  99. ├─README.md # README
  100. ├─scripts # shell script
  101. ├─run_standalone_train.sh # training in standalone mode(1pcs)
  102. ├─run_distribute_train.sh # training in parallel mode(8 pcs)
  103. └─run_eval.sh # evaluation
  104. ├─src
  105. ├─maskrcnn
  106. ├─__init__.py
  107. ├─anchor_generator.py # generate base bounding box anchors
  108. ├─bbox_assign_sample.py # filter positive and negative bbox for the first stage learning
  109. ├─bbox_assign_sample_stage2.py # filter positive and negative bbox for the second stage learning
  110. ├─mask_rcnn_r50.py # main network architecture of maskrcnn
  111. ├─fpn_neck.py # fpn network
  112. ├─proposal_generator.py # generate proposals based on feature map
  113. ├─rcnn_cls.py # rcnn bounding box regression branch
  114. ├─rcnn_mask.py # rcnn mask branch
  115. ├─resnet50.py # backbone network
  116. ├─roi_align.py # roi align network
  117. └─rpn.py # reagion proposal network
  118. ├─config.py # network configuration
  119. ├─dataset.py # dataset utils
  120. ├─lr_schedule.py # leanring rate geneatore
  121. ├─network_define.py # network define for maskrcnn
  122. └─util.py # routine operation
  123. ├─mindspore_hub_conf.py # mindspore hub interface
  124. ├─eval.py # evaluation scripts
  125. └─train.py # training scripts
  126. ```
  127. ## [Script Parameters](#contents)
  128. ### [Training Script Parameters](#contents)
  129. ```
  130. # distributed training
  131. Usage: sh run_distribute_train.sh [RANK_TABLE_FILE] [PRETRAINED_MODEL]
  132. # standalone training
  133. Usage: sh run_standalone_train.sh [PRETRAINED_MODEL]
  134. ```
  135. ### [Parameters Configuration](#contents)
  136. ```
  137. "img_width": 1280, # width of the input images
  138. "img_height": 768, # height of the input images
  139. # random threshold in data augmentation
  140. "keep_ratio": True,
  141. "flip_ratio": 0.5,
  142. "photo_ratio": 0.5,
  143. "expand_ratio": 1.0,
  144. "max_instance_count": 128, # max number of bbox for each image
  145. "mask_shape": (28, 28), # shape of mask in rcnn_mask
  146. # anchor
  147. "feature_shapes": [(192, 320), (96, 160), (48, 80), (24, 40), (12, 20)], # shape of fpn feaure maps
  148. "anchor_scales": [8], # area of base anchor
  149. "anchor_ratios": [0.5, 1.0, 2.0], # ratio between width of height of base anchors
  150. "anchor_strides": [4, 8, 16, 32, 64], # stride size of each feature map levels
  151. "num_anchors": 3, # anchor number for each pixel
  152. # resnet
  153. "resnet_block": [3, 4, 6, 3], # block number in each layer
  154. "resnet_in_channels": [64, 256, 512, 1024], # in channel size for each layer
  155. "resnet_out_channels": [256, 512, 1024, 2048], # out channel size for each layer
  156. # fpn
  157. "fpn_in_channels": [256, 512, 1024, 2048], # in channel size for each layer
  158. "fpn_out_channels": 256, # out channel size for every layer
  159. "fpn_num_outs": 5, # out feature map size
  160. # rpn
  161. "rpn_in_channels": 256, # in channel size
  162. "rpn_feat_channels": 256, # feature out channel size
  163. "rpn_loss_cls_weight": 1.0, # weight of bbox classification in rpn loss
  164. "rpn_loss_reg_weight": 1.0, # weight of bbox regression in rpn loss
  165. "rpn_cls_out_channels": 1, # classification out channel size
  166. "rpn_target_means": [0., 0., 0., 0.], # bounding box decode/encode means
  167. "rpn_target_stds": [1.0, 1.0, 1.0, 1.0], # bounding box decode/encode stds
  168. # bbox_assign_sampler
  169. "neg_iou_thr": 0.3, # negative sample threshold after IOU
  170. "pos_iou_thr": 0.7, # positive sample threshold after IOU
  171. "min_pos_iou": 0.3, # minimal positive sample threshold after IOU
  172. "num_bboxes": 245520, # total bbox numner
  173. "num_gts": 128, # total ground truth number
  174. "num_expected_neg": 256, # negative sample number
  175. "num_expected_pos": 128, # positive sample number
  176. # proposal
  177. "activate_num_classes": 2, # class number in rpn classification
  178. "use_sigmoid_cls": True, # whethre use sigmoid as loss function in rpn classification
  179. # roi_alignj
  180. "roi_layer": dict(type='RoIAlign', out_size=7, mask_out_size=14, sample_num=2), # ROIAlign parameters
  181. "roi_align_out_channels": 256, # ROIAlign out channels size
  182. "roi_align_featmap_strides": [4, 8, 16, 32], # stride size for differnt level of ROIAling feature map
  183. "roi_align_finest_scale": 56, # finest scale ofr ROIAlign
  184. "roi_sample_num": 640, # sample number in ROIAling layer
  185. # bbox_assign_sampler_stage2 # bbox assign sample for the second stage, parameter meaning is similar with bbox_assign_sampler
  186. "neg_iou_thr_stage2": 0.5,
  187. "pos_iou_thr_stage2": 0.5,
  188. "min_pos_iou_stage2": 0.5,
  189. "num_bboxes_stage2": 2000,
  190. "num_expected_pos_stage2": 128,
  191. "num_expected_neg_stage2": 512,
  192. "num_expected_total_stage2": 512,
  193. # rcnn # rcnn parameter for the second stage, parameter meaning is similar with fpn
  194. "rcnn_num_layers": 2,
  195. "rcnn_in_channels": 256,
  196. "rcnn_fc_out_channels": 1024,
  197. "rcnn_mask_out_channels": 256,
  198. "rcnn_loss_cls_weight": 1,
  199. "rcnn_loss_reg_weight": 1,
  200. "rcnn_loss_mask_fb_weight": 1,
  201. "rcnn_target_means": [0., 0., 0., 0.],
  202. "rcnn_target_stds": [0.1, 0.1, 0.2, 0.2],
  203. # train proposal
  204. "rpn_proposal_nms_across_levels": False,
  205. "rpn_proposal_nms_pre": 2000, # proposal number before nms in rpn
  206. "rpn_proposal_nms_post": 2000, # proposal number after nms in rpn
  207. "rpn_proposal_max_num": 2000, # max proposal number in rpn
  208. "rpn_proposal_nms_thr": 0.7, # nms threshold for nms in rpn
  209. "rpn_proposal_min_bbox_size": 0, # min size of box in rpn
  210. # test proposal # part of parameters are similar with train proposal
  211. "rpn_nms_across_levels": False,
  212. "rpn_nms_pre": 1000,
  213. "rpn_nms_post": 1000,
  214. "rpn_max_num": 1000,
  215. "rpn_nms_thr": 0.7,
  216. "rpn_min_bbox_min_size": 0,
  217. "test_score_thr": 0.05, # score threshold
  218. "test_iou_thr": 0.5, # IOU threshold
  219. "test_max_per_img": 100, # max number of instance
  220. "test_batch_size": 2, # batch size
  221. "rpn_head_loss_type": "CrossEntropyLoss", # loss type in rpn
  222. "rpn_head_use_sigmoid": True, # whether use sigmoid or not in rpn
  223. "rpn_head_weight": 1.0, # rpn head weight in loss
  224. "mask_thr_binary": 0.5, # mask threshold for in rcnn
  225. # LR
  226. "base_lr": 0.02, # base learning rate
  227. "base_step": 58633, # bsae step in lr generator
  228. "total_epoch": 13, # total epoch in lr generator
  229. "warmup_step": 500, # warmp up step in lr generator
  230. "warmup_mode": "linear", # warmp up mode
  231. "warmup_ratio": 1/3.0, # warpm up ratio
  232. "sgd_momentum": 0.9, # momentum in optimizer
  233. # train
  234. "batch_size": 2,
  235. "loss_scale": 1,
  236. "momentum": 0.91,
  237. "weight_decay": 1e-4,
  238. "pretrain_epoch_size": 0, # pretrained epoch size
  239. "epoch_size": 12, # total epoch size
  240. "save_checkpoint": True, # whether save checkpoint or not
  241. "save_checkpoint_epochs": 1, # save checkpoint interval
  242. "keep_checkpoint_max": 12, # max number of saved checkpoint
  243. "save_checkpoint_path": "./", # path of checkpoint
  244. "mindrecord_dir": "/home/maskrcnn/MindRecord_COCO2017_Train", # path of mindrecord
  245. "coco_root": "/home/maskrcnn/", # path of coco root dateset
  246. "train_data_type": "train2017", # name of train dataset
  247. "val_data_type": "val2017", # name of evaluation dataset
  248. "instance_set": "annotations/instances_{}.json", # name of annotation
  249. "coco_classes": ('background', 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus',
  250. 'train', 'truck', 'boat', 'traffic light', 'fire hydrant',
  251. 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog',
  252. 'horse', 'sheep', 'cow', 'elephant', 'bear', 'zebra',
  253. 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie',
  254. 'suitcase', 'frisbee', 'skis', 'snowboard', 'sports ball',
  255. 'kite', 'baseball bat', 'baseball glove', 'skateboard',
  256. 'surfboard', 'tennis racket', 'bottle', 'wine glass', 'cup',
  257. 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple',
  258. 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza',
  259. 'donut', 'cake', 'chair', 'couch', 'potted plant', 'bed',
  260. 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote',
  261. 'keyboard', 'cell phone', 'microwave', 'oven', 'toaster', 'sink',
  262. 'refrigerator', 'book', 'clock', 'vase', 'scissors',
  263. 'teddy bear', 'hair drier', 'toothbrush'),
  264. "num_classes": 81
  265. ```
  266. ## [Training Process](#contents)
  267. - Set options in `config.py`, including loss_scale, learning rate and network hyperparameters. Click [here](https://www.mindspore.cn/tutorial/training/zh-CN/master/use/data_preparation.html) for more information about dataset.
  268. ### [Training](#content)
  269. - Run `run_standalone_train.sh` for non-distributed training of MaskRCNN model.
  270. ```
  271. # standalone training
  272. sh run_standalone_train.sh [PRETRAINED_MODEL]
  273. ```
  274. ### [Distributed Training](#content)
  275. - Run `run_distribute_train.sh` for distributed training of Mask model.
  276. ```
  277. sh run_distribute_train.sh [RANK_TABLE_FILE] [PRETRAINED_MODEL]
  278. ```
  279. > hccl.json which is specified by RANK_TABLE_FILE is needed when you are running a distribute task. You can generate it by using the [hccl_tools](https://gitee.com/mindspore/mindspore/tree/master/model_zoo/utils/hccl_tools).
  280. > As for PRETRAINED_MODEL, if not set, the model will be trained from the very beginning. Ready-made pretrained_models are not available now. Stay tuned.
  281. > This is processor cores binding operation regarding the `device_num` and total processor numbers. If you are not expect to do it, remove the operations `taskset` in `scripts/run_distribute_train.sh`
  282. ### [Training Result](#content)
  283. Training result will be stored in the example path, whose folder name begins with "train" or "train_parallel". You can find checkpoint file together with result like the followings in loss_rankid.log.
  284. ```
  285. # distribute training result(8p)
  286. epoch: 1 step: 7393 ,rpn_loss: 0.05716, rcnn_loss: 0.81152, rpn_cls_loss: 0.04828, rpn_reg_loss: 0.00889, rcnn_cls_loss: 0.28784, rcnn_reg_loss: 0.17590, rcnn_mask_loss: 0.34790, total_loss: 0.86868
  287. epoch: 2 step: 7393 ,rpn_loss: 0.00434, rcnn_loss: 0.36572, rpn_cls_loss: 0.00339, rpn_reg_loss: 0.00095, rcnn_cls_loss: 0.08240, rcnn_reg_loss: 0.05554, rcnn_mask_loss: 0.22778, total_loss: 0.37006
  288. epoch: 3 step: 7393 ,rpn_loss: 0.00996, rcnn_loss: 0.83789, rpn_cls_loss: 0.00701, rpn_reg_loss: 0.00294, rcnn_cls_loss: 0.39478, rcnn_reg_loss: 0.14917, rcnn_mask_loss: 0.29370, total_loss: 0.84785
  289. ...
  290. epoch: 10 step: 7393 ,rpn_loss: 0.00667, rcnn_loss: 0.65625, rpn_cls_loss: 0.00536, rpn_reg_loss: 0.00131, rcnn_cls_loss: 0.17590, rcnn_reg_loss: 0.16199, rcnn_mask_loss: 0.31812, total_loss: 0.66292
  291. epoch: 11 step: 7393 ,rpn_loss: 0.02003, rcnn_loss: 0.52051, rpn_cls_loss: 0.01761, rpn_reg_loss: 0.00241, rcnn_cls_loss: 0.16028, rcnn_reg_loss: 0.08411, rcnn_mask_loss: 0.27588, total_loss: 0.54054
  292. epoch: 12 step: 7393 ,rpn_loss: 0.00547, rcnn_loss: 0.39258, rpn_cls_loss: 0.00285, rpn_reg_loss: 0.00262, rcnn_cls_loss: 0.08002, rcnn_reg_loss: 0.04990, rcnn_mask_loss: 0.26245, total_loss: 0.39804
  293. ```
  294. ## [Evaluation Process](#contents)
  295. ### [Evaluation](#content)
  296. - Run `run_eval.sh` for evaluation.
  297. ```
  298. # infer
  299. sh run_eval.sh [VALIDATION_ANN_FILE_JSON] [CHECKPOINT_PATH]
  300. ```
  301. > As for the COCO2017 dataset, VALIDATION_ANN_FILE_JSON is refer to the annotations/instances_val2017.json in the dataset directory.
  302. > checkpoint can be produced and saved in training process, whose folder name begins with "train/checkpoint" or "train_parallel*/checkpoint".
  303. ### [Evaluation result](#content)
  304. Inference result will be stored in the example path, whose folder name is "eval". Under this, you can find result like the followings in log.
  305. ```
  306. Evaluate annotation type *bbox*
  307. Accumulating evaluation results...
  308. Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.378
  309. Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.602
  310. Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.407
  311. Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.242
  312. Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.417
  313. Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.480
  314. Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.311
  315. Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.497
  316. Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.524
  317. Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.363
  318. Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.567
  319. Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.647
  320. Evaluate annotation type *segm*
  321. Accumulating evaluation results...
  322. Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.335
  323. Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.557
  324. Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.351
  325. Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.169
  326. Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.365
  327. Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.480
  328. Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.284
  329. Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.433
  330. Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.451
  331. Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.285
  332. Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.490
  333. Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.586
  334. ```
  335. # Model Description
  336. ## Performance
  337. ### Evaluation Performance
  338. | Parameters | Ascend |
  339. | -------------------------- | ----------------------------------------------------------- |
  340. | Model Version | V1 |
  341. | Resource | Ascend 910; CPU 2.60GHz, 192cores; Memory, 755G |
  342. | uploaded Date | 08/01/2020 (month/day/year) |
  343. | MindSpore Version | 1.0.0 |
  344. | Dataset | COCO2017 |
  345. | Training Parameters | epoch=12, batch_size = 2 |
  346. | Optimizer | SGD |
  347. | Loss Function | Softmax Cross Entropy, Sigmoid Cross Entropy, SmoothL1Loss |
  348. | Output | Probability |
  349. | Loss | 0.39804 |
  350. | Speed | 1pc: 193 ms/step; 8pcs: 207 ms/step |
  351. | Total time | 1pc: 46 hours; 8pcs: 5.38 hours |
  352. | Parameters (M) | 84.8 |
  353. | Checkpoint for Fine tuning | 85M(.ckpt file) |
  354. | Model for inference | 571M(.air file) |
  355. | Scripts | [maskrcnn script](https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/maskrcnn) |
  356. ### Inference Performance
  357. | Parameters | Ascend |
  358. | ------------------- | --------------------------- |
  359. | Model Version | V1 |
  360. | Resource | Ascend 910 |
  361. | Uploaded Date | 08/01/2020 (month/day/year) |
  362. | MindSpore Version | 1.0.0 |
  363. | Dataset | COCO2017 |
  364. | batch_size | 2 |
  365. | outputs | mAP |
  366. | Accuracy | IoU=0.50:0.95 (BoundingBox 37.0%, Mask 33.5) |
  367. | Model for inference | 170M (.ckpt file) |
  368. # [Description of Random Situation](#contents)
  369. In dataset.py, we set the seed inside “create_dataset" function. We also use random seed in train.py for weight initialization.
  370. # [ModelZoo Homepage](#contents)
  371. Please check the official [homepage](https://gitee.com/mindspore/mindspore/tree/master/model_zoo).