数据集使用的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.12种最适合懒人养的狗狗巴哥犬松狮犬比熊犬狗狗腊肠犬西施...打开网易新闻 查看精彩图片 12种最适合懒人养的狗狗 想养狗又怕太麻烦?别担心,有些狗狗天生就是“懒人”的好伙伴!它们性格温顺,运动量小,照顾起来也相对省心。下面就给大家盘点一下12种最适合懒人养的狗狗,看看有没有你心仪的吧!1. **法国斗牛犬**法斗那憨憨的表情,真是让人一眼就爱上。它们体型小,不需...https://m.163.com/dy/article/JHDFCJHE0556AMNW.html
2.世界名种宠物狗大全世界名种宠物狗大全 雄承 1.拉布拉多寻回犬 (Labrador Retriever)拉布拉多犬或称拉布拉多拾猎犬是一种中大型犬类,天生个性温和、活泼、没有攻击性和智商高,是适合被选作导盲犬或其他工作犬的狗品种,跟黄金猎犬(金毛寻回犬)、哈士奇并列三大低攻击性犬类之一。在美国犬业俱乐部中拉布拉多是目前登记数量最多的品种。 https://www.meipian.cn/38u8n6ma
3.狗类大全.pdf狗类大全.pdf,犬种百科 小型犬 腊肠犬迷你雪纳瑞犬北京犬 巴哥刚毛猎狐梗平毛猎狐梗 串串 博美犬西施犬吉娃娃犬 日本尖嘴犬约克夏西高地白梗蝴蝶犬 迷你品玛尔济斯 贝灵顿梗澳大利亚丝毛梗卷毛比雄犬 中型犬 喜乐蒂牧羊犬西伯利亚哈士奇美国可卡犬英国可卡犬 比格犬 标准雪https://max.book118.com/html/2017/1211/143760719.shtm
1.优品影视高清影视最新电影电视剧优品影视是看高清电影网站,在这里可以看优品电影视频在线观看免费,优品电影视频在线观看网站,洋葱影视大全免费等各类喜剧片、动作片、科幻片等免费电影,优品影视收藏我们不迷路,精彩在线阅读。http://cqwebi.com.cn/
2.45种超可爱狗狗大赏,你认识几种?爱狗者有爱心哦目前是比较稀有的品种。它最初被用作斗犬。所以沙皮的性格非常活跃。没想到他也有王者气质,哈哈。 12.日本柴犬 非常像镜头。柴犬在日本很受欢迎,是一种小型犬。是一种性格温柔听话的狗狗,女孩子都会非常喜欢。 13. 蝴蝶犬幼犬 蝴蝶犬非常平易近人、聪明、快乐、警觉且友善。他身体比看上去更强壮,喜欢户外运动。他...https://xkyczp.com/detail/202915.html
3.狗狗品种大全,45种萌翻天小狗狗狗狗品种大全,45种萌翻天小狗狗 狗是人类的朋友。他们跟随我们,给我们带来快乐和欢笑。自古以来,狗就是人类忠实的朋友,因为它们给我们带来安全,让我们在半夜不再害怕孤独。那么下面的45个饲养员你认识几个呢? 1.拉布拉多幼犬 忠诚、冷静、聪明,对孩子们放心,总是满足和快乐,警惕入侵者,适合郊区生活。他以前是搬运...http://yecyd.com/detail/112293.html
4.狗狗品种大全及图片小狗(狗狗品种大全及图片)导读8月科学教育网小李来为大家讲解下。狗狗品种大全及图片小狗,狗狗品种大全及图片这个很多人还不知道,现在让我们一起来看看吧!一、什么是最... 8月科学教育网小李来为大家讲解下。狗狗品种大全及图片小狗,狗狗品种大全及图片这个很多人还不知道,现在让我们一起来看看吧! https://www.bangkaow.com/xxdt/202401/1361715.html
5.普通土狗的品种大全普通土狗的品种大全 品种狗大全 有哈士奇、藏獒、贵宾松狮、边境牧羊犬、吉娃娃、德国牧羊犬、秋田犬、蝴蝶犬、博美犬、杜宾犬、柴犬等。 1、哈士奇 学名西伯利亚雪橇犬,常见别名哈士奇,昵称为二哈。 西伯利亚雪橇犬是原始的古老犬种,主要生活在在西伯利亚东北部、格陵兰南部。哈士奇名字是源自其独特的嘶哑叫声。http://m.boqii.com/article/58103.html
6.十大大型犬排名大型犬种类大全大型犬有哪些→MAIGOO生活榜推荐入榜>> 纠错>> 投诉侵权>> 网页上相关信息的知识产权归网站方所有(包括但不限于文字、图片、图表、著作权、商标权、为用户提供的商业信息等),非经...狗的十大品种 犬类品种大全 宠物狗的品种有哪些 狗 5.9万+ 世界十大最长寿的宠物狗 狗狗平均寿命排行前十名 什么狗寿命最长 狗 4.9万+ 怎么紧急...https://m.maigoo.com/top/408487.html
7.大型宠物狗的多样品种展示展现各种大小颜色和特征的大型犬类在购买之前,最好先了解该品种的性格特点,并准备好花费时间去学习正确的手势训练方法,以及建立起清晰可行的人际关系。如果你能够承诺给予它足够的情感支持和实际上的照料,那么这种付出将会得到回报,即无条件的情感陪伴。 图片展示:不同年龄阶段的大型犬 随着科技发展,我们现在可以通过各种社交媒体平台轻松地看到各式各样...https://www.lynecx.cn/chong-wu-gou/176086.html
8.狗品种金毛猎犬湿在沐浴以后坐绿色石头在海湾库存图片.图片...愉快和滑稽的跑在黑麦领域的狗品种金毛猎犬画象在秋天 疯狂,逗人喜爱和愉快的狗养殖跑在森林里的金毛猎犬并且获得乐趣在日落 狗类金毛犬在森林中行走 狗类金毛犬在森林中行走 狗类金毛犬在森林中行走 更多库存图片Elena Mordasova。 图集 Related categories ...https://cn.dreamstime.com/%E7%8B%97%E5%93%81%E7%A7%8D%E9%87%91%E6%AF%9B%E7%8C%8E%E7%8A%AC%E6%B9%BF%E5%9C%A8%E6%B2%90%E6%B5%B4%E4%BB%A5%E5%90%8E%E5%9D%90%E7%BB%BF%E8%89%B2%E7%9F%B3%E5%A4%B4%E5%9C%A8%E6%B5%B7%E6%B9%BE-image120477191
9.揭秘宠物犬世界最受欢迎的品种排名及精彩图片展示大全揭秘宠物犬世界:最受欢迎的品种排名及精彩图片展示大全 宠物犬作为人类家庭中不可或缺的一员,拥有各式各样的个性和外观。它们不仅给人们带来快乐,还有助于改善生活质量。根据最新的市场调查和消费者偏好,我们总结了目前最受欢迎的十大宠物犬种,并配以它们独特的图片。 https://www.gurotsr.cn/chong-wu-zi-xun/576825.html
10.宠物品种中文译名应当规范化(组图)随着我国宠物行业的发展,从国外引进的宠物品种越来越多,但由于宠物行业没有形成统一的具有引导规范作用的行业协会,以犬业为例,至今没有形成具有一定规模和有专业兽医、宠物专家和专业育种等专业人士参加指导的犬舍俱乐部,各犬舍在引进品种翻译名称时没有统一的翻译名称规范,基本上是各行其是,或以误传误,导致中文翻译名...http://m.beihai365.com/wap/thread/view-thread?tid=28442
11....狗类品种分类狗分类深度学习最好的迁移学习目标:用CNN实现狗类品种分类 方法:使用ImageNet上预先训练好的VGG16 分析场景:狗类数据集较小,与ImageNet相似度较高 将最后的全连接层删除,换成新的连接层。冻结前面模型的权重,只训练最后一个连接层的权重。 我们将所有的图片,都直接穿过之前的网络一直到红色的最大池化层,做为新的输入。则我们需要训练的网络只...https://blog.csdn.net/weixin_41770169/article/details/80265557
12....宠物狗的品种及图片价格揭秘那些可爱小家伙各大宠物狗品种图片...揭秘那些可爱小家伙:各大宠物狗品种图片一览与价格透明 在选择宠物狗的过程中,很多主人都会迷恋于各种各样的犬种,这些犬种不仅外表独特,而且性格和适应环境的能力也各有千秋。今天,我们就来看看哪些是流行的宠物狗品种,以及它们的图片价格。 哈士奇(Huskies) 哈士奇https://www.syopoo.com/chong-wu-mao/31879.html
13.狗类宠物品种大全从大型犬到小型犬了解各种狗狗的特点在这个充满爱和责任感的世界里,有一种特殊的伙伴永远被人们所喜爱,那就是我们的忠实朋友——狗。它们不仅是我们生活中的一个重要组成部分,更是家庭的一员。今天,我们将带你走进一个广阔而多彩的世界——宠物品种大全。 二、大型犬品种介绍 德国牧羊犬(Alsatian) ...https://www.778sjdhfg.cn/geng-duo-chong-wu/105460.html
14.黄狗头图片(黄狗头照片引发网友热议,成为网络热门话题)黄狗头并不是一种正式的狗品种,而是一个表情包的形象。事实上,黄狗头的形象可以代表许多不同品种的狗,比如英国斗牛犬和法国斗牛犬等。 5. 黄狗头的名字 黄狗头其实没有正式的名字,但人们喜欢称呼它为“柯基犬”或“无尾短腿犬”,这种犬的名字源于它们的体格特点和起源。 https://uslshop.com/jiankangzhishi/202904.html
15.为了用表情打动人,狗类最终进化出一块表情肌一些进化心理学家和解剖学家已经对此做出了解释。于 6 月 17 日发表在《美国国家科学院院刊》(PNAS)上的研究称,狗能够扬起内端的眉毛,让眼睛看起来更宽、更悲伤,是因为它有一块叫做内侧眼提肌的肌肉。通过对狗和狼头部的解剖发现,内侧眼提肌广泛存在于几乎所有品种的狗身上,而在狼身上却没有。 http://wenhui.whb.cn/zhuzhan/kjwz/20190622/271999.html