{'fraction_non_alphanumeric': 0.0319062081578002, 'fraction_numerical': 0.014793768982071128, 'mean_word_length': 4.487813620071685, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 1, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
3D-FCT: Simultaneous 3D Object Detection and Tracking Using Feature Correlation

3D object detection using LiDAR data remains a key task for applications like autonomous driving and robotics. Unlike in the case of 2D images, LiDAR data is almost always collected over a period of time. However, most work in this area has focused on performing detection independent of the temporal domain. In this paper we present 3D-FCT, a Siamese network architecture that utilizes temporal information to simultaneously perform the related tasks of 3D object detection and tracking. The network is trained to predict the movement of an object based on the correlation features of extracted keypoints across time. Calculating correlation across keypoints only allows for real-time object detection. We further extend the multi-task objective to include a tracking regression loss. Finally, we produce high accuracy detections by linking short-term object tracklets into long term tracks based on the predicted tracks. Our proposed method is evaluated on the KITTI tracking dataset where it is shown to provide an improvement of 5.57% mAP over a state-of-the-art approach.


Introduction
3D object detection is a fundamental task required for a multitude of robot applications such as autonomous driving, object manipulation and augmented reality. LiDAR sensors are commonly utilized in autonomous driving scenarios which capture 3D information about the environment, and the aim of the 3D object detection task is to utilize this information to provide semantically labeled 3D oriented bounding boxes for all objects in the environment. A related task is 3D object tracking, which requires ID assignment for each detected object across time.
Most 3D tracking algorithms [18,21,27] consider object detection to be a prior step independent of tracking. In this paradigm, object detection is performed frame-byframe. This runs contrary to how 3D data is collected using sensors (e.g. RGB camera, LiDAR) in settings like Figure 1. Example sequence of frames in the KITTI [9] Tracking dataset. Objects in the same frame take the same color. A few cars, a pedestrian and a cyclist are visible.
autonomous driving. Information about the detections in past frames can be an indicator of possible objects in future frames. However, almost all previous work in 3D object detection [19,30,32,38] has focused on frame-by-frame detection. In our literature search, we find only Huang et al. [16] have tackled this issue previously. Ngiam et al. [24] and Hu et al. [15] also consider multiple 3D frames as input, but both use relatively simple techniques of reusing seed points or concatenating input over multiple frames.
In this paper, we investigate a new method that makes use of temporal information across multiple LiDAR point clouds to simultaneously perform 3D detection and tracking. An example of the high correlation between object positions and object appearance in shown in Figure 1, which visualizes 3 consecutive point clouds where objects in the same frame are colored similarly. Our objective is to continuously infer a 'tracklet' over multiple frames by correlating the object features for all detected Regions of Interest (RoIs). To this effect we propose to extend the PV-RCNN architecture proposed by Shi et al. [30] with a tracking formulation which utilizes cross correlation to regress tracking values. We train an end-to-end architecture on a combined detection and tracking loss. We refer to this novel architecture as 3D-FCT for 3D Feature Correlation and Tracking. The input to 3D-FCT consists of pairs of LiDAR point clouds which are first passed through a detection trunk (e.g. PV-RCNN) to produce object features. These features are shared for both the detection and the tracking tasks. A cross-correlation is calculated between the features from the two adjacent point clouds. This correlation information is then used to predict the displacement of each object by regressing the box transformations across point clouds. Finally, we infer long-term tubes for objects using the shortterm tracklets predicted by the network.
Compared to previous methods which concatenate input point clouds, our approach is more memory and compute efficient since the detection trunk is shared between the pairs of inputs as a Siamese network. Huang et al. [16] propose an LSTM-based architecture which also reduces memory and compute footprint. However, their architecture depends on the ability of the LSTM network to extract useful features from the entire point cloud as its hidden state for the next point cloud. 3D-FCT takes inspiration from the D2T architecture [8] in the 2D domain to utilize past features from each RoI separately. An evaluation on the KITTI [9] Tracking Dataset shows that our approach is able to achieve better performance across all three classes as compared to frame-by-frame approaches, with an increase of 5.57% mAP.

Related Work
3D Object Detection. Previous work on 3D object detection can be broadly divided into three categories: grid based methods, point based methods and representation learning. Grid based methods, pioneered by MV3D [3], dissect the 3D point cloud into a regular grid to apply a 2D or 3D CNN. The introduction of 3D sparse convolution [11,12] allowed for efficient processing of voxels, leading to further development of 3D CNN architectures in [32,36,38]. Point based methods use PointNet [2,26] and its set abstraction operation to directly convert point clouds into feature vectors. F-PointNet [25] and F-ConvNet [37] utilize 2D image bounding boxes to generate 3D proposals to be passed to PointNet. PointRCNN [31] provides 3D proposals directly from point clouds. Finally, representation learning involves learning a set of features from the 3D point cloud before performing the object detection task. PointNet, proposed by Qi et al. [26], remains a key feature in representation learning, allowing flexible receptive fields of different search radii. The PV-RCNN [30] model utilizes both voxel based feature learning and PointNet based feature learning to provide high quality detections.

Spatio-temporal Methods.
A number of papers in the past few years have focused on using temporal information to improve 2D object detection in videos. This has been possible in large part because of video datasets like VidOR [29,34] which label object categories and relations over an extended sequence of image frames. Several methods utilize this temporal information only in the post-processing stage of the pipeline [13,17], by constructing tubelets that are re-scored based on the object classes and 2D location. Feichtenhofer et al. [8] utilize a Siamese R-FCN detector to simultaneously detect and track objects in a video. FGFA [40] considers temporal information at the feature level, by utilizing optical flow from past and future frames to provide local aggregation. The MEGA [4] network provides both local and global aggregation by allowing a large amount of information to be saved from past and future frames.
By contrast, using temporal information in LiDAR point clouds is largely an unexplored area of research. A direct approach followed by [23,28,39] involves converting the point clouds into bird's-eye view projections and then utilize 2D CNN architectures along with ConvGRU or ConvLSTM. Luo et al. [22] build a combined architecture for the related tasks of detection, tracking, motion forecasting and motion planning by concatenating multiple point clouds into a single input. Another related approach taken by Choy et al. [6] builds a sparse 4D convolution with non-conventional kernels, with the 4th dimension being time. The approaches above can be considered as early fusion with the time dimension being added as an input. A middle fusion approach is taken with PointRNN [7] which aggregates the past state and the current input based on point coordinates. Similarly, Huang et al. [16] use LSTM networks to preserve a hidden state from the previous inputs. Our approach is different as we do not use a neural network to pull features from the entire point cloud into a state vector. Instead, we correlate features of individual RoI across point clouds in time.
3D Object Tracking. Previous effort has also focused on the related task of object tracking in 3D [18,21,27]. However, these works assume 3D object detection as a pre-existing input and do not necessarily improve it further. Another approach taken in FlowNet3D [20] is to estimate per-point translation vectors to provide a 3D scene flow. Scene flow can provide information about the direction and magnitude of movement of objects, and hence might be useful for improving object detection.

Method
In this section we first provide a high level overview of 3D-FCT (Sect. 3.1) which outputs tracklets given two consecutive point clouds as input. In Sect. 3.2 we formulate the 3D object detection and tracking task using the PV-RCNN detector [30] as a baseline. The tracking objective is formalized as a cross-cloud bounding box regression task (Sect. 3.3) which is achieved using a correlation technique detailed in Sect. 3.4.
The inter-cloud tracklets are combined into long-term tubes using the procedure described in Sect. 3.5. We finally apply 3D-FCT on the KITTI tracking dataset [9] in Sect. 4.

Overview
We illustrate the overall architecture of the proposed 3D-FCT network in Fig. 2. We use the PV-RCNN [30] 3D object detection network which combines voxel based sparse 3D convolutions as well as the keypoint based representation learning to predict oriented bounding boxes and object classes. We extend this network for multi cloud detection and tracking. The PV-RCNN module as shown in Fig. 2 takes as input a point cloud and passes it through layers of 3D sparse convolution. In a parallel track, PV-RCNN selects keypoints using furthest point sampling and uses Point-Net [26] to convert the point cloud within a radius of the keypoint into a feature vector. In this manner, PV-RCNN is able to provide keypoint features across multiple layers (shown as different colors in Fig. 2). Using these keypoint and BEV features, a RPN is used to propose candidate regions in each cloud based on pre-defined anchor boxes. An RoI pooling layer finally aggregates position-sensitive features and scores to classify objects and refine the box targets (regression).
The above architecture is extended by constructing a Siamese network [1] which accepts a set of point clouds as an input and each point cloud is passed through a PV-RCNN with shared weights. Further, a regressor is introduced which takes as input the keypoint features from both point clouds as well as a correlation map to predict the box transformations from one point cloud to the next. To achieve coherence across point clouds, features are pooled at the same proposal region as the point cloud at time t. The trunk of the network responsible for the tracking task is trained by introducing a new tracking regression loss into the multi-task objective of PV-RCNN. The tracking loss is defined as the smooth L1 norm between the predicted and ground-truth cross-cloud bounding box movement.
The formulation of tracking as the bounding box movement is common in 2D [14], however, it does not inherently utilize translational equivariance. A correlation approach counters that shortcoming since correlation is robust to translations. A correlation map searches for feature in the search space that matches the template feature. In a single object tracking scenario, correlation maps can be utilized to calculate the displacement of an object by taking a maximum over the space.
Keypoint features extracted from PV-RCNN concatenate information from varying depths of the 3D convolution network allowing them to extract both low and high level features. Our aim is to develop a multi-object correlation tracker by computing correlation maps of the features of all keypoints in a point cloud. Our architecture can be trained end-to-end by using point clouds as an input to produce object detections and tracks. The next section describes how this end-to-end learning is formulated.

3D object detection and tracking
The 3D-FCT architecture takes as input a point cloud P t ∈ R m×d at time t. This point cloud is first divided into small voxels of size L × W × H with non-empty voxels taking the mean value of all point-wise features for the points that fall in the voxel. As in PV-RCNN [30], we utilize a series of 3 × 3 × 3 3D sparse convolution layers to downsample the input by 1×, 2×, 4× and 8× respectively. 3D bounding box proposals are then calculated using an anchor-based approach from a BEV feature map of dimension L 8 × W 8 after stacking the 3D features along the Z axis. As a result we have a bank of D cls = 2 × (C + 1) × L 8 × W 8 position-sensitive score maps for two anchors at 0 • , 90 • for C classes (and background) at every pixel of the BEV map. Using a second regression branch we also have a bank of In a parallel trunk, PV-RCNN [30] selects n keypoints K = {p 1 , . . . , p n } from the point cloud P t , where n = 2, 048 for the KITTI dataset. A voxel set abstraction module subsequently extracts keypoint specific features from each level of the 3D voxel CNN. These features are concatenated together to provide a multi-scale semantic feature We now consider a pair of point clouds P t , P t+τ collected at time t and t + τ as inputs to the network. An inter-cloud bounding box regression layer is introduced that performs position sensitive RoI pooling on a concatenation of the multi-scale semantic features {f t , f t+τ } as well as the correlation between them (described in more detail in Sect. 3.4). The regression layer is trained to predict the

Multitask detection and tracking objective
PV-RCNN [30] is trained end-to-end on a combination of classification loss L cls and regression loss L reg . A tracking loss L tra is added to this overall loss function to allow the tracking regressor to be trained. Given N RoIs with softmax probabilities and cross cloud RoI tracking transformations {∆ t+τ i } Ntra i=1 , the overall loss function for a single iteration can be written as: The classification loss is calculated as the cross entropy loss, L cls (p i,c * ) = − log (p i,c * ) where p i,c * is the predicted softmax score for the ground-truth label c * . Hence, the first term in eq. 1 acts for all N RoIs. The regression loss (second term in eq. 1) acts only for N f g foreground RoIs. The indicator function [c * i > 0] is 1 for RoIs with c * i = 0 and 0 for RoIs with c * i = 0. L reg is calculated as the smooth L1 loss defined in [10] between the predicted bounding boxes b i and the ground truth bounding boxes b * i . Assignment of RoIs to ground truth is based on a minimum intersection-over-union (IoU) of 0.5. The third term in eq. 1 corresponds to the tracking loss, and is active only for foreground RoIs for which the ground truth object is present in both point clouds P t and P t+τ . Therefore, we have N tra ≤ N f g ≤ N . The tradeoff parameters λ reg and λ tra were both set to 1 for this work.
The ground truth labels for track regression are calculated based on the ground truth bounding boxes in both point clouds. The bounding box for a single object in point cloud P t can be defined as b t = (x t , y t , z t , l, w, h, r t z ) denoting the 3D coordinates of the center, length, width, height and yaw angle respectively. Consider the corresponding bounding box b t+τ for the same object in time t + τ . The target for the tracking regression ∆ * ,t+τ = (∆ * ,t+τ x , ∆ * ,t+τ y , ∆ * ,t+τ z , ∆ * ,t+τ rz ) is then defined as: Note that the length, width and height of an object does not change over time in 3D object detection.

Keypoint correlation for object tracking
Defining correlation in 3D space is challenging because of the sparsity of 3D data. The simplest method would be to define correlation over the voxelized 3D space. This technique is already quite memory intensive in 2D space, in 3D space it would be prohibitive. Furthermore, unlike in the case of single object tracking, multi object tracking requires construction of correlation maps over multiple templates. Considering all possible circular shifts in 3D voxel space would produce feature maps of very large sizes. Hence, we utilize the multi-scale semantic keypoint features {f t , f t+τ } provided by PV-RCNN. The correlation layer in Fig. 2 performs keypoint-wise feature comparison between keypoints in two point clouds: Thus the correlation layer produces a feature map f t,t+τ corr ∈ R n×n . Since the correlation feature is calculated from the keypoint features, it takes into account features from various semantic scales of the 3D sparse convolutional network.
The correlation features are concatenated with the keypoint features as {f t,t+τ corr , f t , f t+τ } before being passed through a fully connected layer to produce the final features f comb ∈ R n×n d , with n d = 256 for this work. These features are weighted based on the keypoint weighting module of PV-RCNN before they are pooled by the RoI pooling layer. Fig. 3 shows an example of the correlation map generated by the correlation of keypoint features. In Fig 3(b), the keypoint of the point cloud at time t are visualized in a bird eye view (BEV) image, with the color of the points mapped to their respective (x, y, z) location. Fig 3(c) correspondingly visualizes the keypoints of cloud at time t + τ . Here however the points are colored to match the keypoint in cloud t that maximizes the correlation. We observe that for most objects (highlighted in both Fig. 3(a)&(c)) the correlation is fairly accurate, maintaining the correspondence across time. We also observe that the road plane is mapped to a single point that maximizes the correlation. This is because localized features of a road surface are expected to be very close regardless of position, and the correlation function does not consider global positions. However, it is intersting to see that patches of grass are accurately correlated across the two point clouds, which highlights the possible future use case scenario of this work for point cloud segmentation.

Linking tracklets to object tubes
The high dimensionality of point clouds put a constraint on the number of point clouds that can be simultaneously processed by a single network based on the limitations of the memory available in modern GPUs. This is exacerbated by the fact that 3D object detection is commonly applied in autonomous robotics applications where processing ability may be limited. Hence, a method is required to combine the cross cloud tracklets that are predicted by our method into long-term tracks for individual objects. To this end, we utilize a location based technique, similar to those used in [8,13] in 2D, to link detections into long term tracks.
Consider the detections for a point cloud at time t, and a softmax probability of p t i,c for class c. In addition, we have predictions for the position of object B t i,c at time t + τ , i.e. the tracklets T t,t+τ }. Using these predictions we can define a class specific linking score allowing us to combine detections across time where the pairwise score is where φ evaluates to 1 if 3D volumetric IoU between the expected bounding box and the predicted bounding box at time t + τ is greater than the threshold δ.
A set of graphs are constructed where bounding boxes B t0 is connected to B t0+τ with edges weighted by s c (B t0 , B t0+τ , T t0,t0+τ ), ∀t 0 ∈ (1, . . . , T − τ ). Given such a set of graphs, our aim is to select the sequence of boxes that maximize the sum of the weights along the sequence. This can be done using a dynamic programming algorithm that maintains the maximum scoring sequence seen so far at each box. Once such a maximizing sequence B seq = {B ts is , . . . , B te ie } and its respective score sequence S seq = {s ts is , . . . , s te ie } have been found, the scores within the sequence are updated using a function S seq = F (S seq ). For this work, we consider F to be the maximum function. The aim is to boost the scores for positive boxes on which the detector fails to achieve sufficiently high scores. The boxes in B seq are removed from the graph along with any boxes in B t , t ∈ [t s , t e ] with an IoU with B t seq greater than a set threshold. This process is repeated until no more links can be formed. This is summarized in Fig. 4 which shows the BEV of 4 consecutive point clouds in time superimposed on each other. In Fig. 4(b), 3 long term tracks are formed based on eq. 5. Such an approach prevents us from assuming that the object stays in view for the entirety of the point cloud sequence, which is seldom the case in 3D.

