py-faster-rcnn本身代码很棒。
不过使用它的时候,还是需要自己写一些脚本,作为辅助。
1 所有.py文件顶部添加utf8编码声明。因为有时候需要添加中文注释,不声明编码会报错
#insert_utf8_at_first_line.sh
sed -i '1i #coding:utf-8' `find . -name '*.py'`
2 清除缓存文件:每次训练时,如果有前面一次遗留的缓存文件干扰,几个小时的训练可能要白费了。 这怎么能允许呢?
#clean_cache.sh
rm -f data/cache/voc_2007_trainval_gt_roidb.pkl
rm -f data/VOCdevkit2007/annotations_cache/annots.pkl
rm -f `find . -name '*.pyc'`
rm -rf output/faster_rcnn_end2end
3 训练时候只想看loss,不想看其他的
可以把训练输出到终端的内容,重定向到文件。然后用tailf显示文件内容,并辅以grep和awk,就可以了。
先执行训练脚本
./experiments/scripts/faster_rcnn_end2end.sh 0 VGG_CNN_M_1024 pascal_voc
训练输出到屏幕的,也会写入到logs目录下最新的一个文件,比如:
./experiments/logs/faster_rcnn_end2end_VGG_CNN_M_1024_.txt.2016-12-14_19-49-01
从文件中显示loss内容行:
tailf experiments/logs/faster_rcnn_end2end_VGG_CNN_M_1024_.txt.2016-12-14_19-49-01 | grep '\sloss\s='
以及,只想看loss那一列(最后一列)的数据:
cat experiments/logs/faster_rcnn_end2end_VGG_CNN_M_1024_.txt.2016-12-14_19-49-01 | grep '\sloss\s=' | awk '{print $NF}'