user:deniz001
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
user:deniz001 [2021/02/18 19:15] – [0. Introduction] deniz001 | user:deniz001 [2021/02/18 21:00] – [4. Object Tracking] deniz001 | ||
---|---|---|---|
Line 35: | Line 35: | ||
The idea is very simple, we first " | The idea is very simple, we first " | ||
- | //**All the source code and usage demo can be found here:**// https:// | + | //**All the source code for this project |
==== 1. Data Collection ==== | ==== 1. Data Collection ==== | ||
- | Data is very important if we use the second option that we train a neural network. There are a lot of resources to load datasets but I could not find an efficient one for drone images therefore I have written a python script that downloads a good number of user specified object images from google to create my own datasets. The script can be found in the project. | + | Data is very important if we use the second option that we train a neural network. There are a lot of resources to load datasets but I could not find an efficient one for drone images therefore I have written a python script that downloads a good number of user specified object images from google to create my own datasets. |
==== 2. Image Augmentation ==== | ==== 2. Image Augmentation ==== | ||
- | Data augmentation aims to increase the accuracy of the training by creating different versions of the images | + | Data augmentation aims to increase the accuracy of the training by creating different versions of the each original image that we gathered using the python script to collect our data. This way we can use the original images in the validation step and use the augmented images in the training step. |
==== 3. Object Detection ==== | ==== 3. Object Detection ==== | ||
In object detection we aim to find an instance of an object of a certain class in an image or a frame of a video stream and output the bounding box coordinates of that instance. In our case, one of our drone from our laboratory is an instance of the drone object. | In object detection we aim to find an instance of an object of a certain class in an image or a frame of a video stream and output the bounding box coordinates of that instance. In our case, one of our drone from our laboratory is an instance of the drone object. | ||
- | Object detection can be achieved using machine learning and deep learning based algorithms. In machine learning approaches we need to feature engineer in order to define features. While in deep learning, we do not need to manually define the features but rather the CNN(Convolutional Neural Network) finds its way to define the features. | + | Object detection can be achieved using machine learning and deep learning based algorithms. In machine learning approaches we need to feature engineer in order to define features. While in deep learning, we do not need to manually define the features but rather the CNN(Convolutional Neural Network) finds its way to define the features. In conclusion, the deep learning approaches do not require feature engineering and give better results, therefore I decided to use deep learning in the object detection step. |
Example of Machine Learning approaches: | Example of Machine Learning approaches: | ||
Line 77: | Line 77: | ||
== Why not using tracking by detecting in each frame? == | == Why not using tracking by detecting in each frame? == | ||
- | * There can be multiple objects entering and exiting the scene of the camera over time in frames, in that case there is no possibility to match or connect the objects in the current frame with the previous frames that the camera was recording in the past. | + | * There can be multiple objects entering and exiting the view of the camera over time in frames, in that case there is no possibility to match or connect the objects in the current frame with the previous frames that the camera was recording in the past. |
- | * The object may suddenly go out of the camera' | + | * The object may suddenly go out of the camera' |
* There can be blur or noise in the frames due to the motion of the object or camera, that is why the object may look very different so the detection would fail again. | * There can be blur or noise in the frames due to the motion of the object or camera, that is why the object may look very different so the detection would fail again. | ||
- | * The object may have a very viewpoint | + | * The object may have a various viewpoints |
+ | * The object may go far away from the camera | ||
* Low resolution, the number of pixels | * Low resolution, the number of pixels | ||
- | * Tracking algorithms are faster than object detection | + | * Tracking algorithms are faster than object detection |
+ | * There can be obstacles where the object ,that the system suppose to track, may hide behind another object. | ||
==== 4. Object Tracking ==== | ==== 4. Object Tracking ==== | ||
- | By object tracking we can uniquely identify an object instance, | + | By using an object tracking |
+ | Tracking process goes by first initially defining a bounding box of the target object. | ||
- | The goal of an object | + | A good tracker must model the motion, and appearance |
- | Tracking process goes by first initially defining a bounding box of the target object. | + | == Motion modelling == |
- | == Motion modelling == | + | Any object |
- | Objects | + | |
- | patterns which can be modeled. | + | Therefore, a successful object tracker must understand and model a movement |
- | movement | + | |
- | An object tracker tries to understand and model the motion of an object mostly in the pixel level, that is called the motion model. it can estimate the location | + | |
== Appearance Modelling == | == Appearance Modelling == | ||
- | A good tracker must understand the appearance of the object that the tracker tracks, they must learn to differentiate the object from the background which is in the image. | + | An instance of an object has also an appearance characteristics. |
+ | A good tracker must understand the appearance of the object that the tracker tracks | ||
- | == Motion Detection == | + | To sum up, if the tracker has efficient models about the object' |
- | A good tracker must learn to estimate the motion | + | == Type of object |
- | == Object Localization == | + | **Offline learning trackers** are used when we have a recorded media, |
- | Focus the attention on the region of interest | + | |
- | A good tracker uses the motion estimation and figures out the possible region where the target may be locating in the current frame and scan this area using the model that the tracker created about the object' | + | |
- | Offline | + | **Online learning |
- | Online learning trackers | + | A decision has to be made: |
+ | - Use an online tracker that could train itself. | ||
+ | - Use an offline tracker that has been already trained. | ||
+ | - Train an offline tracker | ||
+ | - Train an offline tracker to identify drones | ||
- | Offline | + | Offline trackers do not need to learn anything during the tracking process, that sounds faster but training is not an easy task because we can never train a CNN for every possibility. However, online learning trackers may just learn about the object that we are interested in at that moment, for example the object |
+ | |||
+ | Most of the traditional trackers that are available in OpenCV are not based on deep learning CNNs and my favorite algorithm is KCF. | ||
- | Most of the traditional trackers that are available in OpenCV are not based on Deep Learning. (KCF is the best one) | ||
- | |||
CNN(Convolutional Neural Network) based offline trackers: GOTURN | CNN(Convolutional Neural Network) based offline trackers: GOTURN | ||
CNN(Convolutional Neural Network) based online trackers: MDNet(Multi domain network) best DL based | CNN(Convolutional Neural Network) based online trackers: MDNet(Multi domain network) best DL based | ||
- | Tracking algorithms available: | + | Tracking algorithms available |
- | * __**Boosting Tracker: | + | * __**Boosting Tracker: |
* __**MIL Tracker: | * __**MIL Tracker: | ||
* __**KCF Tracker: | * __**KCF Tracker: | ||
- | * __**KCF Tracker: | + | * __**MEDIANFLOW |
- | * __**KCF Tracker: | + | * __**GOTURN |
- | * __**KCF Tracker: | + | * __**MOSSE Tracker: |
- | * __**KCF Tracker: | + | * __**CSRT Tracker: |
- | * __**KCF Tracker: | + | * __**MDNet Tracker: |
+ | * __**ROLO | ||
==== 5. PID Controller ==== | ==== 5. PID Controller ==== |
user/deniz001.txt · Last modified: 2021/08/24 17:35 by 127.0.0.1