Dataset and Evaluation
Our 3D-FCT architecture is evaluated on the KITTI [9] tracking dataset which is used for multi object tracking evaluation for autonomous vehicle applications. The dataset consists of three classes: cars, pedestrians and cyclists, with 21 training sequences and 29 test sequences. Each sequence consists of consecutive point clouds collected over a period of time. Since the test dataset does not provide ground truth information, the training sequences are divided into a training (5027 point clouds) and validation (2981 point clouds) set, respectively. In this, we follow [35] who split the dataset to approximately balance the relative number of occurrence of each class equally across the two sets 1 . Similar to the standard practice, as presented in [33] and used by the KITTI 3D object detection challenge, we utilize the 3D average precision (AP) using 40 recall positions to evaluate our results. In addition, a true positive requires a minimum 3D overlap of 70% for cars and 50% for pedestrians and cyclists.
For all evaluations, we begin with a model pretrained on the KITTI [9] 3D object detection dataset before training it on the tracking dataset. Also, we do not follow the data augmentation technique of oversampling ground truth objects as described in [5,38] and common practice with most 3D object detection neural network implementations. This augmentation technique places ground truth objects at random locations in the point cloud, greatly increasing the number of objects available for training and also solving the class imbalance. However, our implementation requires the existence of short term tracklets for each object between consecutive frames which makes the use of this augmentation technique challenging. Extension of this technique for tracking formulations is left for future work.

