文章目录
本实验基于pytorch的faster-rcnn网络实现,从自己制作数据集到完成模型的训练。
faster-rcnn网络结构完整代码:https://github.com/bubbliiiing/faster-rcnn-pytorch(来源于:@Bubbliiiing)
一、数据集的制作
1、获取数据
我们可以通过爬虫爬取网上不同的视力表储存起来,也可以自己从网上下载一些图片,因为是自己做个小实验,所以不必下载太多。
2、制作所要的数据图片
从下载下来的视力表中截取不同的“E”,再把不同的“E”放到一张墙壁图片上。对于放上去的“E”,我们也可以进行加噪处理,增强数据,这边用的是椒盐噪声处理。
对于制作好的图片,我们可以通过对图片上下采样,扩大数据集,减少工作量。再剔除一些太过歪斜的图片就可以。然后把整个数据集保存在faster-rcnn网络文件夹中VOC2007文件中一个名为JPEGImages的文件夹中。并随机保存一张图片在img文件夹中,以供预测使用。
3、添加标签
我们可以使用labelimg这个软件对图片中的数据进行标注。
然后保存在与JPEGImages同一个文件夹下的Annotations文件夹中备用。
二、模型的训练
1、用编译器打开文件夹
用vscode打开文件夹。目录如下:
2、修改部分参数
①修改model_data文件下的voc_classes.txt文件,改成我们所需要的标签。
②修改voc_annotation.py文件中第13行代码中的标签改成我们需要的。
3、准备工作
①运行vocdevkit文件夹中voc2007文件中的voc2frcnn.py文件代码。
②运行voc_annotation.py文件代码。
4、开始训练
运行train.py文件开始模型的训练。
三、模型的预测
1、准备工作
将文件frcnn.py中的第23行中的路径改为logs文件夹中Epoch为100的文件全称。
2、开始预测
运行predict.py文件。
在终端中输入img文件夹中要预测的图片。
输入图片路径后按enter键就能得到这张图片的预测结果的图片,并在终端中输出预测框的参数。
四、模型评估
1、修改参数
将VOCdevkit文件下的VOC2007文件中的voc2frcnn.py中代码的第24行的1该为小于1大于等于0的数,这边直接改为0。并运行代码。
2、处理数据
依次运行代码文件:
①voc_annotation.py
②get_dr_txt.py
③get_gt_txt.py
④get_map.py
3、得到结果
在results文件夹中我们就可以看到我们对模型的评估结果,包括各个标签的AP、F1、Precision、Recall、mAP等值。
mAP: