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

本文主要是介绍利用vgg-16登上kaggle Invasive Species Monitoring图像识别比赛五十强,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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 os
import pandas as pd
import numpy as np
import keras.layers.core as core
import keras.layers.convolutional as conv
import keras.models as models
import keras.utils.np_utils as kutils
import sklearn.metrics as metrics
import keras.preprocessing.image as image
import keras.callbacks as callbacks
import tensorflow as tf
from keras.applications import ResNet50
from keras.layers import Input,Dense,Flatten
from keras.models import Model
from keras.callbacks import EarlyStopping
from keras import optimizers
from keras.models import Sequential, Model, load_model
from keras import applications
from keras import optimizers
from keras.layers import Dropout, Flatten, Dense
from 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.output
x = 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 ImageDataGenerator
from keras.callbacks import ModelCheckpointbatch_size = 32
epochs = 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 rescaling
test_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 data
train_generator = train_datagen.flow_from_directory('/home/etcp/szx/flower_data/my_new_train_v1',  # this is the target directorytarget_size=(224, 224),  # all images will be resized to 150x150batch_size=32,class_mode='binary')  # since we use binary_crossentropy loss, we need binary labels# this is a similar generator, for validation data
validation_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 os
all_names = []
for i in range(1531):i = i + 1names = newpath+str(i)+'.jpg'all_names.append(names)

预测

times = 0
for i in range(1531):times += 1img_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.shapex = np.float32(x/255.)preds = model.predict(x,verbose=0)print(np.max(preds))

这篇关于利用vgg-16登上kaggle Invasive Species Monitoring图像识别比赛五十强的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/696856

相关文章

16.Spring前世今生与Spring编程思想

1.1.课程目标 1、通过对本章内容的学习,可以掌握Spring的基本架构及各子模块之间的依赖关系。 2、 了解Spring的发展历史,启发思维。 3、 对 Spring形成一个整体的认识,为之后的深入学习做铺垫。 4、 通过对本章内容的学习,可以了解Spring版本升级的规律,从而应用到自己的系统升级版本命名。 5、Spring编程思想总结。 1.2.内容定位 Spring使用经验

【图像识别系统】昆虫识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50

一、介绍 昆虫识别系统,使用Python作为主要开发语言。通过TensorFlow搭建ResNet50卷积神经网络算法(CNN)模型。通过对10种常见的昆虫图片数据集(‘蜜蜂’, ‘甲虫’, ‘蝴蝶’, ‘蝉’, ‘蜻蜓’, ‘蚱蜢’, ‘蛾’, ‘蝎子’, ‘蜗牛’, ‘蜘蛛’)进行训练,得到一个识别精度较高的H5格式模型文件,然后使用Django搭建Web网页端可视化操作界面,实现用户上传一

【Qt6.3 基础教程 16】 掌握Qt中的时间和日期:QTimer和QDateTime的高效应用

文章目录 前言QTimer:定时任务的强大工具QTimer的基本用法高级特性:单次定时器 QDateTime:处理日期和时间获取当前日期和时间日期和时间的格式化输出日期和时间计算 用例:创建一个倒计时应用结论 前言 在开发桌面应用程序时,处理时间和日期是一个常见且重要的任务。Qt框架提供了强大的工具来处理与时间相关的功能,其中QTimer和QDateTime是最核心的类。本

Linux float int和16进制互相转换

Linux 上float int和16进制互换操作。之前把float转16进制,也就是转成4个字节,方便使用串口传输嘛。使用的方法是: //float 转 16进制float x_pid_p = 15.0;unsigned char * bValue = (unsigned char *)& x_pid_p;printf("%x\t%x\t%x\t%x\n", bValue[0], bVa

2021-02-16物料档案条码添加和蓝牙条码标签打印,金蝶安卓盘点机PDA,金蝶仓库条码管理WMS系统

物料档案条码添加和蓝牙条码标签打印,金蝶安卓盘点机PDA https://member.bilibili.com/platform/upload-manager/article 本期视频我们来讲解一下汉点机PDA条码添加和条码标签蓝牙便携打印: 在实际使用中,我们商品有两种情况: 一种是商品本身就有条码, 比如:超市卖的可口可乐,牛奶等商品,商品本身就有69开头的国标码,那么我们就可以使用盘点

c编程:乒乓球比赛,找出谁和谁对打

//两个乒乓球队进行比赛,各出三人。甲队为A,B,C三人,乙队为X,Y,Z三人。已抽签决定//比赛名单,有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比,编程找出三对选手的对手名单。?#include<stdio.h>int main(){char i,j,k;//i,j,k分别代表A,B,Cfor(i='X';i<='Z';i++){for(j='X';j<='Z';j++)

海洋生物识别系统+图像识别+Python+人工智能课设+深度学习+卷积神经网络算法+TensorFlow

一、介绍 海洋生物识别系统。以Python作为主要编程语言,通过TensorFlow搭建ResNet50卷积神经网络算法,通过对22种常见的海洋生物(‘蛤蜊’, ‘珊瑚’, ‘螃蟹’, ‘海豚’, ‘鳗鱼’, ‘水母’, ‘龙虾’, ‘海蛞蝓’, ‘章鱼’, ‘水獭’, ‘企鹅’, ‘河豚’, ‘魔鬼鱼’, ‘海胆’, ‘海马’, ‘海豹’, ‘鲨鱼’, ‘虾’, ‘鱿鱼’, ‘海星’, ‘海龟

[图解]建模相关的基础知识-16

1 00:00:00,350 --> 00:00:04,130 刚才那个,就相当于,12这个我们可以认为是什么 2 00:00:05,020 --> 00:00:11,360 我们用类图来表达就是,员工、电话 3 00:00:13,320 --> 00:00:15,080 多个 4 00:00:15,090 --> 00:00:16,440 当然这个电话这里 5 00:00:16,970

数据库阿里连接池 druid配置详解 标签: druidspringjavaxml配置阿里池 2016-06-16 00:34 57532人阅读 评论(11) 收藏 举报 版权声明:本文为博主原创文

数据库阿里连接池 druid配置详解 标签: druidspringjavaxml配置阿里池 2016-06-16 00:34  57532人阅读  评论(11)  收藏  举报 版权声明:本文为博主原创文章,未经博主允许不得转载。 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,有不得不使用数据库连接池。数据库连接池有很多选择,c3p、dh

中文字符编码之GBK,UTF-16和UTF-8

编程中经常会遇到这三种字符编码形式的相互转换问题,以至于许多第三方的库不明原因的调用失败,其实很多都是由于第三方库支持的是utf-8而不是windows默认支持的utf-16导致的。 下面介绍一下windows系统下常见的这三种字符编码方式。 GB2312 是我们国家自己国标的汉字编码字符集,该字符集以一个16位的2进制数据单元表示一个汉字,所以能够将两个char型数据单元保存一个汉字。