Training
PV-RCNN. Our PV-RCNN backbone is trained exactly as originally proposed in [30]. The 3D voxel CNN consists of 4 level with feature dimensions 16, 32, 64, 64 respectively. The radii levels used in the voxel set abstraction module are also preserved from [30] as (0.4m, 0.8m), (0.8m, 1.2m), (1.2m, 2.4m), (2.4m, 4.8m) for each layer respectively, with the neighborhood radii for the set abstraction of for raw points being (0.4m, 0.8m). The voxel size was set to be (0.1m, 0.1m, 0.15m). The RoI grid pooling operation samples 6 × 6 × 6 grid points in each 3D proposal. The number of keypoints is fixed to n = 2048. The generated proposals are suppressed to 512 for training and 100 for inference using NMS.
Tracking. For training the tracking arm of 3D-FCT, we start with a pretrained PV-RCNN model and fine tune it based on the added tracking loss from eq. 1. For all of our evaluations we utilize a value of τ = 1, which means we use directly consecutive point clouds as input. This is primarily because LiDAR point clouds are collected at a much lower frequency (∼10 clouds per second) than RGB images (30/60 FPS). As a result, objects can move by significant amounts from 1 point cloud to the next. The feature convolution operation in eq. 4 is performed over all n = 2048 keypoints. We recognize that this may not be necessary and a more efficient strategy would be to only perform correlation with keypoints within a distance of the current keypoint. However, we leave an analysis on the benefits of this approach to future work. The multi-scale semantic features retrieved from the voxel set abstraction module is of length 128. Hence, after concatenating the correlation features f corr , the sematic features f and the global locations of the keypoints, the overall size of the features for a single iteration is 2048 × 2310. This size is reduced to 2048 × 256 using a single fully connected layer. After the RoI pooling operation, the features are passed through a fully connected network of 4 layers of 256 neurons each for the regression task.

