美文网首页FastAI
FastAI05-多标签问题

FastAI05-多标签问题

作者: 科技老丁哥 | 来源:发表于2019-10-09 12:31 被阅读0次

有很多时候,一张图片的标签并不是只有一个,这种多标签问题也可以用fastAI来轻松解决。

1. 准备数据集

此处的数据集来源于:Kaggle Planet: Understanding the Amazon from Space
下载后即可使用。

这个数据集的标签都位于train_v2.csv中,第一列是图片名称,第二列是标签,用空格分开,可以首先用pandas看看多标签是什么样的。

df = pd.read_csv(path/'train_v2.csv')
df.head()

对于fastAI,数据集的准备最重要的就是准备DataBunch,前面我们使用ImageDataBunch这个子类来轻松准备数据集,但此处使用ImageList类来实现。

首先建立src,指定图片所在的路径,labels所在的路径,以及如何获取labels

np.random.seed(42)
src = (ImageList.from_csv(path, 'train_v2.csv', folder='train-jpg', suffix='.jpg')
       .split_by_rand_pct(0.2)
       .label_from_df(label_delim=' '))

在开始时设定random seed的目的是确保每一次运行时都会得到相同的train set和val set,主要作用于split_by_rand_pct()。

然后将数据集进行增强,包装成databunch,

data = (src.transform(tfms, size=128)
        .databunch().normalize(imagenet_stats))

这几个函数的作用可以解释为:

data = (ImageList.from_csv(planet, 'labels.csv', folder='train', suffix='.jpg')
        #Where to find the data? -> in planet 'train' folder
        .split_by_rand_pct()
        #How to split in train/valid? -> randomly with the default 20% in valid
        .label_from_df(label_delim=' ')
        #How to label? -> use the second column of the csv file and split the tags by ' '
        .transform(planet_tfms, size=128)
        #Data augmentation? -> use tfms with a size of 128
        .databunch())                          
        #Finally -> use the defaults for conversion to databunch

通用性的,可以用show_batch来查看多标签的图片和对应labels,labels位于上方,用;隔开。


2. 训练模型

在模型的构建方面,仍然采用resnet50作为基本模型,使用finetune的思路,但是结果展示的时候,并不是用一般的error_rate或accuracy,而是用accuracy_thresh,这是因为,accuracy获得的是argmax,即最大的probs对应的作为标签,但是对于多标签问题,结果并不唯一,所以用threshold的方式,只要大于这个threshold就认为是labels.

构建模型和metrics的代码为:

arch = models.resnet50
acc_02 = partial(accuracy_thresh, thresh=0.2)
f_score = partial(fbeta, thresh=0.2)
learn = cnn_learner(data, arch, metrics=[acc_02, f_score])

对于分类问题,一般查看结果用F2得分,此处用fbeta里面的参数模型就是F2.
训练5个epochs后,得到结果:


分类准确率达到了0.925,效果非常不错。

相关文章

  • FastAI05-多标签问题

    有很多时候,一张图片的标签并不是只有一个,这种多标签问题也可以用fastAI来轻松解决。 1. 准备数据集 此处的...

  • 无监督多标签问题

    记录一次没有解决方案的问题 最近接到一个任务,需要将两个有关系的数据进行关联,而我的任务就是找到这两个数据之间的关...

  • 多标签分类问题 [case study]

    多标签问题 比如音乐,同一首歌曲有不同的标签,比如流行,pop,R&B,民族等每个实例所属于的类别不是唯一的,同一...

  • 吐槽简书

    不能多标签!!!!!!!!!!!!!!!! 不能多标签!!!!!!!!!!!!!!!! 不能多标签!!!!!!!!...

  • DocumentTitle 中包含多div标签问题

    以下是出现错误的信息:Uncaught Invariant Violation: Minified React e...

  • Caffe | 多标签训练的三种策略

    0.多标签问题 在很多深度学习任务中会用到多标签学习,比如做目标检测任务,如下图所示,图片1中物体类别为1,剩余的...

  • 解决多标签分类问题(包括案例研究)

    由于某些原因,回归和分类问题总会引起机器学习领域的大部分关注。多标签分类在数据科学中是一个比较令人头疼的问题。在这...

  • 多标签分类

    http://www.cnblogs.com/peacepeacepeace/p/9336218.html htt...

  • iOS多标签

    前言 项目中遇到一个多标签的需求,简单介绍下我的实现过程。 需求 具体需求是: 标签的个数不定,可能是0,1,2或...

  • 多标签分类

    参考文章:<><

网友评论

    本文标题:FastAI05-多标签问题

    本文链接:https://www.haomeiwen.com/subject/meiwpctx.html