Hot answers tagged

6

A very clear and in-depth explanation is provided by the slow R-CNN paper by Author(Girshick et. al) on page 12: C. Bounding-box regression and I simply paste here for quick reading: Moreover, the author took inspiration from an earlier paper and talked about the difference in the two techniques is below: After which in Fast-RCNN paper which you ...


4

The paper cited does not mention linear regression at all. What it does is using a neural network to predict continuous variables, and refers to that as regression. The regression that is defined (which is not linear at all), is just a CNN with convolutional layers, and fully connected layers, but in the last fully connected layer, it does not apply sigmoid ...


4

(Suggestions and edits will be appreciated) let us discuss advantages of training a deep learning model from scratch: Building and training NN from scratch is of a great use in the research field. You will know your model to the most basics and can modify it in case needed as per the requirements. It will be more efficient in terms of size and training ...


3

(0, 0) is top left. Here an a helpful blog that goes through all the features in the output vector. This is common in image processing. There are a few reasons that this is the convention in computer vision. Check here for a list, the accepted answer states: This is caused in the history. Early computers had Cathode Ray Tubes (CRTs) which "draw" the ...


3

There are many subtle differences between yolov4 and v5 other than speed like YOLOv4 exceeds YOLOv5's performance on the COCO benchmark.this link will help you explain. YOLOv4 VS YOLOv5. I dont know much about EfficientDet. Here's YOLOv3 Versus EfficientDet for State-of-the-Art Object Detection . It explains quite nicely difference between the two.


3

The advantages of training a deep learning model from scratch and of transfer learning are subjective. It depends a lot on the problem you are trying to solve, the time constraints, the availability of data and the computational resources you have. Let's consider a scenario, you want to train a deep learning model for a task like sentiment classification ...


3

There is no common practice in labeling the bounding boxes. It is always problem dependent. For example, if you want to count the chickens then you should also label the whole chicken as one instance of a chicken. If you simply what to detect if there is a chicken in the picture you should label the unoccluded part. You have to think about your problem. ...


3

For each bounding box you need p_c: any object / no object (background) b_x, b_y, b_w, b_h: x, y, width and height of the bounding box c_i: object i / no object i For e.g. 2 bounding boxes and 3 classes (e.g. car, person, traffic light) your input vector would look as follows (the superscript in brackets denote the index of the bounding boxes) \begin{...


3

1) The goal of using Average pooling layer (at least here), is to have a vector after it. That way you have a fully connected layer vector. In Yolo, the layer previous the fully connected one seems to be 7x7x1024. The next layer, the fully connected one, is 4096 (or 1x1x4096). That means you need an average pooling layer with a kernel of 7x7, and 4096 ...


3

https://pjreddie.com/darknet/ is their website... I cite : "Darknet: Open Source Neural Networks in C Darknet is an open source neural network framework written in C and CUDA. It is fast, easy to install, and supports CPU and GPU computation." As to why they used that, well it's open source and in C, which are good points and seems to be performant (see ...


3

Each grid predictor in YOLO should only have a high score that an object is within it, if it detects the centre of the bounding rectangle is inside itself. So a grid point that contains only the wing mirror of a car should decide it has a low probability of containing the centre of the car. The predicted bounding rectangles are not constrained in the same ...


3

Not sure that still matters for your project but it is important: the Dense layer does not flatten the entry first! It takes the last dimension of the entry tensor and connects it to the neurons of your dense layer. To be sure there is a simple thing to do: count the number of parameters of your layer. In your case, it is: 4096 (number of neurons in dense) ...


2

It doesn't matter, with or without flattening, a Dense layer takes the whole previous layer as input. The spatial structure information is not used anymore. Some Neural Network implementations might not be able to map a spatial structure directly into a dense layer, which is why you would need the Flatten in between. Mathematically it is exactly the same in ...


2

The size of your validation matters only for the precision of your validation score. Every sample in your validation has some score for validation. The main goal is to be able to say how well your model generalized to unseen samples. Because the total score over the validation set is usually the mean over all the samples, the variance goes down if you have ...


2

You can use the Flatten and Reshape layers to go to Dense and back to HWC format. The last layers in keras would look like this: 7_7_1024_1 = ... # The first (7,7,1024) x = keras.layers.Conv2D(1024, 3, padding='same')(7_7_1024_1) x = keras.layers.Flatten()(x) x = keras.layers.Dense(4096)(x) x = keras.layers.Dense(7 * 7 * 30)(x) x = keras.layers.Reshape((7, ...


