Hot answers tagged

5

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

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

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

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

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 ...


2

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

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 ...


2

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 ...


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

(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 ...


2

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. ...


2

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.


1

I seem to have figured it out now. When using darknet.detect_image, it calls predict_image which in turn is network_predict_image. The latter resizes the image if it is not already the same size as the network's input layer. If you instead call darknet detector test from the command line, as I have seen examples do as mentioned in my original question, the &...


1

It is best practice to resize the input data to the size a pretrained model expects. A pretrained model has feature detectors for relative differences. Resizing should be done early in the process so subsequent steps use consistent data. Sometimes resizing is a non-linear process that can use interpolation.


1

Confidence score Some resources like Andrew Ngs deep.ai here set the confidence of the corresponding label vector bounding box confidence to "1" if there is an object present at that grid cell. This is because prof. Ng is refering to true probability of an object being in a specific cell ($P(\text{object})$ value), and not the confidence score ($...


1

The general consensus in machine learning problems is that it becomes tougher to get higher accuracy results when there is more data with more class splits. The simplest of examples would be cifar 10 and cifar 100. While they are practically the same models tend to vary very differently with respect to the efficiency. The moment more classes are added, there ...


1

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.


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

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

Usually, when we use a CNN, we apply padding with convolution, that way, activation maps have the same size as the inputs. Look at this video to understand how padding works : Andrew Ng course on Coursera about padding (you need an account to watch the full video ) In Keras, Conv2D layer have an argument called 'padding', here is a link to the ...


1

The answer to such a question is opinion based and the question itself is very broad. I have used an HP Envy in the past, with a 4GB Nvidia 950M GPU, which worked well with Linux installed. In general: The higher the compute capability of the GPU the better (look here at the list for Nvidia GPUs under GeForce products for notebooks). Another option worth ...


1

As far as I can tell, there is no specific rule. It will depend in part on how crowded your scene will become with items that you want to detect and locate separately. Creating a high granularity grid increases computational cost for training, and there is no reason to do so if it would only cover additional cases that are much rarer than the detection ...


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