Answers.Body: <p><strong>TL;DR</strong></p>
  
  <p>This is possible. You need a correctly labeled dataset. Your dataset has two labels: </p>
  
  <p><span class="math-container">$y\in \{\text{background},\text{object in frame}\}$</span> or simply <span class="math-container">$y\in \{0,1\}$</span></p>
  
  <p>This labelling avoids needing to know <em>what</em> object is in frame only that <em>there is</em> an object in frame.</p>
  
  <p><strong>Examples With Similar Objectives</strong></p>
  
  <p>Here as a paper (<a href="https://arxiv.org/pdf/1703.05830.pdf" rel="nofollow noreferrer">link</a>) that was seeking to classify animals in a frame. The first part of their pipeline needed to know whether there was an animal in frame or not. Excerpt:</p>
  
  <blockquote>
    <p><strong>Task I: Detecting Images That Contain Animals.</strong> For this task, our models take an image as input and output two probabilities describing whether the image has an animal or not (i.e. binary classification)</p>
  </blockquote>
  
  <p>Here is another paper (<a href="http://%20Wildlifedetection,%20which%20is%20actually%20a%20binary%20classi%EF%AC%81er%20capable%20of%20clas-sifying%20input%20images%20into%20two%20classes:%20%E2%80%9Canimal%E2%80%9D%20or%20%E2%80%9Cno%20animal%E2%80%9Dbased%20on%20the%20prediction%20of%20animal%20presence%20in%20images;" rel="nofollow noreferrer">link</a>) regarding detecting animals in images. Excerpt:</p>
  
  <blockquote>
    <p><em>Wildlife detection</em>, which is actually a binary classiﬁer capable of clasifying input images into two classes: “animal” or “no animal”</p>
  </blockquote>
  
  <p>The methods used in these papers could be adapted to fit the conveyor belt use case.</p>
  
  <p>Here is a system (<a href="http://www.ee.nchu.edu.tw/Pic/Writings/3258_06419121.pdf" rel="nofollow noreferrer">link</a>) that detects moving objects using background extraction. The method they use to check whether or not the image is a background image or not could be adapted to your use case. </p>
  
  <p><strong>Ideas for Implementation</strong></p>
  
  <p>In the conveyor belt use case, a very simple model might work. Thus, it is recommended that you try a simple model first. For example, you could flatten your inputs to a vector and feed these into a shallow feed forward network. A simple logistic regression classifier might even work on flattened inputs for this use case.</p>
  
  <p>If your desired performance is not reached with a simple model you can analyze their performance using methods like <a href="https://www.ritchieng.com/machinelearning-learning-curve/" rel="nofollow noreferrer">learning curves</a> to decide how to proceed.</p>
  
  <p><strong>If you find that your model has high bias:</strong></p>
  
  <p>You can either use a larger/deeper model like a custom tuned <a href="https://en.wikipedia.org/wiki/Convolutional_neural_network" rel="nofollow noreferrer">CNN</a> or you can use a pre-trained network like <a href="https://neurohive.io/en/popular-networks/vgg16/" rel="nofollow noreferrer">VGG16</a> and  use <a href="https://towardsdatascience.com/a-comprehensive-hands-on-guide-to-transfer-learning-with-real-world-applications-in-deep-learning-212bf3b2f27a" rel="nofollow noreferrer">transfer learning</a> to achieve your goal.</p>
  
  <p>Here is a post that describes using a CNN to classify cats vs dogs (<a href="https://machinelearningmastery.com/how-to-develop-a-convolutional-neural-network-to-classify-photos-of-dogs-and-cats/" rel="nofollow noreferrer">link</a>). Simply replace the cat/dog dataset with your object/no-object dataset. The post even describes using transfer learning with VGG16.</p>
  
  <p><strong>If you find that your model has high variance</strong></p>
  
  <p>More data can help. Furthermore, in the conveyor belt example, hand labeling data would be easy and quick. Thus, it would not take very much time to get many more examples.</p>
  
  <p>I hope this helps.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2019-09-07T03:51:21.387Z
Answers.LastActivityDate: 2019-09-07T17:44:50.813Z
Answers.LastEditDate: 2019-09-07T17:44:50.813Z
Answers.UserDisplayName: respectful
Body: <p>Is there any computer vision technology that can detect any type of object? For example, there is a camera fixed, looking in one direction always looking at a similar background. If there is an object, no matter what the object is (person, bag, car, bike, cup, cat) the CV algorithm would notice if there is an object in the frame. <strong>It wouldn't know what type of object it is, just that there is an object in the frame.</strong> </p>
  
  <p>Something similar to motion detector but that would work on a flat conveyor belt. Even though the conveyor belt moves will look similar between frames. Would something like this be possible? Possibly something to do with extracting differences from the background, with the goal being to not have to train the network with data for every possible object that may pass by the camera.</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2019-09-06T20:38:00.737Z
