图像分类训练自己的任务及模型评估

目录

一.数据集的存放

 二.新建模型

 三.修改参数

 四.定义标签的两种方法

1.直接在imagenet修改

 2.新建文件并注册

 五.单张图片测试

 六.模型评估


一.数据集的存放

首先在mmcls目录下新建data文件用来存我们的数据集

图像分类训练自己的任务及模型评估_第1张图片

将自己的数据集放入到data文件夹中,我这用的是一个水果的数据集,并且已经划分好了训练集和验证集图像分类训练自己的任务及模型评估_第2张图片

  打开训练集可以看到里面有很多种类图像分类训练自己的任务及模型评估_第3张图片

 二.新建模型

打开我们的pycharm工程,以resnet下的resnet18_8xb32_in1k.py为例

先找到configs路径下的resnet,复制resnet18_8xb32_in1k.py的绝对路径

图像分类训练自己的任务及模型评估_第4张图片

打开train.py文件,将路径粘贴并改为双斜杠,注释掉:

# C:\\Users\\lenovo\\MMCLS1\\mmclassification-master\\configs\\resnet\\resnet18_8xb32_in1k.py

图像分类训练自己的任务及模型评估_第5张图片

将此路径复制到train运行配置中的形参中,并运行train

图像分类训练自己的任务及模型评估_第6张图片

这里遇到报错不用管,再打开work_dirs可看到里面生成了一个resnet18_8xb32_in1k.py文件夹,打开后里面有一个resnet18_8xb32_in1k.py文件,我们复制一下这个文件,再打开pycharm

图像分类训练自己的任务及模型评估_第7张图片

 将刚刚复制的文件粘贴到resnet目录图像分类训练自己的任务及模型评估_第8张图片

 此时会出现一个弹窗,我们可以自定义名字图像分类训练自己的任务及模型评估_第9张图片

 三.修改参数

首先修改num_classes,自己数据集有多少个类就修改成多少,注意model中两处num_classes都得改,否侧会显示pred和target不一致。训练中如显存过小可更改size(例如224修改成112等)

图像分类训练自己的任务及模型评估_第10张图片

 其次要改路径,这里训练集和验证集路径改成自己的即可,如有报错路径问题,可尝试改为绝对路径 。

图像分类训练自己的任务及模型评估_第11张图片

没做测试集,把测试集路径改为验证集一样即可。evaluation = dict(interval=1, metric='accuracy')中的interval改为10,checkpoint_config = dict(interval=1)中interval也改为10

我这设定的是10个epoch保存一次,也可以自己修改

图像分类训练自己的任务及模型评估_第12张图片

下边我设定的是一共100个epoch,

runner = dict(type='EpochBasedRunner', max_epochs=100)

也可以自己定义。 work_dir可以自己设置路径,我这里是在work_dir文件中新建了一个文件夹作为路径。

图像分类训练自己的任务及模型评估_第13张图片

 四.定义标签的两种方法

1.直接在imagenet修改

imagenet中定义了1000多个类(CLASSES),如果想直接在imagenet修改运行,可直接将这1000多个类替换成自己数据集中训练集对应的标签

图像分类训练自己的任务及模型评估_第14张图片

 我这里修改的是三十个水果种类对应的标签(注意不要用中文,识别不了)图像分类训练自己的任务及模型评估_第15张图片

 标签修改完后复制我们自己新建模型的绝对路径将其传入到train的形参中,点击确定后,再运行train就可以训练自己的数据集了图像分类训练自己的任务及模型评估_第16张图片

 2.新建文件并注册

修改文件最好不在源文件上修改,故这里我们新建属于我们自己的

先复制上面的imagenet.py文件,粘贴到datesets文件中,弹出名字也可自定义,我这里修改成了fruit30,先把class改成自己的。此处我将ImageNet改成了Fruit30

图像分类训练自己的任务及模型评估_第17张图片

 同样的将里边标签名改成自己数据集中训练集对应的

图像分类训练自己的任务及模型评估_第18张图片

 我们点开datesets下的__init__.py文件,仿照上面的格式添加from .fruit30 import Fruit30

再把我们刚刚新建的类名Fruit30添在后边。

然后我们就可以将自己新建模型的绝对路径将其传入到train的形参中,运行train训练自己的数据集了。

图像分类训练自己的任务及模型评估_第19张图片

 五.单张图片测试

训练完成100个epoch后可以看到我们work_dir目录下生成了如下文件,我们拿epoch_100.pth进行测试,先复制其路径

图像分类训练自己的任务及模型评估_第20张图片

 再打开demo下的image_demo.py,粘贴路径并注释,把我们自己建的模型文件也一并粘贴过来

图像分类训练自己的任务及模型评估_第21张图片

从我们数据集train里随机复制一张图到demo路径下

图像分类训练自己的任务及模型评估_第22张图片 我这里复制的图片为1472.jpg,同样将其复制到image_demo.py下粘贴复制注释,如下:

#1472.jpg
#../configs/resnet/fruit30_resnet18_8xb32_in1k.py
#../tools/work_dirs/fruit30/epoch_100.pth

图像分类训练自己的任务及模型评估_第23张图片

 把我们写好的配置传入image_demo.py的参数中,运行image_demo.py图像分类训练自己的任务及模型评估_第24张图片

 可看到下面输出了类别标签,与图片相对应

图像分类训练自己的任务及模型评估_第25张图片

 六.模型评估

首先我们在work_dir下自己的文件里(我这是fruit30)目录下创建一个文件夹用来保存自己的批量测试的图片,然后在test.py文件里传入参数如下(改为自己的路径)运行test

#../configs/resnet/fruit30_resnet18_8xb32_in1k.py
#../tools/work_dirs/fruit30/test1/epoch_100.pth
#--show-dir ../tools/work_dirs/fruit30/test1/result
#--metrics
#accuracy
#recall

图像分类训练自己的任务及模型评估_第26张图片

 运行完后可以看到我们新建的文件夹下多了评估好的带标签的图片

图像分类训练自己的任务及模型评估_第27张图片

你可能感兴趣的:(分类,python,数据挖掘)