Results
We perform a series of experiments to evaluate the performance of our proposed network against alternative approaches. We also perform an ablation study to identify the effect of each sub-component of our network. These results are summarized in Table 1.
Our first baseline is the PV-RCNN [30] model that was trained on the KITTI tracking dataset, which achieves 65.08% mAP for the medium difficult category. Given that we do not utilize the data augmentation technique mentioned in [38], the AP for the 'Car' category is much higher than that for the 'Pedestrian' category, reflecting the imbalance inherent in the data. Our second baseline aims to measure the benefit of adding the tracking loss on the overall AP for 3D object detection. Adding this loss based on the track regression features provides a mAP of 66.78% (an increase of 1.7% over the baseline). We believe that the tracking loss improves the mAP since it reaffirms the important objects in the training data and acts as a regularizer pushing the features of the same object closer together.
Next, we evaluate the complete proposed architecture combining the tracking loss as well as the use of the regressed track predictions to link tracklets into long term tracks (3D-FCT). This leads to significant increase in performance with a mAP of 68.78% for the medium difficulty objects, an increase of 3.7% from the baseline. We see especially large improvements for the pedestrian and cyclist categories (+6.05% and +5.03% respectively). The proposed 3D-FCT architecture achieves this improvement by detecting objects that could have potentially been missed by the baseline due to occlusion, irregular pose or the fact that objects farther away from the sensor have less descriptive points. This is also why we see larger performance improvements for cyclists and pedestrians, which are smaller than cars, described by fewer points, and have higher variability in poses.
We also report the performance of other single cloud detectors evaluated on the KITTI tracking dataset. The Point-Pillars [19] model is able to achieve only 43.4% mAP for the medium difficulty category. We observe that PointPillars is not very robust to class imbalance in the dataset and achieves only 23.12% AP for the pedestrian class. SEC-OND [38] performs better than both PointPillars [19] and PointRCNN [30], achieving 61.69% mAP. The proposed model is able to outperform both the PV-RCNN baseline as well as other single cloud detectors on the KITTI tracking evaluation set.
In Table 2, we perform an ablation study to identify the effect of each component of the proposed architecture. The table shows the average precision for each class for the moderate difficulty objects from the validation KITTI tracking set. Note that if linking tracklets into long term tracks is done without track regression (based on IoU (B t , B t+τ ) rather than IoU (T t,t+τ , B t+τ )), a sharp drop in performance for the car category is observed. This drop in performance is largely due to the increase in false positives that are predicted by the neural network. Objects can move by significant proportions of their length in the course of a single time step. Hence, it is imperative to combine the track regression along with the tracklet linking to achieve best results.

