摘要
==
给你一张动漫图片,你能告诉我出自哪个动漫吗?今天我们就用GoogLeNet做到这一点。我选择的的动漫有秦岭神树、吞噬星空和秦时明月。图片样例如下:
秦岭神树
秦时明月
吞噬星空
从上面的样例空可以看出,不同的动漫风格差异还是很大的,下面就说说我如何实现动漫分类的。
制作数据集
=====
制作数据集,需要用到从动漫中抽取图片,抽取图片需要用到ffmpeg工具,具体的安装和使用参考:Windows安装ffmpeg,使用ffmpeg从视频中的抽取图像_AI浩-CSDN博客。
然后我们使用python,调用ffmeg实现对动漫视频的批量抽取的逻辑,在D盘中新建两个文件夹,一个文件夹命名qlss,这个文件夹存放动漫视频,一个文件夹是imags,用于存放抽取的图片。Python的代码如下:
import os
创建三个列表用来存储视频文件以及视频地址
file_list = []
file_list_path=[]
filelist = []
源文件目录
dir_path = ‘D:\qlss’
#cmd命令存入str字符串
str = 'ffmpeg ’ + ‘-i {} -ss 00:00:30 -f image2 -vf fps=1/5 -qscale:v 2 …/imags/img_{}%05d.jpg’
filenameList=os.listdir(dir_path)
print(filenameList)
for j in range(len(filenameList)):
filepath=os.path.join(dir_path,filenameList[j])
str_cmd = str.format(filepath, filenameList[j].split(‘.’)[0])
print(str_cmd)
os.popen(str_cmd)
上面代码的思路:遍历视频文件,使用Python在cmd中执行ffmpeg命令实现对图片抽取。
新建项目
新建一个图像分类的项目,data里面放数据集,dataset文件夹中自定义数据的读取方法,这次我不采用默认的读取方式,太简单没啥意思。然后再新建train.py和test.py
在项目的根目录新建train.py,然后在里面写训练代码。
导入所需要的库
=======
我这次选用的模型是inception_v3。
import torch.optim as optim
import torch
import torch.nn as nn
import torch.nn.parallel
import torch.utils.data
import torch.utils.data.distributed
import torchvision.transforms as transforms
from dataset.dataset import SeedlingData
from torch.autograd import Variable
from torchvision.models import inception_v3
设置全局参数
=====