数据集使用的Kaggle中辨别狗狗种类的竞赛

在这个项目中,数据集使用的Kaggle中辨别狗狗种类的竞赛,其中包含了将近10000张经过标记的图像,大约涵盖了120种狗狗,除此之外还有数量相当的测试数据。一般来说,这些图像的分辨率、缩放程度都是不同的,其中也可能不止有一只狗,光线也会有差别。下面是数据集中的几张图像。

数据集中各种种类的狗狗数量大致相同,平均每种狗狗有59张图像。以下是数据集中各种类狗狗的数量分布:

正如我们简单分析过的,经过分析的数据集对深度学习框架来说并不复杂,并且有很多简单结构。所以我们可以从数据集中得到各种类精确的结果。

Bottleneck特征

Sober运算符在单一图像通道上的大致表示

如今的技术可以从数据中直接自动提取特征。为此,我们用的是卷积层。每个卷积层都是具有随机初始值的正方形矩阵堆栈。这些值在训练过程中被更新,最终会收敛到适合数据集的特殊过滤器上。

下图展示了深度学习分类器作为特征模块序列的大致表示,将图像从原始的像素表示转换成更加抽象的表示:

bottleneckfeaturesontodisk.

"""

def__init__(self,build_fn,preprocess_fn,source,

target_size=(299,299,3),batch_size=128):

self.build_fn=build_fn

self.preprocess_fn=preprocess_fn

self.source=source

self.target_size=target_size

self.batch_size=batch_size

stream=self.source(

folder=folder,target_size=self.target_size,

batch_size=self.batch_size,infinite=False)

batches=[]

withtqdm.tqdm_notebook(total=stream.steps_per_epoch)asbar:

forx_batch,y_batchinstream:

x_preprocessed=self.preprocess_fn(x_batch)

batches.append(batch)

bar.update(1)

all_features=np.vstack(batches)

np.save(filename,all_features)

returnfilename

之后,我们可以用FeatureExtractor:

fromkeras.applicationsimportinception_v3

extractor=FeatureExtractor(

build_fn=inception_v3.InceptionV3,

preprocess_fn=inception_v3.preprocess_fn,

source=create_files_iterator_factory())

extractor(folder_name,output_file)

BootstrappedSGD

为了让训练过程更加稳定并且可重复,为了达到最佳精度,我们将用bagging扩展SGD,这种方法可以训练SGD分类器的集合,并且能从多个估算器中对反馈取平均值,得出最终的预测。下图是这一过程的展示:

在SGD分类器上应用bagging技术

下面的代码展示了如何创建一个SGD分类器,以及如何计算能反映模型质量的预测标准:

threshold=VarianceThreshold(variance_threshold)

sgd_classifier=SGDClassifier(

alpha=1./len(x_train),

fit_intercept=False,tol=0.001,n_jobs=-1)

bagging=BaggingClassifier(

base_estimator=sgd_classifier,

bootstrap_features=True,

n_jobs=-1,max_samples=0.5,max_features=0.5)

x_thresh=threshold.fit_transform(x_train)

bagging.fit(x_thresh,y_train)

train_metrics=build_metrics(bagging,x_thresh,y_train)

x_thresh=threshold.transform(x_valid)

valid_metrics=build_metrics(bagging,x_thresh,y_valid)

returnbagging,train_metrics,valid_metrics

defbuild_metrics(model,X,y):

probs=model.predict_proba(X)

preds=np.argmax(probs,axis=1)

metrics=dict(

probs=probs,

preds=preds,

loss=log_loss(y,probs),

accuracy=np.mean(preds==y))

第四行是创建一个SGD分类器的示例,其中有一对正则化参数和运用CPU训练模型的权限。第十行创建了一组分类器,15—20行训练了分类器,并计算了几个表现标准。

SGD基准

现在有很多可用的预训练深度学习结构,它们在我们的数据集上用作特征提取器时是否表现得同样好?下面让我们来看看。

我们选取了以下三种结构来训练SGD分类器:

InceptionV3

InceptionResNetV2

Xception

Keras中都包含这三种架构,每个分类器在9200个样本上进行训练并在1022个图像上进行验证。下表展示了训练和验证自己的预测结果。

这个分数还不错!对于如此简单的实现过程,这个结果已经很令人满意了。

对预训练模型进行微调

在SGD分类器上对bottleneck特征的训练已经表示,这些特征能达到良好的预测效果。然而,我们能够通过重新训练顶层、对模型进行微调来提高分类器的精度呢?同样,我们能否通过对训练集的预处理,让模型在过拟合上更稳定,并且提高它的泛化能力?

微调的目的是让预训练模型适应数据。大多数情况下,重新使用的模型都会在含有不同种类的数据集上训练。所以,你需要将网络顶端的分类层替换掉。如图所示:

微调过程示意

新顶层的训练过程和之前的并没什么不同,我们只用了不同的分类器。但是,我们可以用数据增强的方式提高网络的泛化能力。每个微调过的网络都用稍微改动过的图像训练(例如稍微旋转、缩放等)。

微调基准

为了测试微调后的精确度,我们将添加一个结构:

ResNet50

每个模型进行100次迭代测试,每次有128个样本:

fromkeras.optimizersimportSGD

sgd=SGD(lr=0.001,momentum=0.99,nesterov=True)

下面是数据增强中参数的选择:

transformer=ImageDataGenerator(

width_shift_range=0.2,

height_shift_range=0.2,

zoom_range=0.2,

rotation_range=30,

vertical_flip=False,

horizontal_flip=True)

最后,模型训练过程的实现:

fromkeras.modelsimportModel

fromkeras.layersimportDense

base=create_model(include_top=False)

model=Model(inputs=base.inputs,outputs=x)

train_gen=create_training_generator()

valid_gen=create_validation_generator()

model.fit_generator(train_gen,validation_data=valid_gen)

下表是训练后模型的表现:

与之前的表现相比并没有很大的提升,但是数据增强和预训练InceptionResNetV2网络顶部单一密集层的表现却是最好的。

实际案例

让我们看看模型在陌生图像上的表现到底如何吧,下图是数据集之外的网络图片,模型预测了五种最可能的狗狗品种:

结论

现成的模型在这个项目中的表现十分不错,在狗狗分类数据集上训练之后就能达到精确的结果。我相信如果再增加更多的顶层、“解锁”更多隐藏层、加入正则化技术和更多优化,模型的表现会更好。

但是这一实验的缺点是选择的数据集是从ImageNet上挑选的狗类图片,也就是说我们的网络可能之前就见过它们了。关于这一问题论智君也曾报道过数据集的重复使用所带来的副作用,可能会引起一些偏差。

浏览量

原文标题:拉布拉多还是巴哥?用Keras轻松识别狗子的品种

下载发烧友APP

电子发烧友观察

长沙市望城经济技术开发区航空路6号手机智能终端产业园2号厂房3层(0731-88081133)

THE END
1.你知道你的爱犬属于哪一类吗?最全的狗狗分类都在这每种狗狗都有独特的习性和性格,在选择自己的爱宠前,需要对狗狗做一番了解,以判断是否符合自己,是喜欢安静的狗狗还是好动的狗狗,是要找玩伴还是工作犬。以下狗狗的分类标准,沿用了英国养犬协会(The Kennel Club)的狗狗分类标准。 英国养犬协会成立于 1876年(严格说应为1873年4月4日在伦敦维多利亚街2号的艾伯特大厦...https://www.jianshu.com/p/ed559742d9d2
2.狗狗分类大全全部课件.ppt狗狗分类大全全部课件.ppt 文档分类:幼儿/小学教育|页数:约79页 分享到: 1/79 分享到: 1/79下载此文档 文档信息 页数:79 收藏数:0 顶次数:0 上传人:miao19720107 文件大小:2.15 MB 时间:2020-08-14https://www.taodocs.com/p-415606530.html
3.收藏24种狗狗分类大全,你的狗狗属于哪一类宠物工作犬护卫犬...收藏24种狗狗分类大全,你的狗狗属于哪一类 按照功能的不同,狗勾主要可分为 工作犬 牧羊犬 猎犬 伴侣犬 护卫犬 还有哪些类型欢迎留言呀! 打开网易新闻 查看精彩图片 打开网易新闻 查看精彩图片 打开网易新闻 查看精彩图片 打开网易新闻 查看精彩图片 打开网易新闻 查看精彩图片...https://m.163.com/dy/article/ICEA7Q1605564MRL.html
4.狗狗用途的分类方法有几类宠物领养圣宠宠物官网狗狗用途的分类方法有几类?下面圣宠小编来给大家详细的介绍下: 狗的用途很广,可以用来狩猎,可以用来玩赏,可以用来从事特殊工作或服役。狗按照用途和繁殖目的可以分为:狩猎犬,枪猎犬,更类,工作犬,玩赏犬和家庭犬。 狩猎犬(又称“提”):狩猎犬主要用来帮助人类狩猎,寻找猎物,阻止猎物逃跑,或按主人的指示追捕猎物,...http://www.petjm.com/chongwulingyang/3235.html
5.收藏?24种狗狗分类大全,你的狗狗属于哪一类同时还能大幅减少偷盗牲畜的行为牧羊犬的性格因品种不同而各异,但大多具有体格健壮、警惕性强等特点 猎犬 指经过训练,用来帮助人类打猎的狗,又称猎狗 西班牙猎犬、指示猎犬和寻猎犬属于猎犬中的单猎犬群猎犬大略可分为两类:一类为视觉猎犬,另一列为嗅觉猎犬,主要的区别在于狩猎技巧 你家狗狗属于哪种...https://m.dianping.com/ugcdetail/143783993?sceneType=0&bizType=29&msource=baiduappugc
6.狗狗数据集狗狗数据集评分: 识别狗狗分类数据集。。。 分类数据集2018-01-12 上传大小:23.00MB 所需:49积分/C币 狗狗数据集4385张VOC+YOLO格式 数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4385 标注数量(xml文件个数...https://www.iteye.com/resource/qq_37879432-10202998
1.狗的品种大全常见宠物狗种类有哪些→MAIGOO知识摘要:现在好多人喜欢养狗,宠物狗的类型也多了起来,有的狗养起来非常复杂,有的狗没什么讲究。市面上常见的宠物狗品种有很多,包括哈士奇、藏獒、金毛、贵宾、萨摩耶、博美、雪纳瑞、苏牧、松狮犬、北京犬、吉娃娃、阿拉斯加雪橇犬、喜乐蒂牧羊犬等等,接下来就和小编一起来看看吧。 https://www.maigoo.com/goomai/182080.html
2.狗的种类有哪些(世界狗狗是如何分类的)狗的种类有哪些(世界狗狗是如何分类的) 据统计,目前全世界的家犬品种已达450多种。它们大小不一,大者似狼,小者如猫。 在面貌和毛色上,因为人类驯养的结果,更是五花八门,各有千秋。创立了动物分类系统及动物命名“双名法”的瑞典著名生活学家林奈先生,就将世界上所有的家养的犬种统一定命名为“家犬”,并一直...https://www.welltone.com.cn/kuaixun/8968.html
3.狗的种类有哪些狗狗品种有哪些?暂无答案,快来添加答案吧 https://www.lovechongbang.com/dogbaike/10398.html
4.玩具犬的种类有哪些?(狗狗种类有哪些?)1.犬种类型不同,所适合的饲养方式也会不一样。2.犬种之间存在着很大的差异狗狗品种分类因各国或畜犬协会不同而有差异,但是由于英国养犬协会最早出现在畜犬协会中,所以我们按其分类来介绍,犬种分类共分为七类: 1、玩具犬 说起玩具犬,大家应该耳熟能详了吧,泰迪,博美,巴哥犬,马尔济斯,约克夏,吉娃娃等等,...https://www.juluding.cn/8362.html
5.狗狗品种分类大全世界狗狗品种大全名字字数:71千字 正文语种:简体中文 分类:自然科学 狗狗品种大全 作者:王卫国编 出版社:中国农业出版社 出版时间:2012-03 版次:1 定价: 装帧:平装 开本:32开 纸张:胶版纸 页数:316页 字数:256千字 正文语种:简体中文 丛书:新编农技员丛书 分类:自然科学...http://m.boqii.com/article/442442.html
6.动物百科狗狗动物百科狗狗分类动物百科小狗排在第5位,小兔排在第16位,他们之间有多少只小动物? 小狗排在第5位,小兔排在第16位,他们之间有【10】只小动物 16-5-1=10(只) “狗”的拼音是几声? 三声 狗组词解释: 1、鱼狗 造句:在森林的一片沼泽地带,赫伯特看见一种类似鱼狗的鸟,长着又长又尖的嘴,虽然羽毛发出金属般的光泽,但是并不美丽。https://www.njdsmedia.com/liuxuezhishi/2682.html
7.世界狗狗分类世界狗狗分类-可卡 是世界狗狗中的一种犬种,也被称为卡迪根威尔士柯基犬。可卡犬可分为两个不同的品种:彭布洛克威尔士柯基犬和卡迪根威尔士柯基犬。以下是关于可卡犬的一些特征和特点: 体型:可卡犬的体型中等,属于中小型犬种。成年可卡犬的体重大约在12-15公斤之间。https://www.51buydog.com/?p=46474
8.深度学习图像识别课程毕业项目:狗狗种类识别(4)代码实现六、自己实现狗狗分类整体流程 实现一个算法,它的输入为图像的路径,它能够区分图像是否包含一个人、狗或两者都不包含,然后: 如果从图像中检测到一只狗,返回被预测的品种。 如果从图像中检测到人,返回最相像的狗品种。 如果两者都不能在图像中检测到,输出错误提示。 https://blog.csdn.net/weixin_41770169/article/details/80498138
9....爬取百度图片各种狗狗的图片,使用caffe训练模型分类2. 狗狗分类数据获取 importSpiderBdImg 爬虫的可设置项: g_enable_show: 是否使用有界面浏览器还是使用PHANTOMJS g_enable_proxy: 浏览器的进程是否启用代理,默认不需要,下载原图一定是使用代理没有开关 g_enable_debug: 单进程,单线程调试模式可以debug断点 ...https://github.com/bbfamily/DogJudge
10.狗狗品种的分类你都了解吗?狗狗品种的分类你都了解吗? 世界各地对于犬的分发各有不同,美国的分类法是较为广为接受的一种。它是将狗以它们最初被人们所用于的领域而分为七大类: 1、猎犬Hounds 此类犬都有一个古老的狩猎特性,它们都有很强的嗅觉能力去追踪猎物,而且它们都拥有很快的奔跑速度。 https://www.unjs.com/z/1299007.html
11.四种狗狗的肉垫分类养宠物狗技术方法宠物养殖四种狗狗的肉垫分类 狗爪子 其实狗肉丸子也是有分类的。如果你仔细观察,你会发现不同之处。有些腿短的狗会天生“外八字”,会形成特殊的爪形;有些狗天生轻薄,但缺乏韧性和耐力。边肖会告诉你,其实狗的爪子也可以分为以下四种。 一、猫爪型:'s脚趾形状是小而圆的理想选择。是工作犬常见的趾型。https://www.wycfw.com/yangzhi/132272.html
12.狗狗的尾巴类型分类整个尾巴卷曲于背上或背的两侧(有左卷和右卷之分),如北京犬、秋田犬、藏獒等。 (2)镰状尾: 尾从中部向上或向背部弯曲,但不卷曲,似镰刀状,如比格犬。 (3)松鼠尾: 从尾根处弯向背部,但不卷曲,比镰状尾更接近于背部,如爱尔兰水獭猎犬。 (4)钩状尾: ...https://m.douban.com/note/733020320/
13.发些狗狗的分类和相关情况发信人: zhangjingsi (zhangjingsi), 信区: Pet 标 题: 发些狗狗的分类和相关情况 发信站: ...https://bbs.byr.cn/article/Pet/30228