Discussion
Our proposed 3D-FCT architecture aims to utilize temporal information to perform simultaneous 3D object detection and tracking. We leverage the correlation of keypoints in the feature space to predict the tracking regression of objects from time t to time t + τ . These predicted track regression values allow the prediction of long term tracks by linking inter-cloud tracklets across time. Experiments on the KITTI tracking dataset demonstrate that our proposed method is able to improve the mAP by 5.57% (averaged across the difficulty categories). In the future, we would also like to extend the architecture to produce 3D object segmentation maps, as the keypoint correlation information can be used directly for that purpose. Moreover, we would like to study the effect of computing the correlation between keypoints within a certain distance from each other, as op-posed to calculating them for all possible pairs.
Memory Efficiency: Although the 3D-FCT architecture in Fig. 2 depicts two point clouds as an input to the network, both halves of the siamese network are independent of each other. Therefore, a more efficient implementation would only accept point cloud P t+τ as an input, and utilize the keypoint features f t saved from the previous iteration to predict the track regressions. Such an implementation would be more memory efficient that other approaches that concatenate point clouds to process them together [19,22]. We also note that since the correlation is performed on extracted keypoints only, the correlation workload is lightweight in comparison to performing the same over all possible points.
Online capabilities: Online application is only limited by the linking on object tracklets across time. The formulation defined in Sec 3.5 combines tracklets based on both past and future point clouds. To allow for online track formation, this can be changed to consider only causal effects at time t 0 ∈ (t − ω, t) where ω is the effective window of time over which objects are tracked.

Conclusion
We have presented a novel 3D-FCT architecture to perform simultaneous 3D object detection and tracking on Li-DAR points clouds. Our proposed method allows for endto-end training in a memory efficient manner. Our approach has been shown to provide improvements in average precision on the KITTI tracking dataset over other baseline approaches. Jointly performing object detection and tracking has been shown to be effective in 2D in research, and we demonstrate that this approach is useful in 3D domain as well. We hope that this work can encourage other research in the same area.