{'fraction_non_alphanumeric': 0.032555242279194804, 'fraction_numerical': 0.019047931283194545, 'mean_word_length': 4.726112258306739, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Aligning Pretraining for Detection via Object-Level Contrastive Learning

Image-level contrastive representation learning has proven to be highly effective as a generic model for transfer learning. Such generality for transfer learning, however, sacrifices specificity if we are interested in a certain downstream task. We argue that this could be sub-optimal and thus advocate a design principle which encourages alignment between the self-supervised pretext task and the downstream task. In this paper, we follow this principle with a pretraining method specifically designed for the task of object detection. We attain alignment in the following three aspects: 1) object-level representations are introduced via selective search bounding boxes as object proposals; 2) the pretraining network architecture incorporates the same dedicated modules used in the detection pipeline (e.g. FPN); 3) the pretraining is equipped with object detection properties such as object-level translation invariance and scale invariance. Our method, called Selective Object COntrastive learning (SoCo), achieves state-of-the-art results for transfer performance on COCO detection using a Mask R-CNN framework. Code is available at https://github.com/hologerry/SoCo.


Introduction
Pretraining and finetuning has been the dominant paradigm of training deep neural networks in computer vision. Downstream tasks usually leverage pretrained weights learned on large labeled datasets such as ImageNet [1] for initialization. As a result, supervised ImageNet pretraining has been prevalent throughout the field. Recently, self-supervised pretraining [2,3,4,5,6,7,8,9] has achieved considerable progress and alleviated the dependency on labeled data. These methods aim to learn generic visual representations for various downstream tasks by means of image-level pretext tasks, such as instance discrimination. Some recent works [10,11,12,13] observe that the image-level representations are sub-optimal for dense prediction tasks such as object detection and semantic segmentation. A potential reason is that image-level pretraining may overfit to holistic representations and fail to learn properties that are important outside of image classification.
The goal of this work is to develop self-supervised pretraining that is aligned to object detection. In object detection, bounding boxes are widely adopted as the representation for objects. Translation and scale invariance for object detection are reflected by the location and size of the bounding boxes. An obvious representation gap exists between image-level pretraining and the object-level bounding boxes of object detection.
Motivated by this, we present an object-level self-supervised pretraining framework, called Selective Object COntrastive learning (SoCo), specifically for the downstream task of object detection. To introduce object-level representations into pretraining, SoCo utilizes off-the-shelf selective search [14] to generate object proposals. Different from prior image-level contrastive learning methods which With new technical innovations such as learning clustering assignments [7], large-scale contrastive learning has been successfully applied on non-curated data sets [27,28]. While the linear evaluation result on ImageNet classification has improved significantly [3], the progress on transfer performance for dense prediction tasks has been limited. Due to this, a growing number of works investigate pretraining specifically for object detection and semantic segmentation. The idea is to shift imagelevel representations to pixel-level or region-level representations. VADer [29], PixPro [10] and DenseCL [11] propose to learn pixel-level representations by matching point features of the same physical location under different views. InsLoc [12] learns to match region-level features from composited imagery. DetCon [13] additionally uses the bottom-up segmentation of MCG [30] for supervising intra-segment pixel variations. UP-DETR [31] proposes a pretext task named random query patch detection to pretrain DETR detector. Self-EMD [32] explores self-supervised representation learning for object detection without using Imagenet images.
Our work is also motivated and inspired by object detection methods which advocate architectures and training schemes invariant to translation and scale transformations [15,33]. We find that incorporating them in the pretraining stage also benefits object detection, which has largely been overlooked in previous self-supervised learning works.

