Python小白逆袭大神(四)

Python小白逆袭大神 作业四

PaddleHub之《青春有你2》作业:五人识别

其实就是利用已经有的模型训练自己的模型,代码已经写好,主要是数据集的问题。图片的来源我也很无奈,没那么多时间去爬了,这里主要讲怎么准备好数据集,并用在模型上,最终达到识别的效果。

首先在桌面新建文件夹dataset,里面再建两个文件夹,train,test,分别存放训练用的图片和测试用的图片,在建四个文本文件,label_list.txt,test_list.txt,train_list.txt,validate_list.txt。如下图:
Python小白逆袭大神(四)_第1张图片
test文件夹里面就是工程里本来就有的五张测试图片,train文件夹下面是

Python小白逆袭大神(四)_第2张图片
再下面就是每个选手的图片了:
Python小白逆袭大神(四)_第3张图片
这里图片的数量挺少的。没在网上爬了。

label_list.txt文本是要分类的标签,有几样就有就个标签,这里有5个。

test_list.txt已经给出来了。要做的就是train,txt。
这里用python写好文件处理的代码,将图片的信息记录到train.txt中,格式跟test.txt挺像的。
Python小白逆袭大神(四)_第4张图片
还要validate_list.txt,这里为了快点就直接采用test_list.txt的内容,相当于验证集和测试集用了相同的图片,其实应该用新的图片的。

准备好了数据集,打包上传到notebook上的文件中,解压,把原来的dataset文件夹删掉。

!unzip -o dataset.zip

这样就可以运行代码了,还有注意几个地方:
1.

%set_env CPU_NUM=1 

这里采用cpu运行的要运行这句代码,GPU就不用了。

from paddlehub.dataset.base_cv_dataset import BaseCVDataset

class DemoDataset(BaseCVDataset):	
   def __init__(self):	
       # 数据集存放位置
       
       self.dataset_dir = "/home/aistudio"
       super(DemoDataset, self).__init__(
           base_path=self.dataset_dir,
           train_list_file="dataset/train_list.txt",
           validate_list_file="dataset/validate_list.txt",
           test_list_file="dataset/test_list.txt",
           label_list_file="dataset/label_list.txt",
           )
dataset = DemoDataset()
print(dataset)

这里我是这样写的,应该有别的写法。这里的添加数据集的路径我改了,也许原来的也是对的,但是我运行失败了,所以这里添加数据的路径改了。
这里可以打印datdset 看看数据集加载的对不对。
3.

config = hub.RunConfig(
    use_cuda=False,                              #是否使用GPU训练,默认为False;
    num_epoch=10,                                #Fine-tune的轮数;
    checkpoint_dir="cv_finetune_turtorial_demo",#模型checkpoint保存路径, 若用户没有指定,程序会自动生成;
    batch_size=3,                              #训练的批大小,如果使用GPU,请根据实际情况调整batch_size;
    eval_interval=10,                           #模型评估的间隔,默认每100个step评估一次验证集;
    strategy=hub.finetune.strategy.DefaultFinetuneStrategy())  #Fine-tune优化策略;

这里如果是cpu运行的话,use_cuda设置为False。这里适当调下参数,这里就修改了训练轮数num_epoch.

其他地方没什么问题,正常运行就可以。最后结果:

[array([[5.94421387e-01, 1.00226685e-01, 7.85720497e-02, 8.43862444e-02,
        1.42393559e-01],
       [4.36579809e-03, 9.79011714e-01, 1.65066647e-03, 7.21962599e-04,
        1.42498752e-02],
       [2.87633508e-01, 1.48473755e-01, 2.94090718e-01, 4.57237177e-02,
        2.24078342e-01]], dtype=float32)]
[0 1 2]
input 1 is dataset/test/yushuxin.jpg, and the predict result is 虞书欣
input 2 is dataset/test/xujiaqi.jpg, and the predict result is 许佳琪
input 3 is dataset/test/zhaoxiaotang.jpg, and the predict result is 赵小棠
[array([[0.16526589, 0.1818647 , 0.0856045 , 0.42717436, 0.1400906 ],
       [0.2454238 , 0.25373325, 0.02422955, 0.16480318, 0.31181023]],
      dtype=float32)]
[3 4]
input 4 is dataset/test/anqi.jpg, and the predict result is 安崎
input 5 is dataset/test/wangchengxuan.jpg, and the predict result is 王承渲

你可能感兴趣的:(Python小白逆袭大神)