利用vgg-16登上kaggle 图像识别比赛五十强

  • 2019 年 10 月 29 日
  • 笔记

1、简介

比赛简介我用google翻译了一下 葛兰荼哥在格鲁吉亚压倒树木,而甘蔗蟾蜍威胁到全球十几个国家的栖息地。 这些只是许多可以对环境,经济甚至人类健康造成破坏性影响的两种入侵物种。 尽管受到广泛影响,追踪入侵物种的位置和扩散的努力非常昂贵,难以进行规模化。

目前,生态系统和植物分布监测取决于专家知识。 有经验的科学家访问指定的地区,并注意到居住在这些地区的物种。 使用这样高素质的劳动力是昂贵的,时间低效的,不足以满足人类在抽样时不能覆盖大面积的地区。

由于科学家无法对大量地区进行抽样,因此使用一些机器学习算法来预测未被采样的地区入侵物种的存在或不存在。 这种方法的准确性远非最佳,但仍然有助于解决生态问题的方法。

在这次比赛中,参赛者面临挑战,开发算法,以更准确地确定森林和树叶的图像是否含有侵入性绣球。 计算机视觉技术与其他当前技术如航空成像技术可以使入侵物种监测更便宜,更快速,更可靠。 比赛地址:https://www.kaggle.com/c/invasive-species-monitoring/leaderboard

代码获取

关注微信公众号 datayx 然后回复 kaggle 即可获取。

2、操作

首先贴一下自己的排名

接下来我就具体讲讲应该怎么做,代码会全部贴上去,贡献给各位

1、下载数据 大家可以在kaggle上自行下载数据集,然后利用python os模块把数据分成一个训练集跟验证集。这部分代码就不贴了,操作完的结构如下:

以上是训练集的结构,验证集类似。

2、vgg-16 接下来就是利用vgg-16进行预测了,代码贴上来

3、模型的预测

将每个图片路径存在all_names

newpath = '/home/etcp/szx/flower_data/test/'import os  all_names = []for i in range(1531):    i = i + 1     names = newpath+str(i)+'.jpg'     all_names.append(names)

预测

times = 0for i in range(1531):     times += 1     img_path = all_names[i]     img = image.load_img(img_path, target_size=(224, 224))        x = image.img_to_array(img)        x = np.expand_dims(x, axis=0)    # print x.shape   x = np.float32(x/255.)   preds = model.predict(x,verbose=0)     print(np.max(preds))