Method
We introduce a new contrastive learning method which maximizes the similarity of object-level features representing different augmentations of the same object. Meanwhile, we introduce architectural alignment and important properties of object detection into pretraining when designing the objectlevel pretext task. We use an example where transfer learning is performed on Mask-RCNN with a R50-FPN backbone to illustrate the core design principles. To further demonstrate the extensibility  Figure 1: Overview of SoCo. SoCo utilizes selective search to generate a set of object proposals for each raw image. K proposals are randomly selected in each training step. We construct three views {V 1 , V 2 , V 3 } where the scales and locations of the same object are different. We adopt a backbone with FPN to encode image-level features and RoIAlign to extract object-level features. Object proposals are assigned to different pyramid levels according to their image areas. Contrastive learning is performed at the object level to learn translation-invariant and scale-invariant representations. The target network is updated by an exponential moving average of the online network. and flexibility of our method, we also apply SoCo on a R50-C4 structure. In this section, we first present an overview of the proposed SoCo in Section 3.1. Then we describe the process of object proposal generation and view construction in Section 3.2. Finally, the object-level contrastive learning and our design principles are introduced in Section 3.3. Figure 1 displays an overview of SoCo. SoCo aims to align pretraining to object detection in two aspects: 1) network architecture alignment between pretraining and object detection; 2) introducing central properties of detection. Concretely, besides pretraining a backbone as done in existing selfsupervised contrastive learning methods, SoCo also pretrains all the network modules used in an object detector, such as FPN and the head in the Mask R-CNN framework. As a result, all layers of the detector can be well-initialized. Furthermore, SoCo strives to learn object-level representations which are not only meaningful, but also invariant to translation and scale. To achieve this, it encourages diversity of scales and locations of objects by constructing multiple augmented views and applying a scale-aware assignment strategy for different levels of a feature pyramid. Finally, object-level contrastive learning is applied to maximize the feature similarity of the same object across augmented views.

Data Preprocessing
Object Proposal Generation. Inspired by R-CNN [34] and Fast R-CNN [35], we use selective search [14], an unsupervised object proposal generation algorithm which takes into account color similarity, texture similarity, size of region and fit between regions, to generate a set of object proposals for each of the raw images. We represent each object proposal as a bounding box b = {x, y, w, h}, where (x, y) denotes the coordinates of the bounding box center, and w and h are the corresponding width and height, respectively. We keep only the proposals that satisfy the following requirements: where W and H denote width and height of the input image. The object proposal generation step is performed offline. In each training iteration, we randomly select K proposals for each input image.
View Construction. Three views, namely V 1 , V 2 and V 3 , are used in SoCo. The input image is resized to 224 × 224 to obtain V 1 . Then we apply a random crop with a scale range of [0.5, 1.0] on V 1 in generating V 2 . V 2 is then resized to the same size as V 1 and object proposals outside of V 2 are dropped. Next, we downsample V 2 to a fixed size (e.g. 112 × 112) to produce V 3 . In all of these cases, the bounding boxes transformed according to the cropping and resizing of the RGB images (see Figure 1, Data Preprocessing). Finally, each view is randomly and independently augmented. We adopt the augmentation pipeline of BYOL [3] but discard the random crop augmentation since spatial transformation is already applied on all three views. Notice that the scale and location of the same object proposal are different across the augmented views, which enables the model to learn translation-invariant and scale-invariant object-level representations.
Box Jitter. To further encourage variance of scales and locations of object proposals across views, we adopt a box jitter strategy on the generated proposals as an object-level data augmentation. Specifically, given an object proposal b = {x, y, w, h}, we randomly generate a jittered boxb = {x,ŷ,ŵ,ĥ} as follows: The box jitter is randomly applied on each proposal with a probability of 0.5.

