使用py-faster-rcnn训练自己的数据
faster-rcnn原本使用voc2007数据集训练,可识别20类目标。但是我们的应用场景,可能只需要2、3类。假设我们只需要检测识别两类目标person
和car
,再加上backgroud
可以认为是分3类。那么我们如何训练这个模型呢。
1. 准备数据集
可以把自己的数据改成voc2007的格式,主要有两个文件:trianval.txt
存放训练图片的名字,annotation.xml
存储标注信息。具体过程,这里有一个参考。
然后在补充一点,如果你没有足够训练数据,或者干脆就只用voc2007的数据,而且只训练person
和car
,该怎么办呢。
很简单,voc2007/Imagesets/Main
文件夹下,有各个类别的txt文件,我们需要使用的是person_trainval.txt
和car_trainval.txt
。这两个文件内容如下:
002247 1
002248 1
002249 -1
002251 -1
前边的数字串使图片的名字,后边的 1 或 -1 代表正负该图片是否存在该目标(person或car)。我们只使用标注为1的图片,使用shell语句完成:
cat person_trainval.txt car_trainval.txt | awk '{if($2 == 1) {print $1}}' >> my_trainval.txt