目标检测类前言知识

1.PASCAL数据集

   有关目标检测,目标分类,目标分割,动作识别。

1.)下载的数据集文件介绍

 标注信息:.xml文件实例:

 <segmented> 1:被分割 0:没有被分割

<object>: <truncated> 1:目标被截断 <difficult> 1:检测的难易程度较难  <bndbox>:检测目标的左上与右下坐标

main中除了train和val以及trainval之外还有一系列的.txt文件,比如:

boat_train.txt : 2008_000122 (0/-1/1) 1:有目标     -1:无目标     0:检测出来有困难

2)标注图片:

 

可以直接pip install labelImg , 若要修改源码则可下载原文件。 

 步骤: 新建文件夹----里面包括标注信息保存文件夹,图片保存文件夹,类别信息.txt文件

            在当前文件夹下打开PowerShell , 输入labelImg ./ image ./class.txt

 选中图片文件夹

             

 点击change save dir (设置标注文件的保存位置 已设置好)

再点击create\nRectbox 框选出图片中的目标,框选成功后选取类别 选取成功后可以在BOXLABEL中勾选是否难以检测。接着框选其他目标 ,全部标记成功后点击save。

标注完图片,若想要训练文件,需要自己生成train.txt 与 val文件,生成后既可放入训练。

2.coco数据集以及pycocotools使用:

 其中80个目标类别与91个材料类别中80与91的区别是:

stuff:包含了没有明确边界的材料与对象(天空)

80 object categories 是 91 stuff categories的子集,如果只用于目标检测则只需要80 object categories。

与PASACL的对比:

coco的官方网址:

https://cocodataset.org/

目标检测所需要下载的文件:

将文件全部进行解压,并放入coco文件夹中:

 官方给出的标注文件的格式说明,可通过:https://cocodataset.org/#format - data 查看

示例:简单读取 instances_val2017.json文件

读取代码(设置断点):

 info:

 数据集描述、地址、版本、年份等

images(对应的所有图片): 

图片信息:

 图片名称、图片下载、高度、宽度、创立时间、来源地址、图片id

annotation:

 每个元素仅仅是一个目标,而不是一张图片下对应的所有目标。

 segmentation:分割信息 、面积、是否是单个目标(目标重叠则为1)、bbox(x,y,w,h):前两个为左上xy坐标,后两个数据为框的宽度与高度。 、对应类别的索引(相对于91)

categories:

 对应80个类别 其中索引是针对91个stuff categories 故检测时要考虑映射。

2.使用pycocotools工具读取标注文件

安装pycocotools:  pip install pycocotools-windows

代码块:

import os
from pycocotools.coco import COCO
from PIL import Image, ImageDraw
import matplotlib.pyplot as plt

json_path = './instances_val2017.json'
img_path = './val2017'

# 下载coco数据标注信息
coco = COCO(annotation_file = json_poth)

# 获取图像数据集
ids = list(sorted(coco.imgs.keys()))
print("number of image: {}".format(len(ids)))

# 获取coco分类标签
coco_classes = dict([(v['id'],v['name']) for k, v in coco.cats.items()])

# 遍历前三张图片
for img_id in ids[:3]:
    # 获取对应图像id的所有annotations idx信息(就是集中一张图片的所有目标信息)
    ann_ids = coco.getAnnIds(imgIds = img_id)

    # 根据annotation idx获取所有标注信息
    targets = coco.loadAnns(ann_ids)

    # 获取图像文件夹的名字
    path = coco.loadImgs(img_id)[0]['file_name']

    # 读取图片
    img = Image.open(os.path.join(img_path, path)).convert('RGB')
    draw = ImageDraw.Draw(img)
    
    # 检测框
    for target in targets:
        x, y, w, h, = target['bbox']
        x1, y1, x2, y2 = x, y, int(x+w), int(y+h)
        draw.rectangle((x1, y1, x2, y2))
        draw.text((x1,y1), coco_classes[target['category_id']])
        
    # 展示图片
    plt.inshow(img)
    plt.show()

 验证map:

首先登陆coco的官网,在Evaluate中选择results format

 给出了每种任务给定的数据格式要求,例如目标检测

 

 根据之前的instances_val2017_json文件与现在生成的predict_results_json文件进行对比

执行完后可得:

3. 目标检测mAP计算以及coco评价标准

 

绿色的是人为标注,红色的是预测框 

 

TP:(红色cat  0.9)true positive 此时lou > 0.5

FP: (红色cat 0.3)

FN: (右下角没有检测到的cat)

注:每个类别都需要取AP值

 GT ID:检测目标的id confidence: 概率值   IOU:(交并比)重合率   OB:是否正确检测目标

之后继续对图片检测:

 

 Recall=0.57时, 取Precision最大的值。 得到猫这个类别的AP值为0.6694。

coco官网说明评价指标:https://cocodataset.org/#detection-eval

 AP (IOU :0.5-0.95中以0.05为步长)计算出十个AP的均值mAP

AP针对小、中、大目标,针对不同尺度的检测的效果。

每个图片最多取1 、10、100个目标对应的AR均值

3.目标检测前言

one-stage : SSD、YOLO        two-stage: Faster-RCNN

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值