Object-Level Contrastive Learning
The goal of SoCo is to align pretraining to object detection. Here, we use the representative framework Mask R-CNN [17] with feature pyramid network (FPN) [15] to demonstrate our key design principles. The alignment mainly involves aligning the pretraining architecture with that of object detection and integrating important object detection properties such as object-level translation invariance and scale invariance into the pretraining.
Aligning Pretraining Architecture to Object Detection. Following Mask R-CNN, we use a backbone with FPN as the image-level feature extractor f I . We denote the output of FPN as {P 2 , P 3 , P 4 , P 5 } with a stride of {4, 8, 16, 32}. Here, we do not use P 6 due to its low resolution. With the bounding box representation b, RoIAlign [17] is applied to extract the foreground feature from the corresponding scale level. For further architectural alignment, we additionally introduce an R-CNN head f H into pretraining. The object-level feature representation h of bounding box b is extracted from an image view V as: SoCo uses two neural networks to learn, namely an online network and a target network. The online network and the target network share the same architecture but with different sets of weights. Concretely, the target network weights f I ξ , f H ξ are the exponential moving average (EMA) with the momentum coefficient τ of the online parameters f I θ and f H θ . Denote the set of object proposals {b i } considered in the image. Let h i be the object-level representation of proposal b i in view V 1 , and h i , h i be the representation of b i in view V 2 , V 3 . They are extracted using the online network and the target network respectively, We follow BYOL [3] for learning contrastive representations. The online network is appended with a projector g θ , and a predictor q θ for obtaining latent embeddings. Both g θ and q θ are two-layer MLPs. The target network is only appended with the projector g ξ for avoiding trivial solutions. We use v i , v i and v i to denote the latent embeddings of object-level representations The contrastive loss for the i-th object proposal is defined as: Then we can formulate the overall loss function for each image as: where K is the number of object proposals. We symmetrize the loss L in Eq. 6 by separately feeding V 1 to the target network and {V 2 , V 3 } to the online network to compute L. At each training iteration, we perform a stochastic optimization step to minimize L SoCo = L + L.
Scale-Aware Assignment. Mask R-CNN with FPN uses the IoU between anchors and ground-truth boxes to determine positive samples. It defines anchors to have areas of {32 2 , 64 2 , 128 2 , 256 2 } pixels on {P 2 , P 3 , P 4 , P 5 }, respectively, which means ground-truth boxes of scale within a range are assigned to a specific pyramid level. Inspired by this, we propose a scale-aware assignment strategy, which greatly encourages the pretraining model to learn object-level scaleinvariant representations. Concretely, we assign object proposals of area within a range of Notice that the maximum proposal size is 224 × 224 since all of the views are resized to a fixed resolution smaller than 224. The advantage is that the same object proposals at different scales are encouraged to learn consistent representations through contrastive learning. As a result, SoCo learns object-level scale-invariant visual representations, which is important for object detection.
Introducing Properties of Detection to Pretraining. Here, we discuss how SoCo promotes important properties of object detection in the pretraining. Object detection uses tight bounding boxes to represent objects. To introduce object-level representations, SoCo generates object proposals by selective search. Translation invariance and scale invariance at the object level are regarded as the most important properties for object detection, i.e., feature representations of objects belonging to same category should be insensitive to scale and location. Recall that V 2 is a randomly cropped patch of V 1 . Random cropping introduces box shift and thus contrastive learning between V 1 and V 2 encourages the pretraining model to learn location-invariant representations. V 3 is generated by downsampling V 2 , which results in a scale augmentation of object proposals. With our scale-aware assignment strategy, the contrastive loss between V 1 and V 3 guides the pretraining towards learning scale-invariant visual representations.
Extending to Other Object Detectors. SoCo can be easily extended to align to other detectors besides Mask R-CNN with FPN. Here, we apply SoCo to Mask R-CNN with a C4 structure, which is a popular non-FPN detection framework. The modification is three-fold: 1) for all object proposals, RoIAlign is performed on C 4 ; 2) the R-CNN head is replaced by the entire 5-th residual block; 3) view V 3 is discarded and the remaining V 1 and V 2 are kept for object-level contrastive learning. Experiments and comparisons with state-of-the-art methods in Section 4.3 demonstrate the extensibility and flexibility of SoCo.

Pretraining Settings
Architecture. Through the introduction of object proposals, the architectural discrepancy is reduced between pretraining and downstream detection finetuning. Mask R-CNN [17] is a commonly adopted framework to evaluate transfer performance. To demonstrate the extensibility and flexibility of SoCo, we provide details of SoCo alignment for the detection architectures R50-FPN and R50-C4. SoCo-R50-FPN: ResNet-50 [36] with FPN [15] is used as the image-level feature encoder. RoIAlign [17] is then used to extract RoI features on feature maps {P 2 , P 3 , P 4 , P 5 } with a stride of {4, 8, 16, 32}. According to the image areas of object proposals, each RoI feature is then transformed to an object-level representation by the head network as in Mask R-CNN. SoCo-R50-C4: on the standard ResNet-50 architecture, we insert the RoI operation on the output of the 4-th residual block. The entire 5-th residual block is treated as the head network to encode object-level features. Both the projection network and prediction network are 2-layer MLPs which consist of a linear layer with output size 4096 followed by batch normalization [37], rectified linear units (ReLU) [38], and a final linear layer with output dimension 256.
Dataset. We adopt the widely used ImageNet [1] which consists of ∼1.28 million images for self-supervised pretraining.
Data Augmentation. Once all views are constructed, we employ the data augmentation pipeline of BYOL [3]. Specifically, we apply random horizontal flip, color distortion, Gaussian blur, grayscaling, and the solarization operation. We remove the random crop augmentation since spatial transformations have already been applied on all views.
Optimization. We use a 100-epoch training schedule in all the ablation studies and report the results of 100-epochs and 400-epochs in the comparisons with state-of-the-art methods. We use the LARS optimizer [39] with a cosine decay learning rate schedule [40] and a warm-up period of 10 epochs. The base learning rate lr base is set to 1.0 and is scaled linearly [41] with the batch size (lr = lr base × BatchSize/256). The weight decay is set to 1.0 × e −5 . The total batch size is set to 2048 over 16 Nvidia V100 GPUs. For the update of the target network, following [3], the momentum coefficient τ starts from 0.99 and is increased to 1 during training. Synchronized batch normalization is enabled.

Transfer Learning Settings
COCO [42] and Pascal VOC [43] datasets are used for transfer learning. Detectron2 [44] is used as the code base.
COCO Object Detection and Instance Segmentation. We use the COCO train2017 set which contains ∼118k images with bounding box and instance segmentation annotations in 80 object categories. Transfer performance is evaluated on the COCO val2017 set. We adopt the Mask R-CNN detector [17] with the R50-FPN and the R50-C4 backbones. We report AP bb , AP bb 50 and AP bb 75 for object detection, and AP mk , AP mk 50 and AP mk 75 for instance segmentation. We report the results under the COCO 1× and 2× schedules in comparisons with state-of-the-art methods. All ablation studies are conducted on the COCO 1× schedule.
Pascal VOC Object Detection. We use the Pascal VOC trainval07+12 set which contains ∼16.5k images with bounding box annotations in 20 object categories as the training set. Transfer performance is evaluated on the Pascal VOC test2007 set. We report the results of AP bb , AP bb 50 and AP bb 75 for object detection.
Optimization. All the pretrained weights except for projection and prediction are loaded into the object detection network for transfer. Following [5], synchronized batch normalization is used across all layers including the newly initialized batch normalization layers in finetuning. For both the COCO and Pascal VOC datasets, we finetune with stochastic gradient descent and a batch size of 16 split across 8 GPUs. For COCO transfer, we use a weight decay of 2.5 × e −5 , and a base learning rate of 0.02 that increases linearly for the first 1000 iterations and drops twice by a factor of 10, after 2 3 and 8 9 of the total training time. For Pascal VOC transfer, the weight decay is 1.0 × e −4 , and the base learning rate is set to 0.02 and divided by 10 at 3 4 and 11 12 of the total training time.

Comparison with State-of-the-Art Methods
Mask R-CNN with R50-FPN on COCO.   schedule. Moreover, we propose an enhanced version named SoCo*, which constructs an additional view V 4 for pretraining. Similar to the construction step of V 2 , V 4 is a randomly cropped patch of V 1 . We resize V 4 to 192 × 192 and perform the same forward process as for V 2 and V 3 . Compared with SoCo, SoCo* further boosts the performance and obtains an improvement of +0. Mask R-CNN with R50-C4 on COCO. To demonstrate the extensibility and flexibility of SoCo, we also evaluate transfer performance using Mask R-CNN with R50-C4 backbone on the COCO benchmark. We report the results of SoCo under 100 epochs and 400 epochs. Faster R-CNN with R50-C4 on Pascal VOC. We also evaluate the transfer ability of SoCo on the Pascal VOC benchmark. Following [5], we adopt Faster R-CNN with R50-C4 backbone for transfer learning. Table 3 shows the comparison. SoCo obtains an improvement of +6.2 AP bb against the supervised pretraining baseline, achieving 59.7 AP bb for VOC object detection.

