# How to reduce FP detections?

**URL:** https://community.ultralytics.com/t/how-to-reduce-fp-detections/1629
**Category:** YOLO
**Tags:** question, troubleshooting, yolo
**Created:** [November 9, 2025, 12:03pm UTC](https://community.ultralytics.com/t/how-to-reduce-fp-detections/1629 "2025-11-09T12:03:44Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![Denis](https://avatars.discourse-cdn.com/v4/letter/d/5e9695/32.png) [@Denis](https://community.ultralytics.com/u/Denis)
#### Post date: [November 9, 2025, 12:03pm UTC](https://community.ultralytics.com/t/how-to-reduce-fp-detections/1629/1 "2025-11-09T12:03:44Z")

</div>

Hello. I train yolo to detect people. I get good metrics on the val subset, but on the production I came across FP detections of pillars, lanterns, elongated structures like people. How can such FP detections be fixed?

---

<div class="post-metadata">

### Author: ![pderrenger](https://sea1.discourse-cdn.com/flex001/user_avatar/community.ultralytics.com/pderrenger/32/73_2.png) [@pderrenger](https://community.ultralytics.com/u/pderrenger)
#### Post date: [November 10, 2025, 12:43am UTC](https://community.ultralytics.com/t/how-to-reduce-fp-detections/1629/2 "2025-11-10T00:43:44Z")

</div>

Hi Denis — classic domain gap. A few quick wins to cut those pole/lantern FPs:

Calibrate inference on production and raise the confidence just for `person`. For example:

```bash
yolo predict model=yolo11m.pt source=your_video.mp4 classes=0 conf=0.65

```

Hard‑negative mine: run your model on production, collect FP frames of pillars/lanterns, add them to training as negatives (no labels), or label a new `pole` class and ignore it at inference. Retrain a few epochs; this is usually the biggest improvement.

If video, add simple gating: require motion/tracking persistence; stationary vertical structures will drop. You can also add a tiny post‑filter by geometry or ROI. Example:

```python
from ultralytics import YOLO
m = YOLO('yolo11m.pt')
for r in m.predict('your_video.mp4', conf=0.65, classes=[0]):
    xywh = r.boxes.xywh.cpu().numpy()
    keep = [(h/w) < 3.0 and h > 40 for (_,_,w,h) in xywh] # drop ultra-thin, tiny boxes
    r.boxes = r.boxes[keep]

```

If needed, try a larger YOLO11 size or a cascade with YOLO11‑pose to confirm people via keypoints. Also create a small “production val” split and pick the `conf` that gives the FP rate you need. For quick tips on filtering predictions, see the short notes in the Ultralytics guide to [common YOLO issues](https://docs.ultralytics.com/guides/yolo-common-issues/).
