环境准备
pip install -U ultralytics
图片位置
放在项目根目录下面
样例代码
python
# 1. 导入必备工具(只留最核心的,无多余代码)
from ultralytics import YOLO # YOLO检测专用
# 2. 加载人体关键点模型(书包绝对检测不出关键点)
model = YOLO('yolov8n-pose.pt')
# 3. 你的图片路径(根目录图片,直接写文件名)
source = r'test_picture_5.jpg'
# 4. 模型检测(完全保留你的 conf=0.5,坚决不动!)
results = model.predict(
source=source,
conf=0.5, # 你的要求:0.5阈值
classes=0, # 只检测人
show=False, # 过滤完再显示
save=False # 过滤完再保存
)
# 5. 核心过滤:100%剔除书包(极简逻辑,绝无例外)
for result in results:
boxes = result.boxes # 所有检测框(真人/误检书包)
keypoints = result.keypoints # 所有关键点
valid_boxes = [] # 只存真人框
# 逐个判断每个框:是真人?还是书包?
for i in range(len(boxes)):
# 取出当前框的 17个关键点置信度(0=无,1=百分百)
kp_conf = keypoints[i].conf[0]
# 🔥 调试打印:亲眼看到数值(书包=全0,真人=全大于0)
print(f"第{i+1}个框的关键点置信度:{kp_conf}")
# 计算置信度总和(书包总和=0,真人总和=很大)
total_conf = kp_conf.sum().item()
print(f"第{i+1}个框的置信度总和:{total_conf}")
# ✅ 终极规则:总和=0 → 绝对是书包(直接剔除);总和>0 → 真人(保留)
if total_conf > 0:
valid_boxes.append(boxes[i])
print("→ 这个框是:真人 ✅")
else:
print("→ 这个框是:书包 ❌(已剔除)")
# 替换成纯真人框
result.boxes = valid_boxes
# 6. 显示+保存最终结果
for result in results:
result.show()
result.save()
# 7. 最终输出(只有书包的话,这里一定是0)
for r in results:
print(f"\n🎯 最终检测到的真实人数:{len(r.boxes)}")
classes的可选的值:
0: person(人)
1: bicycle(自行车)
2: car(小汽车)
3: motorcycle(摩托车)
4: airplane(飞机)
5: bus(公交车)
6: train(火车)
7: truck(卡车)
8: boat(船)
9: traffic light(交通灯)
10: fire hydrant(消防栓)
11: stop sign(停车标志)
12: parking meter(停车计时器)
13: bench(长椅)
14: bird(鸟)
15: cat(猫)
16: dog(狗)
17: horse(马)
18: sheep(羊)
19: cow(牛)
20: elephant(大象)
21: bear(熊)
22: zebra(斑马)
23: giraffe(长颈鹿)
24: backpack(背包)
25: umbrella(雨伞)
26: handbag(手提包)
27: tie(领带)
28: suitcase(行李箱)
29: frisbee(飞盘)
30: skis(滑雪板)
31: snowboard(滑雪板)
32: sports ball(运动球)
33: kite(风筝)
34: baseball bat(棒球棒)
35: baseball glove(棒球手套)
36: skateboard(滑板)
37: surfboard(冲浪板)
38: tennis racket(网球拍)
39: bottle(瓶子)
40: wine glass(红酒杯)
41: cup(杯子)
42: fork(叉子)
43: knife(刀)
44: spoon(勺子)
45: bowl(碗)
46: banana(香蕉)
47: apple(苹果)
48: sandwich(三明治)
49: orange(橙子)
50: broccoli(西兰花)
51: carrot(胡萝卜)
52: hot dog(热狗)
53: pizza(披萨)
54: donut(甜甜圈)
55: cake(蛋糕)
56: chair(椅子)
57: couch(沙发)
58: potted plant(盆栽)
59: bed(床)
60: dining table(餐桌)
61: toilet(马桶)
62: tv(电视)
63: laptop(笔记本电脑)
64: mouse(鼠标)
65: remote(遥控器)
66: keyboard(键盘)
67: cell phone(手机)
68: microwave(微波炉)
69: oven(烤箱)
70: toaster(烤面包机)
71: sink(水槽)
72: refrigerator(冰箱)
73: book(书)
74: clock(时钟)
75: vase(花瓶)
76: scissors(剪刀)
77: teddy bear(泰迪熊)
78: hair drier(吹风机)
79: toothbrush(牙刷)
17个人体关键点
| 索引 | 英文名称 | 中文名称 |
|---|---|---|
| 0 | nose | 鼻子 |
| 1 | left_eye | 左眼 |
| 2 | right_eye | 右眼 |
| 3 | left_ear | 左耳 |
| 4 | right_ear | 右耳 |
| 5 | left_shoulder | 左肩 |
| 6 | right_shoulder | 右肩 |
| 7 | left_elbow | 左肘 |
| 8 | right_elbow | 右肘 |
| 9 | left_wrist | 左手腕 |
| 10 | right_wrist | 右手腕 |
| 11 | left_hip | 左胯 |
| 12 | right_hip | 右胯 |
| 13 | left_knee | 左膝 |
| 14 | right_knee | 右膝 |
| 15 | left_ankle | 左脚踝 |
| 16 | right_ankle | 右脚踝 |