Ablation Study
To further understand the advantages of SoCo, we conduct a series of ablation studies that examine the effectiveness of object-level contrastive learning, the effects of alignment between pretraining and detection, and   box jitter and scale-aware assignment are used, FPN and R-CNN head are pretrained and transferred, and selective search is used as the proposal generator.
Effectiveness of Aligning Pretraining to Object Detection. We ablate each component of SoCo step by step to demonstrate the the effectiveness of aligning pretraining to object detection. Table 4 reports the studies. The baseline treats the whole image as an instance, without considering any detection properties or architecture alignment. It obtains 38.1 AP bb and 34.4 AP mk . Selective search introduces object-level representations. By leveraging generated object proposals and conducting contrastive learning at the object level, our method obtains an improvement of +2.5 AP bb and +2.4 AP mk . Next, we further minimize the architectural discrepancy between pretraining and object detection pipeline by introducing FPN and an R-CNN head into the pretraining architecture. We observe that only introducing FPN into pretraining slightly hurt the performance. In contrast, including both FPN and the R-CNN head improves the transfer performance to 41.2 AP bb / 37.0 AP mk , which verifies the effectiveness of architectural alignment between self-supervised pretraining and downstream tasks. On top of architectural alignment, we further leverage scale-aware assignment which encourages scale-invariant object-level visual representations, and an improvement of +3.5 AP bb / +2.9 AP mk against the baseline is found. The box jitter strategy slightly elevates performance. Finally, multiple views (V 3 ) further directs SoCo towards learning scale-invariant and translationinvariant representations, and our method achieves 42.3 AP bb and 37.6 AP mk .
Ablation Study on Hyper-Parameters. Table 5 examines sensitivity to the hyper-parameters of SoCo. Table 5(a) ablates the resolution of view V 3 . SoCo is found to be insensitive to the image size of V 3 . We use 112 × 112 as the default resolution due to its slightly better transfer performance and low training computation cost.  Table 5(b) ablates the training batch size of SoCo. It can be seen that larger or smaller batch sizes hurt the performance. We use a batch size of 2048 by default. Table 5(c) ablates the effectiveness of object proposal generation strategies. To demonstrate the superiority of meaningful proposals generated by selective search, we randomly generate K bounding boxes in each of the training images to replace the selective search proposals (namely Random in Table 5(c)). SoCo can still yield satisfactory results using a single random bounding box to learn object-level representations, which is not surprising, since the RoIAlign operation performed on the randomly generated bounding boxes also introduces object-level representation learning. This fact indirectly demonstrates that downstream object detectors can benefit from self-supervised pretraining that involves object-level representations. However, the result is still slightly worse than the case where only one object proposal generated by selective search is used in the pretraining. For the cases where we randomly generate 4 and 8 bounding boxes, the noisy and meaningless proposals cause the pretraining to diverge. From the table, we also find that applying more object proposals (K = 8 and K = 16) generated by selective search can be harmful. One potential reason is that most of the images in the ImageNet dataset only contain a few objects, so a larger K may create duplicated and redundant proposals. Table 5(d) ablates the momentum coefficient τ of the exponential moving average, and τ = 0.99 yields the best performance.

More Experiments
Transfer Learning on LVIS Dataset. In addition to COCO and PASCAL VOC object detection, we also consider the challenging LVIS v1 dataset [46] to demonstrate the effectiveness and generality of our approach. The LVIS v1 detection benchmark contains 1203 categories in a long-tailed distribution with few training samples. It is considered to be more challenging than the COCO benchmark. We use Mask R-CNN with R50-FPN backbone and follow the standard LVIS 1× and 2× training schedules. We do not use any training or post-processing tricks. Table 6 shows the results. We can see that our method achieves +5.9 AP bb /+5.6 AP mk and +4.9 AP bb /+4.6 AP mk improvements under the LVIS 1× and 2× training schedules, respectively.
Transfer Learning on Different Object Detectors. In addition to two-stage detectors, we further conduct experiments on RetinaNet [47] and FCOS [48], which are representative works for singlestage detectors and anchor-free detectors. We transfer the weights of backbone and FPN layers learned by SoCo* to RetinaNet and FCOS architectures and follow the standard COCO 1× schedule. We use MMDetection [49] as code base and default optimization configs are adopted. Table 7 shows the comparison.
Evaluation on Mini COCO. Transfer to the full COCO dataset may be of limited significance due to the extensive supervision available from its large-scale annotated training data. To further demonstrate the generalization ability of SoCo, we conduct an experiment on a mini version of the COCO dataset, named Mini COCO. Concretely, we randomly select 5% or 10% of the training data from COCO train2017 to form Mini COCO benchmarks. Mask-RCNN with R50-FPN backbone is adopted to evaluate the transfer performance on the COCO 1× schedule. COCO val2017 is still used  Pretraining on Non-object-centric Dataset. We use COCO training set and unlabeled set as pretraining data. Since ImageNet is ∼5.3 times larger than COCO, we pretrain our method on COCO for 100 epochs and prolonged 530 epochs respectively. Furthermore, we also generate a dataset named ImageNet-Subset which contains the same number of images of COCO to verify the impact of different pretraining datasets. Table 9 shows the results. Compared with the ImageNet pretrained model, the COCO pretrained model under 530 epochs is lower by 1.7 AP, possibly because the scale of COCO is smaller than ImageNet. Compared with the ImageNet-Subset pretrained model, the COCO pretrained model under 100 epochs is +0.4 AP higher, which demonstrates the importance of domain alignment between the pretraining dataset and detection dataset.
Longer Finetuning. We transfer SoCo* to Mask R-CNN with R50-FPN under the COCO 4× schedule. Table 10 shows the results. Our model continues to improve the performance with the 4× finetuning schedule, surpassing the supervised baseline by +2.6 AP bb / +1.9 AP mk .

