Best approach for detecting human in a picture
I had a similar problem with skin disease classification. You can see the question and its answers too here.  Gathering a dataset of human pictures could be easy but that of non-human could be nearly impossible ( non-human objects are a huge set of objects )

Solution:

We can use a Siamese Convolutional Neural Network. I have written a blog on it. See here. They perform one-shot learning and are best when we have smaller datasets.


  A standard CNN tries to classify whether the pictures belongs to any one of the classes -> (HUMAN, NON_HUMAN ). The Siamese CNN outputs a similarity score rather than class probabilities. A standard CNN learns to classify and on the other hand, a Siamese CNN learns to differentiate images.


How does it work? ( In the context of your task )

Suppose I have an input image $x$. This is our input for the Siamese CNN. I have two more images, say $f$ and $g$. Image $f$ belongs to class 1 ( HUMAN ) whereas $g$ belongs to CLASS 2 ( NON-HUMAN ). The Siamese CNN takes in 2 images as input and outputs how similar they are.

$ Siamese( x , f ) = 0.678$

$ Siamese( x , g ) = 0.987$

$Clearly, \space Siamese( x , f ) &lt; Siamese( x , g )$

Therefore, the image belongs to CLASS 2. You can find its other advantages on the blog. Hope this helps.