<p>First of all we should understand what is the purpose of <code>roi pooling</code> : <strong>to have fixed size feature representation from proposal regions on the feature maps</strong>. Because the proposed regions could come as in various sizes, if we directly use the features from the regions, they are in different shapes and therefore cannot be fed to fully-connected layers for prediction. (As we already knew fully-connected layers require fixed shape inputs). For further reading, <a href="https://stackoverflow.com/questions/43430056/what-is-the-purpose-of-the-roi-layer-in-a-fast-r-cnn">here</a> is a nice answer.</p>

<p>So we understood that <code>roi</code> pooling essentially requires two inputs, <strong>proposed regions</strong> and <strong>feature maps</strong>. As is clearly described in the following <a href="https://arxiv.org/abs/1506.01497" rel="noreferrer">figure</a> <a href="https://i.stack.imgur.com/S71NG.png" rel="noreferrer"><img src="https://i.stack.imgur.com/S71NG.png" alt="figure"></a>.</p>

<p>So why don't <strong>YOLO</strong> and <strong>SSD</strong> use <code>roi pooling</code>? Simply because they don't use <strong>region proposals</strong>! They are  designed inherently different from models like <strong>R-CNN, Fast R-CNN, Faster R-CNN</strong>, in fact <strong>YOLO</strong> and <strong>SSD</strong> are categoried as <code>one-stage</code> detectors while r-cnn series (<strong>R-CNN, Fast R-CNN, Faster R-CNN</strong>) are called <code>two-stage</code> detectors simply because they propose regions first and then perform classification and regression.</p>

<p>For <code>one-stage</code> detecors, <strong>they perform predictions (classification and regression )directly from feature maps</strong>. Their method is to divide images in grids and each grid will predict a fixed amount of bounding boxes with confidence scores and class scores. The original <strong>YOLO</strong> used a single scale feature map while <strong>SSD</strong> used multi-scale feature maps, as clearly shown in the following <a href="https://arxiv.org/abs/1512.02325" rel="noreferrer">fig</a> <a href="https://i.stack.imgur.com/xA4qz.png" rel="noreferrer"><img src="https://i.stack.imgur.com/xA4qz.png" alt="enter image description here"></a></p>

<p>We can see with <strong>YOLO and SSD</strong> , the final output is a fixed shaped tensor. Therefore they behave very similiar to problems like <code>linear regression</code>, hence they are called <code>one-stage</code> detectors. </p>
Why does ssd and yolo has no roi pooling layer?
<p>We know that the object detection framework like <code>faster-rcnn</code> and <code>mask-rcnn</code> has an <code>roi pooling layer</code> or <code>roi align layer</code>. But why ssd and yolo framework has no such layers? </p>