Conclusion
In this paper, we propose a novel object-level self-supervised pretraining method named Selective Object COntrastive learning (SoCo), which aims to align pretraining to object detection. Different from prior image-level contrastive learning methods which treat the whole image as an instance, SoCo treats each object proposal generated by the selective search algorithm as an independent instance, enabling SoCo to learn object-level visual representations. Further alignment is obtained in two ways.
One is through network alignment between pretraining and downstream object detection, such that all layers of the detectors can be well-initialized. The other is by accounting for important properties of object detection such as object-level translation invariance and scale invariance. SoCo achieves state-of-the-art transfer performance on COCO detection using a Mask R-CNN detector. Experiments on two-stage and single-stage detectors demonstrate the generality and extensibility of SoCo.
In the appendix, we present details of the selective search algorithm, the ImageNet linear evaluation results and the broader impact of this work.

A Selective Search
A.1 Implementation Details There are mainly three parameters in the selective search approach: scale, σ and min_size. The parameter scale controls the number and size of the produced segments, that higher scale means less but larger segments. The parameter σ is the diameter of the Gaussian kernel used for smoothing the image prior for segmentation. The parameter min_size denotes the minimum component size. We use the default values of this approach: scale = 500, σ = 0.9 and min_size = 10. Figure 2 shows the proposals generated by the selective search approach, which shows reasonably good to cover the objects.

A.3 Statistics
The distribution of proposal number and size in each image are shown in Figure 3.

B Linear Evaluation on ImageNet-1K
In this section, we present the ImageNet-1K linear evaluation results for reference.
Only the backbone (ResNet-50) weights are leveraged for ImageNet linear classification, and all of the dedicated modules (e.g. FPN) are dropped. Our linear classifier training follows common practice [4,3,7,9]: random crops with resize of 224 × 224 pixels, and random flips are used for data augmentation. The backbone network parameters and the batch statistics are both fixed. The classifier is trained for 100 epochs, using a SGD optimizer with a momentum of 0.9 and a batch size of 256. The initial learning rate is set to 30 and the weight decay is set to 0. In testing, each image is first resized to 256 × 256 pixels using bilinear resampling and then center cropped to 224 × 224.   Table 11 reports top-1 and top-5 accuracies (%) on the ImageNet-1K validation set. The performance of SoCo is lower than previous image-level self-supervised pretraining methods. We expect joint image-level and object-level tasks could bridge this gap, and will be left as our future exploration.

C Data Efficiency
We conduct experiments to verify the data efficiency of our method. Concretely, we randomly select 50% of the training data from COCO dataset for SoCo* finetuning, the result is compared with the model trained on full COCO training data by using supervised pretraining. We use the standard COCO 1× setting. Table 12 shows the comparison, our method has 2× data efficiency compared with supervised pretraining.

D Broader Impact
This work aims to design a self-supervised pretraining method for object detection. Any object detection applications may benefit from this work. There may be unpredictable failures. The consequences of failures by this algorithm are determined on the down-stream applications, and please do not use it for scenarios where failures will lead to serious consequences. The method is data driven, and the performance may be affected by the biases in the data. So please also be careful about the data collection process when using it.