3.4.13Convolutional Neural Networks

Object detection (R-CNN, YOLO, SSD)

3,797 words17 min readdifficulty · medium

Overview

Object detection is the task of simultaneously locating (where?) and classifying (what?) multiple objects within an image. Unlike image classification (which only answers "what?") or semantic segmentation (which labels every pixel but doesn't distinguish instances), object detection outputs bounding boxes with class labels for each detected object.

Figure — Object detection (R-CNN, YOLO, SSD)

The fundamental challenge: turning a classification network into a localization + classification system that works for variable numbers of objects.


The Evolution: Three Paradigms

1. R-CNN Family (Region-based Methods)

WHY this architecture?

  • Separates "where to look" (region proposals) from "what is it" (classification)
  • Leverages CNNs' strength at fixed-size image classification
  • Reduces search space from all possible boxes (millions) to promising candidates

HOW it works:

Input ImageSelective Search{R1,R2,,Rn}Warp to fixed sizeCNNSVMClass + Box\text{Input Image} \xrightarrow{\text{Selective Search}} \{R_1, R_2, \ldots, R_n\} \xrightarrow{\text{Warp to fixed size}} \text{CNN} \xrightarrow{\text{SVM}} \text{Class + Box}

Each region RiR_i is:

  1. Warped to a fixed size (227×227 for AlexNet)
  2. Passed through a CNN to extract a feature vector
  3. Classified with an SVM
  4. Refined with a bounding box regressor
G^x=Pwdx(P)+PxG^y=Phdy(P)+PyG^w=Pwexp(dw(P))G^h=Phexp(dh(P))\begin{align} \hat{G}_x &= P_w \cdot d_x(P) + P_x \\ \hat{G}_y &= P_h \cdot d_y(P) + P_y \\ \hat{G}_w &= P_w \cdot \exp(d_w(P)) \\ \hat{G}_h &= P_h \cdot \exp(d_h(P)) \end{align}

WHY these formulas?

  • Translation (dx,dyd_x, d_y): Offset as fraction of box width/height (scale-invariant)
  • Scale (dw,dhd_w, d_h): Exponential ensures positive width/height, makes learning easier (log-space is more linear)

The network learns dx,dy,dw,dhd_x, d_y, d_w, d_h by minimizing:

Lreg=i{x,y,w,h}smoothL1(diti)\mathcal{L}_{\text{reg}} = \sum_{i \in \{x,y,w,h\}} \text{smooth}_{L_1}(d_i - t_i)

where tit_i are the true transformation targets:

tx=GxPxPw,ty=GyPyPh,tw=logGwPw,th=logGhPht_x = \frac{G_x - P_x}{P_w}, \quad t_y = \frac{G_y - P_y}{P_h}, \quad t_w = \log\frac{G_w}{P_w}, \quad t_h = \log\frac{G_h}{P_h}

Fast R-CNN improvement: Instead of running CNN2000 times, extract features once for the whole image, then use RoI (Region of Interest) pooling to extract fixed-size features for each proposal.

ImageCNNFeature MapRoI PoolFixed-size featuresFC layersClass + Box\text{Image} \xrightarrow{\text{CNN}} \text{Feature Map} \xrightarrow{\text{RoI Pool}} \text{Fixed-size features} \xrightarrow{\text{FC layers}} \text{Class + Box}

Faster R-CNN improvement: Replace Selective Search with a learned Region Proposal Network (RPN).

For each anchor:

  • Objectness score: pobj=σ(zobj)p_{\text{obj}} = \sigma(z_{\text{obj}}) (is there an object?)
  • Box refinement: (dx,dy,dw,dh)(d_x, d_y, d_w, d_h) as above

Loss function combines both:

L=1NclsiLcls(pi,pi)+λ1NregipiLreg(di,ti)\mathcal{L} = \frac{1}{N_{\text{cls}}} \sum_i \mathcal{L}_{\text{cls}}(p_i, p_i^*) + \lambda \frac{1}{N_{\text{reg}}} \sum_i p_i^* \mathcal{L}_{\text{reg}}(d_i, t_i)

WHY anchor boxes?

  • Handle multiple scales/aspect ratios without resizing
  • Provide reference coordinates for box regression
  • Typical: 3scales × 3 ratios = 9 anchors per position

After NMS (Non-Maximum Suppression), keep top 300. For each:

  1. Extract 7×7 RoI pooled features
  2. Two fully connected layers
  3. Output: 21 classes (20 objects + background) + 4×21 box offsets

Why this step? The 7×7 pooling standardizes features regardless of proposal size. The 4×21 offsets allow class-specific box refinement (a "car" box might need different adjustments than a "person" box).


2. YOLO (You Only Look Once)

WHY single-stage?

  • Speed: One forward pass instead of thousands
  • Global context: Sees entire image, reducing background false positives
  • Trade-off: Slightly lower accuracy on small objects

HOW YOLO works:

Divide image into S×SS \times S grid (e.g., 7×7). Each grid cell predicts:

  • BB bounding boxes (each with5 values: x,y,w,h,confidencex, y, w, h, \text{confidence})
  • CC class probabilities

Output tensor: S×S×(B5+C)S \times S \times (B \cdot 5 + C)

For YOLO v1: 7×7×(25+20)=7×7×307 \times 7 \times (2 \cdot 5 + 20) = 7 \times 7 \times 30

(x,y,w,h,confidence)(x, y, w, h, \text{confidence})

where:

  • (x,y)(x, y): Box center relative to grid cell (values0–1)
  • (w,h)(w, h): Box size relative to image (values 0–1)
  • confidence=P(object)IoUpredtruth\text{confidence} = P(\text{object}) \cdot \text{IoU}_{\text{pred}}^{\text{truth}}

WHY this confidence formula?

  • If no object: P(object)=0P(\text{object}) = 0, confidence should be 0
  • If object exists: Confidence reflects how well the box fits (IoU)
  • During training, this is supervised. At test time, it's predicted.

Each grid cell also predicts:

P(Ciobject)P(C_i | \text{object})

Final class-specific confidence:

P(Ci)confidence=P(Ciobject)P(object)IoUP(C_i) \cdot \text{confidence} = P(C_i | \text{object}) \cdot P(\text{object}) \cdot \text{IoU} L=λcoordi=0S2j=0B1ijobj[(xix^i)2+(yiy^i)2]+λcoordi=0S2j=0B1ijobj[(wiw^i)2+(hih^i)2]+i=0S2j=0B1ijobj(CiC^i)2+λnobji=0S2j=0B1ijnoobj(CiC^i)2+i=0S21iobjcclasses(pi(c)p^i(c))2\begin{align} \mathcal{L} = &\lambda_{\text{coord}} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{\text{obj}} [(x_i - \hat{x}_i)^2 + (y_i - \hat{y}_i)^2] \\ &+ \lambda_{\text{coord}} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{\text{obj}} [(\sqrt{w_i} - \sqrt{\hat{w}_i})^2 + (\sqrt{h_i} - \sqrt{\hat{h}_i})^2] \\ &+ \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{\text{obj}} (C_i - \hat{C}_i)^2 \\ &+ \lambda_{\text{nobj}} \sum_{i=0}^{S^2} \sum_{j=0}^{B} \mathbb{1}_{ij}^{\text{noobj}} (C_i - \hat{C}_i)^2 \\ &+ \sum_{i=0}^{S^2} \mathbb{1}_{i}^{\text{obj}} \sum_{c \in \text{classes}} (p_i(c) - \hat{p}_i(c))^2 \end{align}

WHY each term?

  1. Localization loss (x, y): MSE on box centers. Only penalize the box "responsible" for the object (1ijobj=1\mathbb{1}_{ij}^{\text{obj}} = 1 if box jj in cell ii has highest IoU).

  2. Size loss (w, h): Use w,h\sqrt{w}, \sqrt{h} because small deviations in large boxes matter less than in small boxes. Square root makes errors more comparable across scales.

  3. Confidence loss (has object): Penalize when exists but confidence is low.

  4. Confidence loss (no object): Weighted lower (λnoobj=0.5\lambda_{\text{noobj}} = 0.5) because most boxes contain no object — prevents overwhelming the gradient.

  5. Classification loss: Standard MSE on class probabilities for cells containing objects.

λcoord=5\lambda_{\text{coord}} = 5 increases importance of localization.

Cell (3, 4) contains a dog's center:

  • Box 1predicts: (0.6,0.4,0.3,0.5,0.85)(0.6, 0.4, 0.3, 0.5, 0.85) (relative to cell and image)
  • Cell predicts: P(dogobject)=0.92P(\text{dog}|\text{object}) = 0.92
  • Final: 0.92×0.85=0.7820.92 \times 0.85 = 0.782 confidence for "dog"

Why this step? Cell (3, 4) is responsible because the object's center is in that cell. The box with highest IoU (box 1) is the one penalized during training. The 0.782 final score combines "is there an object?" with "what is it?".

YOLO v2/v3 improvements:

  • Anchor boxes (like Faster R-CNN): Predict offsets from anchors instead of absolute coordinates
  • Multi-scale predictions: Detect at3 different feature map resolutions (for small, medium, large objects)
  • Better backbone: Darknet-53 (ResNet-like with skip connections)

3. SSD (Single Shot MultiBox Detector)

WHY multi-scale?

  • Early layers (high resolution): Detect small objects
  • Late layers (low resolution): Detect large objects
  • Each layer specializes in a scale range

HOW it works:

Take 6 different feature maps from the CNN at different stages (e.g., 38×38, 19×19, 10×10, 5×5, 3×3, 1×1). For each location in each map, predict:

k default boxes×(c+4)k \text{ default boxes} \times (c + 4)

where cc = number of classes, 4 = box offsets.

Localization:

g^cx=dwlcx+dg^cy=dhlcy+dcyg^w=dwexp(lw)g^h=dhexp(lh)\begin{align} \hat{g}_{cx} &= d_w \cdot l_{cx} + d_{} \\ \hat{g}_{cy} &= d_h \cdot l_{cy} + d_{cy} \\ \hat{g}_w &= d_w \cdot \exp(l_w) \\ \hat{g}_h &= d_h \cdot \exp(l_h) \end{align}

Same as Faster R-CNN box regression: predict offsets lcx,lcy,lw,lhl_{cx}, l_{cy}, l_w, l_h relative to default box dd.

Classification:

ci=softmax(zi)c_i = \text{softmax}(z_i)

for each class ii (including background).

L(x,cl,g)=1N(Lconf(x,c)+αLloc(x,l,g))L(x, c l, g) = \frac{1}{N}(L_{\text{conf}}(x, c) + \alpha L_{\text{loc}}(x, l, g))

where:

  • NN = number of matched default boxes
  • α=1\alpha = 1 (weight balance)

Localization loss (Smooth L1):

Lloc(x,l,g)=iPosm{cx,cy,w,h}xijksmoothL1(limg^jm)L_{\text{loc}}(x, l, g) = \sum_{i \in \text{Pos}} \sum_{m \in \{cx, cy, w, h\}} x_{ij}^k \text{smooth}_{L_1}(l_i^m - \hat{g}_j^m)

Confidence loss (Softmax):

Lconf(x,c)=iPosxijplog(c^ip)iNeglog(c^i0)L_{\text{conf}}(x, c) = -\sum_{i \in \text{Pos}} x_{ij}^p \log(\hat{c}_i^p) - \sum_{i \in \text{Neg}} \log(\hat{c}_i^0)

where c^ip=exp(cip)pexp(cip)\hat{c}_i^p = \frac{\exp(c_i^p)}{\sum_p \exp(c_i^p)}

WHY Smooth L1?

smoothL1(x)={0.5x2if x<1x0.5otherwise\text{smooth}_{L_1}(x) = \begin{cases} 0.5x^2 & \text{if } |x| < 1 \\ |x| - 0.5 & \text{otherwise} \end{cases}
  • When error is small (|x| < 1): Behaves like L2 (gradients don't vanish)
  • When error is large (|x| ≥ 1): Behaves like L1 (less sensitive to outliers, more stable)

Feature map 5×5 (late layer):

  • Receptive field: ~300 pixels
  • Default boxes: 6 boxes per location (scales 0.6-0.9, more aspect ratios)
  • Good for detecting: cars, buses, large objects

Why this step? A small object (e.g., 30×30 pixels) would be barely visible in the 5×5 map (just 0.5 cells), but well-represented in the 38×38 map (4-5 cells). Multi-scale matching ensures each object is predicted where it's most salient.


Key Techniques Across All Methods

Non-Maximum Suppression (NMS)

All detectors output many overlapping boxes. NMS keeps only the best box per object.

WHY this works? Boxes with high IoU are detecting the same object. Keep the most confident one, discard redundant detections.

Derivation of IoU (Intersection over Union):

Given two boxes AA and BB:

IoU(A,B)=Area(AB)Area(AB)=Area(AB)Area(A)+Area(B)Area(AB)\text{IoU}(A, B) = \frac{\text{Area}(A \cap B)}{\text{Area}(A \cup B)} = \frac{\text{Area}(A \cap B)}{\text{Area}(A) + \text{Area}(B) - \text{Area}(A \cap B)}

WHY this metric?

  • IoU = 1: Perfect overlap (same box)
  • IoU = 0: No overlap
  • IoU ∈ [0, 1]: Measures box similarity geometrically
  • Standard: IoU > 0.5 considered a "match" for evaluation

Hard Negative Mining

Most default boxes/anchors contain background, creating class imbalance.

Solution: After matching, sort boxes by confidence loss and keep top-K negatives (e.g., 3:1 ratio negative:positive).

WHY? Without this, the network learns to predict "background" everywhere and never detects objects. Hard negatives are the most confusing backgrounds (high loss) — focusing on these improves discrimination.


Comparison: When to Use Each

| Method | Speed (FPS) | Accuracy (mAP) | Best For | Trade-off | |--------|-------------|----------|--------| | Faster R-CNN | ~76% | High-accuracy applications (medical, autonomous vehicles) | Slow, two-stage | | YOLO v3 | ~30 | ~55% | Real-time video (surveillance, sports) | Mises small objects | | SSD | ~25 | ~68% | Balanced speed/accuracy (mobile apps) | Middle ground |

WHY these trade-offs?

  • Two-stage (R-CNN): Region proposals → separate classification = more computation, better localization
  • Single-stage (YOLO/SSD): Direct prediction = faster, but harder to learn precise localization
  • Multi-scale (SSD): Better than YOLO on small objects, but slower than YOLO

Common Mistakes

Why it feels right: Both are between 0 and 1, both relate to detection quality.

The fix:

  • Objectness/Confidence: "Is there any object here?" (binary)
  • Classification: "What object is it?" (multi-class)
  • Final score = objectness × classification

In YOLO: Each grid cell predicts one set of class probabilities (shared by all boxes) and per-box confidences. You multiply them for class-specific scores.

Steel-man: The confusion arises because in Faster R-CNN, these are combined in the RPN (objectness) and R-CNN head (classification), making the separation less obvious.

Why it feels right: MSE is the standard regression loss.

The fix: Consider two errors:

  • Box1: 10×10 predicted as 15×15 (error = 5)
  • Box 2: 100×100 predicted as 105×105 (error = 5)

With MSE on w, h: Both have loss = 25.

But Box 2's error is only 5% relative error, while Box 1's is 50%!

With MSE on w,h\sqrt{w}, \sqrt{h}:

  • Box 1: 103.16\sqrt{10} \approx 3.16, 153.87\sqrt{15} \approx 3.87, error ≈ 0.71, loss ≈ 0.5
  • Box 2: 100=10\sqrt{100} = 10, 10510.25\sqrt{105} \approx 10.25, error ≈ 0.25, loss ≈ 0.06

Now Box 1's loss is 8× larger, correctly reflecting the larger relative error.

Steel-man: The intuition "absolute error should matter equally" works for quantities of similar scale, but bounding boxes span orders of magnitude. Square root compresses the range, making loss more proportional to relative error.

Why it feels right: More anchors → more coverage → better chance of matching ground truth.

The fix:

  • Computational cost: Linear in number of anchors (slower training, inference)
  • Label assignment ambiguity: With too many anchors, multiple anchors match the same object equally well → inconsistent gradients
  • Overfitting: More parameters to learn anchor-specific patterns

Sweet spot: 3 scales × 3 aspect ratios = 9 anchors captures most object variations. Empirically validated in papers.

Steel-man: The intuition comes from "more capacity = more learning power," which works for model depth/width. But anchors are hand-designed priors, not learned features — more isn't always better, smart selection is.


Active Recall

Recall Explain object detection to a 12-year-old

Imagine you're playing "Where's Waldo?" but the computer is doing it.

Old way (R-CNN): The computer says, "Let me check if Waldo is in this box... nope. How about this box? Nope. This one? Maybe..." It checks2000 boxes one by one! Super slow.

New way (YOLO): The computer divides the picture into a grid, like a checkerboard. Each square shouts out, "I see a person here! Confidence: 85%!" and "I see a dog here! 92%!" All at once! Super fast.

Even better way (SSD): Like YOLO, but uses multiple grids—a coarse one for big things (cars) and a fine one for tiny things (faces). Like using a magnifying glass for small details and binoculars for distant objects.

The computer learns by showing it thousands of labeled pictures: "This is where the cat is, draw a box around it." Gradually, it learns cat-shapes, car-shapes, person-shapes. When it gets one wrong, we tell it, "The box should be a bit to the left" or "That's not a cat, it's a dog!" and it adjusts.

The magic: It not only says what (classification), but also where (localization)—drawing boxes around every object!

Or: Refined, Yappy, Scalable


Connections

  • Convolutional Neural Networks: The backbone feature extractors (VGG, ResNet, Darknet)
  • Image Classification: Object detection extends classification with localization
  • Semantic Segmentation: Pixel-level labeling vs. box-level in detection
  • Transfer Learning: Detectors often start with ImageNet-pretrained backbones
  • Anchor Boxes: Core technique in Faster R-CNN, YOLO v2+, SSD
  • Non-Maximum Suppression: Post-processing to remove duplicate detections
  • Intersection over Union (IoU): Evaluation metric and matching criterion
  • Batch Normalization: Stabilizes training in deep detector backbones
  • Data Augmentation: Critical for detection (random crops, flips, color jitter)
  • Instance Segmentation: Next step beyond detection (Mask R-CNN)

Flashcards

#flashcards/ai-ml

What is the fundamental difference between image classification and object detection? :: Image classification outputs a single label for the whole image. Object detection outputs multiple bounding boxes with class labels, solving both "what" (classification) and "where" (localization).

What are the two stages in R-CNN?
1) Region proposal (Selective Search generates ~2000 candidate boxes), 2) Classification (CNN extracts features, SVM classifies each region).
Why does YOLO use square roots in the size loss?
To make the loss more sensitive to relative error. A 5-pixel error on a 10-pixel box is worse than on a 100-pixel box. Square roots compress the range so loss scales with percentage error.
What is the purpose of anchor boxes in Faster R-CNN?
Anchor boxes provide reference coordinates at multiple scales and aspect ratios. The network predicts offsets from anchors rather than absolute coordinates, making learning easier and handling size variation.
Derive the bounding box center offset formula in Faster R-CNN.
Given proposal PP and ground truth GG: G^x=Pwdx+Px\hat{G}_x = P_w \cdot d_x + P_x where dxd_x is the learned offset. This makes the offset scale-invariant (fraction of box width).
What is the confidence score in YOLO?
confidence=P(object)×IoUpredtruth\text{confidence} = P(\text{object}) \times \text{IoU}_{\text{pred}}^{\text{truth}}. It represents the probability an object exists times how well the box fits. At training, supervised; at test, predicted.
Why does SSD use multiple feature maps?
Early feature maps (high resolution) detect small objects. Late feature maps (low resolution, larger receptive fields) detect large objects. Multi-scale predictions match objects to appropriate scales.
What is Non-Maximum Suppression and why is it needed?
NMS removes duplicate detections. Algorithm: Sort boxes by confidence, iteratively keep highest-confidence box and remove all overlapping boxes (IoU > threshold). Needed because detectors output many overlapping boxes per object.
What is Hard Negative Mining in SD?
Most default boxes contain background (class imbalance). Hard negative mining selects negatives with highest loss (most confusing backgrounds) to maintain a3:1 negative:positive ratio during training.
Derive IoU (Intersection over Union).
IoU(A,B)=Area(AB)Area(AB)=Area(AB)Area(A)+Area(B)Area(AB)\text{IoU}(A,B) = \frac{\text{Area}(A \cap B)}{\text{Area}(A \cup B)} = \frac{\text{Area}(A \cap B)}{\text{Area}(A) + \text{Area}(B) - \text{Area}(A \cap B)}. Measures box overlap; 1 = perfect match, 0 = no overlap.
Why is Smooth L1 loss used in localization?
smoothL1(x)=0.5x2\text{smooth}_{L_1}(x) = 0.5x^2 if x<1|x|<1, else x0.5|x|-0.5. For small errors, behaves like L2 (no vanishing gradients). For large errors, behaves like L1 (less sensitive to outliers, more stable training).
What is the trade-off between one-stage and two-stage detectors?
Two-stage (Faster R-CNN): More accurate, better localization, but slower (~7 FPS). One-stage (YOLO, SSD): Faster (25-30 FPS), real-time capable, but lower accuracy on small objects.
How does YOLO divide the detection task across grid cells?
Each grid cell predicts B bounding boxes (with x, y, w, h, confidence) and C class probabilities. Final output: S×S×(B5+C)S \times S \times (B \cdot 5 + C) tensor. Only cells containing object centers are penalized during training.
What is the Region Proposal Network (RPN) in Faster R-CNN?
RPN slides over CNN feature maps, predicting at each position: k anchor boxes with objectness scores and box refinements. Replaces slow Selective Search with a learned proposal generator. Loss combines classification (object/not) and regression.
Why does YOLO multiply objectness and class probability?
Final class-specific score = P(classobject)×P( ×IoUP(\text{class}|\text{object}) \times P(\ \times \text{IoU}. Combines "is there anything" (objectness) with "what is it" (classification) and "how well does box fit" (IoU). Marginalizes out object presence.

Concept Map

locates

classifies

two paradigms

two paradigms

example

step 1

uses

step 2

refines with

uses offsets

improved by

extracts once

examples

Object Detection

Bounding Boxes

Class Labels

Two-Stage Methods

One-Stage Methods

R-CNN Family

Region Proposals

Selective Search

CNN Classification

Box Regression

Scale-Invariant Transforms

Fast R-CNN

RoI Pooling

YOLO and SSD

Hinglish (regional understanding)

Intuition Hinglish mein samjho

Hinglish (regional understanding)

Intuition Hinglish mein samjho

Chalo, object detection ko simple tarike se samajhte hain. Jab tum ek normal image classification network banate ho, to woh sirf ek sawaal ka jawab deta hai — "yeh photo mein kya hai?" Lekin real duniya mein ek image ke andar bohot saari cheezein ek saath hoti hain — ek car, do log, teen kutte. Object detection ka core intuition yeh hai ki humein do cheezein ek saath karni hain: locate karna (object kahaan hai — bounding box) aur classify karna (yeh kya hai — label). Problem yeh hai ki humein pehle se pata nahi hota ki kitne objects hain, woh kahaan hain, aur kis scale pe hain. Isiliye yeh classification se kaafi mushkil task hai.

Ab is problem ko solve karne ke liye teen approaches evolve hui. R-CNN family (R-CNN, Fast, Faster R-CNN) ek two-stage idea use karti hai — pehle "kahaan dekhna hai" (region proposals) nikaalo, phir "yeh kya hai" (classification) karo. Shuruaat mein Selective Search se 2000 candidate boxes bante the aur har box pe alag se CNN chalti thi, jo bohot slow tha. Fir Fast R-CNN ne feature ek hi baar poori image se nikaal ke RoI pooling se speed badhaayi, aur Faster R-CNN ne Selective Search ko hi ek learned network (RPN) se replace kar diya. Ismein anchor boxes ka concept important hai — yeh pre-defined shapes hote hain jo multiple scales aur aspect ratios ko handle karte hain, aur box regression ke liye reference dete hain. Box regression mein hum offset ko width/height ke fraction mein aur size ko log-space mein predict karte hain taaki learning smooth aur scale-invariant rahe.

Yeh sab isliye matter karta hai kyunki object detection real-world AI ka backbone hai — self-driving cars, face detection, medical imaging, security cameras, sabme yahi technology use hoti hai. R-CNN accurate hai par slow, jabki YOLO aur SSD jaise single-stage detectors real-time speed dete hain. Toh jab tum yeh evolution samajhte ho — Selective Search se RPN tak, alag-alag CNN calls se shared features tak — tum actually seekh rahe ho ki engineers accuracy aur speed ke beech trade-off kaise optimize karte hain. Yeh intuition tumhe har modern detection system samajhne mein madad karega.

Go deeper — visual, from zero

Test yourself — Convolutional Neural Networks

Connections