# Part-Based Obstacle Detection Using a Multiple Output Neural Network
## 2 Related Work
### Object Detection  
In the context of autonomous vehicles and driving, detecting objects can be performed with images acquired using a single camera [16] or a stereo-vision setup [17]. The detection task can also be achieved by using multiple input sources and sensorial data, such as lidar [10; 18] or radar [19]. An overview of the multiple sensors used in autonomous vehicles is presented in [20]. The accuracy and robustness of a self-driving vehicle can be increased by using multiple sensors and fusing the data, but the main drawback is that these sensors require specific calibration and synchronization. The calibration and fusion of data add complexity to such a system, as well as additional costs. One of the most convenient and affordable sources of information is the single camera, which is able to produce grayscale or color image streams. Single-camera systems are easy to set up and calibrate, and the lack of 3D information can be compensated for by increasingly complex and accurate algorithms. Traditional object detectors have used image-processing-based algorithms, such as Viola-Jones [21] or a histogram of oriented gradients [22], whereas the modern object detection approaches are based on artificial learning, more specifically, convolutional neural networks. Some approaches fuse traditional and deep-learning methods for object detection [23]. Detecting objects is an extension of object classification, with the main aim of estimating the localization of all instances of certain objects from an input image. Recent detection methods that are based on artificial neural networks feature two main modules: a pre-trained backbone network and a head that outputs the object's class, along with its bounding box coordinates. The backbone networks are used to extract the relevant features from the input images. Detection neural networks are trained using large amounts of labeled data; the detection process is implemented either in a single-stage (one-stage) or a two-stage approach. Single-stage, also called one-stage, detectors localize objects and classify them in a single shot, by performing a regression of the bounding boxes, using predefined boxes and keypoints with multiple aspect ratios and scales. Yolo [5], with its variations and improvements, and Single-Shot Detector (SSD) [6] are examples of one-stage detectors using CNNs. The authors of Yolo treated the detection problem as a regression problem, meaning that the CNN predicts the image pixels as the object, along with its bounding box coordinates and its class. Drawbacks regarding the localization of small objects from the original paper were fixed in the newer versions of Yolo [24], as well as by using different backbone networks, such as DarkNet [25]. Single-Shot Multibox Detector (SSD) used VGG-Net [26] as the backbone initially and matched the accuracy of some two-stage detectors. Limitations regarding small objects were fixed using ResNet [1] as the backbone. One-stage detectors usually achieve a very high frame rate, performing the detection in real time. Two-stage detectors feature a separate module for region proposals, meaning that they are more complex in design and require more time for predictions. In the first step, the two-stage detectors generate regions of interest from the input image and use them in the second step to regress the results to object classes and bounding boxes. Usually, they offer better accuracy but lack real-time performance. R-CNN [27], and its further improvements (Faster R-CNN [28]), represent two-stage detectors that use CNNs to classify and locate objects within images. The input image is fed into a region proposal module that outputs object predictions (candidates), which are then used in a second CNN module that extracts the object class and bounding box. These networks are usually more complex than one-stage detectors and need greater computational time for predictions.