最近一段时间一直忙着实习和在研究insightface人脸识别模型的相关事宜,上次说更新mobilenet-ssd的人脸检测,结果一拖再拖,非常抱歉。最近我也会将自己跑Insightface的实践写出来,并将以前和进后的项目上传个人Github仓库,这里先给出链接:https://github.com/Danbinabo
VOC数据集包含20个类别的物体和1个背景,分别是——aeroplane, bicycle, bird, boat, bottle, bus, car, cat, chair, cow, diningtable, dog, horse, motorbike, person, pottedplant, sheep, foa, train, tvmonitor,有时候我们想用VOC数据集训练,但并不需要这么多类别,而caffe-ssd提供的数据处理工具create_list.sh
和create_data.sh
默认是处理所有的20个分类的。如果我们不想重写这些数据处理工具,可以从根源入手,也就是直接修改数据集里的标注信息,把多余分类的信息删去。
其实训练多类别检测(N+1)和人脸检测(1+1)原理是完全一样的,不同点在于要生成对应的数据集,这里先将widerface数据集转VOC格式数据集的代码贴出来,对应训练数据路径进行修改:
# -*- coding: utf-8 -*-
import os, cv2, sys, shutil
from xml.dom.minidom import Document
def writexml(filename, saveimg, bboxes, xmlpath):
doc = Document()
annotation = doc.createElement('annotation')
doc.appendChild(annotation)
folder = doc.createElement('folder')
folder_name = doc.createTextNode('widerface')
folder.appendChild(folder_name)
annotation.appendChild(folder)
filenamenode = doc.createElement('filename')
filename_name = doc.createTextNode(filename)
filenamenode.appendChild(filename_name)
annotation.appendChild(filenamenode)
source = doc.createElement('source')
annotation.appendC