2

Darknet is mainly for Object Detection, and have different architecture, features than other deep learning frameworks. It is faster than many other NN architectures and approaches like FasterRCNN etc. You have to be in C if you need speed, and most of the deep nn frameworks are written in c. I would say Tensorflow has a broader scope, but Darknet ...


2

There is only 1 restriction, your truth bboxes with the same class_id shouldn't be overlapped more than IoU > 45%, because Yolo uses nms_threshold = 0.45. In general, you should mark your objects in such a way as you want to detect these objects.


2

As the blog mentioned, each cell predicts three things - bbox coords (tx,ty,tw,th) objectness score (po) class scores (p0 - pc) and again each cell predicts three boxes. Hence you get that big red tensor as model output. So yes, other cells can detect "dog" and more precisely, each cell can detect any class. what do you think the first cell (0,0)...


2

As rightly said by @Nikos M., it is based on trial and error. And here are some tips you might find useful - Create a good enough validation set. Use YOLO-tiny versions instead of custom architecture. Use Google Colab how many epochs of training will it need Your data is very large. Training time depends on batch_siz, learning_rate, and other ...


2

The F-measure is the weighted harmonic mean of precision (P) and recall (R) of a classifier, taking α=1 (F1 score). It means that both metrics have the same importance. In your graph, the confidence value that optimizes the precision and recall is 0.503, corresponding to the maximum F1 value (0.90). In most cases, a higher confidence value and F1 score are ...


2

Invariant object recognition(IOR), refers to rapid and accurate recognition of objects in the presence of variations such as size, rotation and position. SIFT and SURF are the most popular among them, but unfortunately both SIFT & SURF are patented. If you are looking for opensource algorithm, I would suggest to go for openCV's Oriented FAST and rotated ...


1

From 98 boxes to 3 boxes, it involve many other things as well. x*y*2 = 98, where 2 are the anchor boxes i.e. each grid will predict two bounding box. Non Max Suppression: As correctly said by you, discard those boxes which have lesser probability. You can set some threshold value. IOU (Intersection over Union): Step used to identify and discard ...


1

It seems after referring many documents, I found the answer of my question. First, likely to correct my understanding. I thought for labeling, bounding box size (width, height) will always be with in the range of particular grid dimension i.e. between 0 and 1. It's not correct and this is the only source of confusion atleast for me. I believe that ...


1

This deep learning framework is written itself in C but once you train the network you do not need Darknet itself for the inference. OpenCV has built in support for Darknet formats so both model and trained weights are directly usable anywhere where OpenCV is in use, also from Python (see here). The positive side of this network, there is somewhat normal ...


1

I know what is cython and make (but I never use YOLO!) Cython is a C-extension for python. It allows you to write code C/C++ in a python script. (use for very fast program execution) Make is command which executes your makefile. You can consider makefile is a build script to create/tune the necessary things like environment/folders/.. etc.


1

I guess the other answer is sufficient for the question. I just want to add this point that the algorithm uses different anchor boxed due to this fact that the centre of distinct objects may reside on the same pixel, though the real algorithm uses more than two anchor boxes. For instance, you can clearly see the image that he has used in his slide. The ...


1

1) Exactly. You have two anchor boxes in Andrew's current example, so the algorithm is going to output two predicted bounding boxes for each grid cell. 2) Your statement below is not true: "Because we know that each object can belong to one grid only based on the midpoint" I don't remember that being said on the course. The center of the object belongs ...


1

Darknet has a yolo implementation using Open Images check this page (scroll down up to the end, just before the citation) You can simply use wget https://pjreddie.com/media/files/yolov3-openimages.weights


1

It depends specially on data size and model capacity. Therefore, we cannot give a definite "yes" or "no" prior to any experiment. However, we can enumerate possible cases, causes, and ways to improve, regardless of any specific model or dataset. If the number of data points per category is insufficient, which is frequently the case in reality, a single ...


1

You will have to look into the sources. From below, if pad != 0 then padding = size/2 = 7/2 = 3. If pad = 0, then whatever padding was passed through cfg/yolov1.cfg. Phew! Breakpoint 1, parse_convolutional (options=0x5555557f18c0, params=...) at ./src/parser.c:180 180 { (gdb) n 181 int n = option_find_int(options, "filters",1); (gdb) n 182 int size =...


Only top voted, non community-wiki answers of a minimum length are eligible