<blockquote>
  <p>Is deep learning the only way to detect humans in a picture?</p>
</blockquote>

<p><strong>No.</strong> Is it the best way we know? Depends on your conditions.</p>

<p>The simplest way of detection is to generate lots of random bounding boxes and then solving the classification problem of the crop. Here is some pythonic pseudo-code:</p>

<pre><code>def detect_people(image):
    """
    Find all people in image.

    Parameters
    ----------
    image : image object

    Returns
    -------
    people : list of axis-aligned bounding boxes (aabb)
        Each bounding box contains a person
    """
    people = []
    for aabb in generate_random_aabb(image):
        crop = crop_image(image, aabb)
        if is_person(crop):
            people.append(crop)
    return people
</code></pre>

<p>In this case <code>is_person</code> can be any classifier, e.g. boosted decision stumps as used in the <a href="https://en.wikipedia.org/wiki/Viola%E2%80%93Jones_object_detection_framework" rel="nofollow noreferrer">Viola–Jones object detection framework</a>. Speaking of which: That would likely be the way to go without DL, but is much more complicated to explain.</p>

<h2>Object Detection vs Segmentation</h2>

<p>Your question mixes both. Object detection gives you bounding boxes (coarse) for instances. Semantic segmentation labels all pixels by classes, but does not distinguish different instances of the same class (e.g. different people). Instance segmentation is like object detection, but is fine-grained and aims for pixel-exact results.</p>

<p>If you are interested in segemantation, I can recommend my paper: <a href="https://arxiv.org/pdf/1602.06541.pdf" rel="nofollow noreferrer">A Survey of Semantic Segmentation</a></p>
Is deep learning the only way to detect humans in a picture?
<p>I'm looking for a way to detect humans in a picture. For instance, regarding the picture below, I'd like to coarsely determine how many people are in the scene. I must be able to detect both standing and sitting people. I do not mind not detecting people located behind a physical object (such as the glass in the bus picture).</p>

<p><a href="https://i.stack.imgur.com/5m6Ew.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/5m6Ew.jpg" alt="enter image description here"></a></p>

<p>AFAIK, such a problem can rather easily be solved by training deep neural networks. However, my coworkers would like me to also implement a detection technique based on general image processing techniques. I've spent several days looking for techniques designed by researchers but I couldn't find anything else than saliency-based techniques (which may be fine, but I'd like to test several techniques based on old-fashioned image processing).</p>

<p>I'd like to mention that I'm not new to the topic of image segmentation &amp; I used to segment aortas in medical scans. However, this task was easier IMHO since scanners have similar features: in this use-case (human detection in a bus, for instance), the pictures will have very different characteristics (e.g. image contrast can strongly vary, whether it's been taken during the day or at night).</p>

<p><strong>Long story short, I'd like to know if there's some segmentation technique for human detection for which it'd be interesting giving a shot, given the fact that the images features vary a lot?</strong> </p>