目标检测自动标注生成xml文件

本文介绍了一种利用预训练模型自动标注数据的方法,通过Darknet模型与OpenCV结合,实现目标检测和坐标获取,再将检测结果写入XML文件,有效提升数据集规模和模型训练效率。


前言

在训练目标检测时,标注数据是一项简单而又浪费时间的事情,如果能够自动标注数据将可以高效的扩充数据集,从而提高训练模型的效果。
目前能想到的一种自动标注方法是先训练一个检测效果较好的模型,然后使用这个模型对需要标注的图片进行检测,将检测到的BBox写入到标注文件中。这里来简单说明一下相关代码。
python脚本文件下载地址:https://download.csdn.net/download/qq_43019451/12836771


一、使用opencv调用模型

此处以Darknet模型为例,使用OpenCV调用模型来检测图片中的目标。

#引用opencv-python库
import cv2

#此处设置相关的文件路径,我使用的时人脸检测的模型,所示是face.weights
weightsPath = "./face/face.weights"
configPath = "./face/face.cfg"
labelsPath = "./face/face.names"

#读取names文件中的类别名
LABELS = open(labelsPath).read().strip().split("\n")

#使用opencv加载Darknet模型
net = cv2.dnn.readNetFromDarknet(configPath, weightsPath)
net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA)
net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)

#下面是通过检测获取坐标的函数
def coordinate_get(img):
    coordinates_list=[] # 创建坐标列表
    boxes = []
    confidences = []
    classIDs = []
    (H, W) = img.shape[:2]
    # 得到 YOLO需要的输出层
    ln = net.getLayerNames()
    ln = [ln[i[0] - 1] for i in net.getUnconnectedOutLayers()]
    # 从输入图像构造一个blob,然后通过加载的模型,给我们提供边界框和相关概率
    blob = cv2.dnn.blobFromImage(img, 1 / 255.0, (416, 416), swapRB=True, crop=False)
    net.setInput(blob)
    layerOutputs = net.forward
评论 17
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值