Comments.Text: If you mean "Is there a CV technology that just labels a whole image e.g. 'contains a cat' or 'contains a dog'" then the simple anser is yes. CV researchers use the term *classification* for labelling the image as a whole, and *detection* for locating a class of object within an image. In general *detection* is harder and more general problem to solve than *classification*. Maybe search "image classification" and if that is not what you are looking for, please explain the difference - use [edit] to explain in more detail.
Comments.UserDisplayName: Neil Slater
Tags: <algorithm><computer-vision><object-recognition>
Title: Is there any computer vision technology that can detect any type of object?
UserDisplayName: Paradom
ThreadText: # Is there any computer vision technology that can detect any type of object?
  
  (Asked by: username_0 on 2019-09-06)
  
  Is there any computer vision technology that can detect any type of object? For example, there is a camera fixed, looking in one direction always looking at a similar background. If there is an object, no matter what the object is (person, bag, car, bike, cup, cat) the CV algorithm would notice if there is an object in the frame. **It wouldn't know what type of object it is, just that there is an object in the frame.**
  
  Something similar to motion detector but that would work on a flat conveyor belt. Even though the conveyor belt moves will look similar between frames. Would something like this be possible? Possibly something to do with extracting differences from the background, with the goal being to not have to train the network with data for every possible object that may pass by the camera.
  
  **Tags:** algorithm, computer-vision, object-recognition
  
  > **Comments:**
  > **username_1**: If you mean "Is there a CV technology that just labels a whole image e.g. 'contains a cat' or 'contains a dog'" then the simple anser is yes. CV researchers use the term *classification* for labelling the image as a whole, and *detection* for locating a class of object within an image. In general *detection* is harder and more general problem to solve than *classification*. Maybe search "image classification" and if that is not what you are looking for, please explain the difference - use [edit] to explain in more detail.  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_2 on 2019-09-07. Score: 3 | Accepted answer
  
  **TL;DR**
  
  This is possible. You need a correctly labeled dataset. Your dataset has two labels:
  
  $y\in \{\text{background},\text{object in frame}\}$ or simply $y\in \{0,1\}$
  
  This labelling avoids needing to know *what* object is in frame only that *there is* an object in frame.
  
  **Examples With Similar Objectives**
  
  Here as a paper ([link](https://arxiv.org/pdf/1703.05830.pdf)) that was seeking to classify animals in a frame. The first part of their pipeline needed to know whether there was an animal in frame or not. Excerpt:
  
  > **Task I: Detecting Images That Contain Animals.** For this task, our models take an image as input and output two probabilities describing whether the image has an animal or not (i.e. binary classification)
  
  Here is another paper ([link](http://%20Wildlifedetection,%20which%20is%20actually%20a%20binary%20classi%EF%AC%81er%20capable%20of%20clas-sifying%20input%20images%20into%20two%20classes:%20%E2%80%9Canimal%E2%80%9D%20or%20%E2%80%9Cno%20animal%E2%80%9Dbased%20on%20the%20prediction%20of%20animal%20presence%20in%20images;)) regarding detecting animals in images. Excerpt:
  
  > *Wildlife detection*, which is actually a binary classiﬁer capable of clasifying input images into two classes: “animal” or “no animal”
  
  The methods used in these papers could be adapted to fit the conveyor belt use case.
  
  Here is a system ([link](http://www.ee.nchu.edu.tw/Pic/Writings/3258_06419121.pdf)) that detects moving objects using background extraction. The method they use to check whether or not the image is a background image or not could be adapted to your use case.
  
  **Ideas for Implementation**
  
  In the conveyor belt use case, a very simple model might work. Thus, it is recommended that you try a simple model first. For example, you could flatten your inputs to a vector and feed these into a shallow feed forward network. A simple logistic regression classifier might even work on flattened inputs for this use case.
  
  If your desired performance is not reached with a simple model you can analyze their performance using methods like [learning curves](https://www.ritchieng.com/machinelearning-learning-curve/) to decide how to proceed.
  
  **If you find that your model has high bias:**
  
  You can either use a larger/deeper model like a custom tuned [CNN](https://en.wikipedia.org/wiki/Convolutional_neural_network) or you can use a pre-trained network like [VGG16](https://neurohive.io/en/popular-networks/vgg16/) and use [transfer learning](https://towardsdatascience.com/a-comprehensive-hands-on-guide-to-transfer-learning-with-real-world-applications-in-deep-learning-212bf3b2f27a) to achieve your goal.
  
  Here is a post that describes using a CNN to classify cats vs dogs ([link](https://machinelearningmastery.com/how-to-develop-a-convolutional-neural-network-to-classify-photos-of-dogs-and-cats/)). Simply replace the cat/dog dataset with your object/no-object dataset. The post even describes using transfer learning with VGG16.
  
  **If you find that your model has high variance**
  
  More data can help. Furthermore, in the conveyor belt example, hand labeling data would be easy and quick. Thus, it would not take very much time to get many more examples.
  
  I hope this helps.
  
  
  ---
  
  