一、建立数据集
分为三个文件夹JPEGImages、annotations、ImageSets
1.JPEGImages
存放图片,名称以6位数字+.jpg
2.Annotations
存放xml文件
3.ImageSets
存放trainval.txt train.txt val.txt test.txt,其中没有xml的文件不需要jpg
文件内格式为:
jpg文件名名 xml文件名
制作xml的文件为window的labelImg.exe
二、下载py-faster-rcnn编译
编译caffe
首先进入py-faster-rcnn\caffe-fast-rcnn
执行
cp Makefile.config.example Makefile.config
配置好Makefile.config文件后执行
make -j8 && make pycaffe
cd ../lib
make -j4
三、更改文件
1.修改lib/fast_rcnn/config.py
__C.DATA_DIR = osp.abspath(osp.join('')) #dataset的地址
__C.MODELS_DIR = osp.abspath(osp.join(__C.ROOT_DIR, 'models', 'usb')) #在model下新建文件夹,可以将pascal_voc拷贝重新命名
2.修改 experients/scripts处文件
在这里用的是交替训练,即更改faster_rcnn_alt_opt.sh文件
在case $DATASET in处添加代码
usb)
TRAIN_IMDB="usb_2018_trainval"
TEST_IMDB="usb_2018_test"
PT_DIT="usb"
ITERS=40000
;;
3.修改lib/datasets处文件
- 修改factory.py
在最开始加上
from datasets.usb import usb
中间加上
#Set up usb_<year>_<split>
for year in ['2018']:
for split in ['trainval', 'test']:
name = 'usb_{}_{}'.format(year,split)
__sets[name] = (lambda split=split,year=year: usb(split,year))
修改usb.py(将pascal_voc.py复制成usb.py)
class usb(imdb):
imdb.__init__(self,'usb_'+image_set)
self._classes = ['_background_','flaw'] #改成background加其他自己的分类
image_set_file = os.path.join(self._data_path, ' ')
4.修改tools/train_net.py
在文件最下面加上args.num_class的个数
四、修改训练里的参数
五、开始训练
./experients/scripts/faster_rcnn_alt_opt.sh 0 ZF usb
另外
1.修改anchor
在/lib/rpn/generate_anchors.py中,如果不需要改变anchor数量,而只是简单改变scales和ratios,直接改generate_anchors函数的默认值就好,比如把base_size改为8或者把scales该为2**np.arrage(2,5),都可以把基础尺度减少为64, 128, 256。ratios也可以根据需要这样改。
参考地址:链接