利用vgg-16登上kaggle Invasive Species Monitoring图像识别比赛五十强
来源:互联网 发布:数据科学入门 mobi 编辑:程序博客网 时间:2024/06/03 18:52
1、简介
比赛简介我用google翻译了一下
葛兰荼哥在格鲁吉亚压倒树木,而甘蔗蟾蜍威胁到全球十几个国家的栖息地。 这些只是许多可以对环境,经济甚至人类健康造成破坏性影响的两种入侵物种。 尽管受到广泛影响,追踪入侵物种的位置和扩散的努力非常昂贵,难以进行规模化。
目前,生态系统和植物分布监测取决于专家知识。 有经验的科学家访问指定的地区,并注意到居住在这些地区的物种。 使用这样高素质的劳动力是昂贵的,时间低效的,不足以满足人类在抽样时不能覆盖大面积的地区。
由于科学家无法对大量地区进行抽样,因此使用一些机器学习算法来预测未被采样的地区入侵物种的存在或不存在。 这种方法的准确性远非最佳,但仍然有助于解决生态问题的方法。
在这次比赛中,参赛者面临挑战,开发算法,以更准确地确定森林和树叶的图像是否含有侵入性绣球。 计算机视觉技术与其他当前技术如航空成像技术可以使入侵物种监测更便宜,更快速,更可靠。
比赛地址:https://www.kaggle.com/c/invasive-species-monitoring/leaderboard
2、操作
首先贴一下自己的排名
接下来我就具体讲讲应该怎么做,代码会全部贴上去,贡献给各位
1、下载数据
大家可以在kaggle上自行下载数据集,然后利用python os模块把数据分成一个训练集跟验证集。这部分代码就不贴了,操作完的结构如下:
以上是训练集的结构,验证集类似。
2、vgg-16
接下来就是利用vgg-16进行预测了,代码贴上来
# coding: utf-8# In[1]:import osimport pandas as pdimport numpy as npimport keras.layers.core as coreimport keras.layers.convolutional as convimport keras.models as modelsimport keras.utils.np_utils as kutilsimport sklearn.metrics as metricsimport keras.preprocessing.image as imageimport keras.callbacks as callbacksimport tensorflow as tffrom keras.applications import ResNet50from keras.layers import Input,Dense,Flattenfrom keras.models import Modelfrom keras.callbacks import EarlyStoppingfrom keras import optimizersfrom keras.models import Sequential, Model, load_modelfrom keras import applicationsfrom keras import optimizersfrom keras.layers import Dropout, Flatten, Densefrom keras.callbacks import ModelCheckpoint# In[8]:dir_data_train = '/home/etcp/szx/flower_data/my_new_train_v1'dir_data_test = '/home/etcp/szx/flower_data/validation'# dir_model = "/etcp/cartype/zoo/sample100/"img_rows,img_cols,img_dim = 224,224,3base_model = applications.VGG16(weights='imagenet', include_top=False, input_shape=(img_rows, img_cols, img_dim))x = base_model.outputx = Flatten()(x)x = Dense(256,activation='relu')(x)x = Dense(1,activation='sigmoid')(x)model = Model(input=base_model.input, output=x)model.compile(loss='binary_crossentropy', optimizer=optimizers.SGD(lr=1e-4, momentum=0.9), metrics=['accuracy'])model.summary()from keras.preprocessing.image import ImageDataGeneratorfrom keras.callbacks import ModelCheckpointbatch_size = 32epochs = 50train_datagen = ImageDataGenerator( rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True)# this is the augmentation configuration we will use for testing:# only rescalingtest_datagen = ImageDataGenerator(rescale=1./255)# this is a generator that will read pictures found in# subfolers of 'data/train', and indefinitely generate# batches of augmented image datatrain_generator = train_datagen.flow_from_directory( '/home/etcp/szx/flower_data/my_new_train_v1', # this is the target directory target_size=(224, 224), # all images will be resized to 150x150 batch_size=32, class_mode='binary') # since we use binary_crossentropy loss, we need binary labels# this is a similar generator, for validation datavalidation_generator = test_datagen.flow_from_directory( '/home/etcp/szx/flower_data/validation', target_size=(224, 224), batch_size=32, class_mode='binary')# model.fit_generator(# train_generator,# samples_per_epoch=200,# nb_epoch = 500,# validation_data=validation_generator,# nb_val_samples=800,# callbacks=[ModelCheckpoint('VGG16-transferlearning.model', monitor='val_acc', save_best_only=True)])# model.load_model('VGG16-transferlearning.model')#model.load_weights('/home/etcp/szx/flower_data/vgg4.h5')model.save_weights('/home/etcp/szx/flower_data/vgg3.h5')
3、模型的预测
将每个图片路径存在all_names
newpath = '/home/etcp/szx/flower_data/test/'import osall_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))
阅读全文
0 0
- 利用vgg-16登上kaggle Invasive Species Monitoring图像识别比赛五十强
- 利用resnet 做kaggle猫狗大战图像识别,秒上98准确率
- kaggle比赛
- kaggle:code 猫狗识别 图像识别TensorFlow图像预处理
- kaggle的手写识别比赛(python sklearn-KNN)
- kaggle比赛集成指南
- Kaggle 比赛入门
- kaggle比赛集成指南
- Kaggle比赛知识简要
- Kaggle比赛整理
- Kaggle—So Easy!百行代码实现排名Top 5%的图像分类比赛
- 转帖一个图像识别方面的应用-Identifying Plant Species
- 新手kaggle比赛总结之一
- python-kaggle比赛资料收集
- kaggle--mnist--knn 比赛入门
- kaggle数据挖掘比赛经验
- kaggle比赛模型融合指南
- kaggle比赛模型融合指南
- Spring:源码解读Spring IOC原理
- 余华:鲁迅是我这辈子唯一讨厌过的作家
- redis初体验
- CSS代码缩写
- iOS动态性(二)可复用而且高度解耦的用户统计埋点实现(Method Swizzling(Hook))
- 利用vgg-16登上kaggle Invasive Species Monitoring图像识别比赛五十强
- golang中结构体转成xml格式
- 高性能设置UIView的圆角以及圆角大小
- 是赚钱多的程序员选择使用空格键,而不是使用空格键使程序员赚钱多
- VUe安装的时候遇到的二个报错。vue@2.2.2 vue-template-compiler@2.3.4 npm 2.15.1 should be =>3.0.0
- 最小生成树
- Python 多线程编程
- 版本控制
- JAVA card 应用开发(五) JCOP的调试方法