R-CNN [@fasterrcnn] and R-FCN [@rfcn] usually use multi-stage training for joint optimization. In contrast, the loss function \[loss\] is trained end-to-end in our implementation by back-propagation and SGD, which is more efficient at training phase. At the beginning of training, the objectness prior maps are in chaos. However, along with the training progress, the objectness prior maps are more concentrated on areas covering objects.

**Data augmentation** To make the model more robust to various object scales, each training image is randomly sampled by one of the following options: (i) Using the original/flipped input image; (ii) Randomly sampling a patch whose edge length is {$\frac{4}{10}$, $\frac{5}{10}$, $\frac{6}{10}$, $\frac{7}{10}$, $\frac{8}{10}$, $\frac{9}{10}$} of the original image and making sure that at least one object’s center is within this patch. We note that the data augmentation strategy described above will increase the number of large objects, but the optimization benefit for small objects is limited. We overcome this problem by adding a small scale for training. A large object at one scale will be smaller at smaller scales. This training strategy could effectively avoid over-fitting of objects with specific sizes.

**Inference** At inference phase, we multiply the class-conditional probability and the individual box confidence 