学会使用YOLO和Opencv在10分钟内实现目标检测(第1部分)|附带的源代码(2)

电脑杂谈  发布时间:2020-05-22 05:20:58  来源:网络整理

在此块中:

过滤掉不必要的测试结果后,我们将:

opencv目标识别程序_opencv识别颜色_目标识别 opencv

# apply non-maxima suppression to suppress weak, overlapping bounding# boxesidxs = cv2.dnn.NMSBoxes(boxes, confidences, args["confidence"],
   args["threshold"])

YOLO算法不应用非最大抑制,需要在此处进行说明. 应用非最大抑制可以抑制明显重叠的边界框,并且仅保留最可靠的边界框. NMS还确保我们没有任何多余或无关的边界框. 使用OpenCV的内置NMS DNN模块,可以实现非最大抑制. 所需参数是边界框,置信度,置信度阈值和NMS阈值. 最后,在图像上绘制检测框和分类文字:

# ensure at least one detection existsif len(idxs) > 0:    # loop over the indexes we are keeping
   for i in idxs.flatten():        # extract the bounding box coordinates
       (x, y) = (boxes[i][0], boxes[i][1])
       (w, h) = (boxes[i][2], boxes[i][3])
       # draw a bounding box rectangle and label on the image
       color = [int(c) for c in COLORS[classIDs[i]]]
       cv2.rectangle(image, (x, y), (x + w, y + h), color, 2)
       text = "{}: {:.4f}".format(LABELS[classIDs[i]], confidences[i])
       cv2.putText(image, text, (x, y - 5), cv2.FONT_HERSHEY_SIMPLEX,            0.5, color, 2)
# show the output imagecv2.imshow("Image", image)
cv2.waitKey(0)

假设至少有一个检测结果,则使用非最大抑制来确定idx. 然后,我们使用随机类的颜色在图像上绘制边框和文本. 最终,显示结果图像,直到用户按下键盘上的任何键为止. 让我们在下面输入测试链接,打开一个终端并执行以下命令:

$ python yolo.py --image images/baggage_claim.jpg --yolo yolo-coco
[INFO] loading YOLO from disk...
[INFO] YOLO took 0.347815 seconds

图2: YOLO用于检测机场的人员和行李

从上图可以看到,YOLO不仅可以检测输入图像中的每个人,还可以检测到手提箱. 此外,从图片的右上角可以看到,YOLO还检测到女士肩上的手提包. 让我们尝试另一个示例:

$ python yolo.py --image images/living_room.jpg --yolo yolo-coco
[INFO] loading YOLO from disk...
[INFO] YOLO took 0.340221 seconds

图3: YOLO用于检测人,狗,电视和椅子

opencv目标识别程序_目标识别 opencv_opencv识别颜色

YOLO还可以检测电视监视器和椅子. 令我惊讶的是,YOLO能够检测到椅子,因为它是手工制作的老式“婴儿高脚椅”. 有趣的是,YOLO认为我手中有一个,它实际上不是-玻璃反射的VHS记录,仔细地注视着这个地方,它实际上非常像. 下图示例演示了YOLO Object Detector的局限性和弱点:

$ python yolo.py --image images/dining_table.jpg --yolo yolo-coco
[INFO] loading YOLO from disk...
[INFO] YOLO took 0.362369 seconds

图4: YOLO用于检测餐桌

尽管YOLO可以正确检测到酒瓶,桌子和花瓶,但只能正确检测到两个酒杯之一. 试试下面的最后一张图片:

$ python yolo.py --image images/soccer.jpg --yolo yolo-coco
[INFO] loading YOLO from disk...
[INFO] YOLO took 0.345656 seconds

图5: 使用YOLO检测足球运动员和足球

YOLO可以正确检测到场上的每个球员,包括足球本身. 请注意,尽管该区域非常模糊并且被部分遮挡,但仍然可以检测到背景中的人物. 以上是图像检测部分的全部内容. 下一节将介绍视频流中的目标检测以及YOLO算法的摘要.

此分享来自公共微信-AI Technology Newsletter(aiblog_research),作者: Ali Yunqi Begonia

文本中详细说明了原始文本的来源和重印的信息. 如果有任何侵权,请联系yunjia_community@tencent.com将其删除.

原始发表时间: 2018-11-24


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-218523-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 陈著
      陈著

      以习主席为首的党中央采取一系列的改革措施和发展新思维挑战了美国的地位

    热点图片
    拼命载入中...