1. 使用GPU训练
一直在纠结把GPU的使用放在哪里,觉得放在pytorch那里也不太合适,所以就放在这里了。
按照唱歌和不唱歌太难区分了,所以我用星黛露和草莓熊新建的训练集:
方法一
使用GPU训练需要在:① 络模型、②损失函数、③数据,三个地方调用即可。严谨一点,我们需要加上判断。完整代码如下:
得到结果:
2.1 重要概念
目标检测的分类有两种方式:
- 是否存在候选区:按照是否存在候选区分类可以分为两阶段目标检测算法和一阶段目标检测算法。两阶段目标检测算法的第一级 络用于候选区的提取,产生候选区域(region proposals),第二级 络用于对候选区进行分类和回归(一般还需要对位置精修)。一阶段目标检测算法不对候选区进行提取,只用了一级 络就完成了分类和回归。
- 是否存在先验框:按照是否存在先验框分类可以分为基于锚框的目标检测算法和无锚框的目标检测算法。基于锚框的目标检测算法首先建立不同长宽比的检测框,然后对锚框中的内容进行分类和回归。无锚框的目标检测算法是基于中心区域和关键点的目标检测算法,取消了锚框生成机制,加快了速度。
各类目标检测算法总结如下:
算法类别 | 机制 | 优势 | 局限性 | 适用场景 | 经典 络 |
---|---|---|---|---|---|
one-stage | 不生成候选区,直接进行分类和回归 | 实时性高 | 成群目标和小目标检测精度低 | 实时目标检测 | SSD;Yolo系列;Retina-Net |
two-stage | 先生成候选区,再对候选区进行分类和回归 | 算法精确度高 | 实时性差,检测小目标效果差 | 高精度目标检测 | R-CNN;SPPNet;Fast R-CNN;Faster R-CNN;Mask R-CNN |
Anchor-Based | 先生成锚框,对锚框进行分类和回归 | 技术较成熟 | 算法泛化能力差,训练效率低 | 通用目标检测 | R-CNN;Fast R-CNN;Faster R-CNN;SSD |
Anchor-Free | 根据中心点和关键点生成边界框 | 算法泛化能力强,检测小目标精度高 | 不适合进行通用目标检测,精度低于基于锚框的算法 | 多尺度目标检测,小物体目标检测 | Yolov1;Yolov2;CenterNet;CornorNet;Fcos |
2.2 基于锚框的检测算法
一类目标检测算法是基于锚框,预测每个锚框里是否含有关注的物体,如果是,预测从这个锚框到真实边缘框的偏移。
杰卡德系数,又称为杰卡德相似系数,用于比较两个样本之间的差异性和相似性。杰卡德系数越高,则两个样本相似度越高。
给定两个集合A和B,其杰卡德系数为:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!