novakon作者
10年0个月前修改于 10年0个月前IP:台湾
827961
3楼

很快我发现128x128的patch在cpu上慢得无法接受。对各项参数进行调整之后,我生成了新的训练集。

QQ截图20161127183704.png


attachment icon DroneSamples.zip 8.97MB ZIP 79次下载

新训练集是64x64黑白图像,其中50%的图像有无人机,50%的图像没有。在训练“图像中有没有无人机”分类器的过程中,我发现如果这个比例不是50%,比如说有无人机的图像占70%,会导致模型朝“所有图片中都有无人机”的方向收敛,因为预测“全都有无人机”的error(0.3)低于随机预测的error(0.5)。

图像背景大多为天空,少部分为景物。

训练采用tensorflow后端 + keras前端,小规模的CNN,图像上下左右翻转作为数据增强,目前训练集(2500)和测试集(500)的accuracy都超过了0.83。肉眼识别率还没做,但是可以感受一下。

figure_1.png

图中灰色的表示判断正确,红色的表示判断错误。从训练结果来看,天空背景下准确率较高,花草树木背景下准确率较低。

下面是所用的网络结构(keras):

model = Sequential()

model.add(Convolution2D(16, 7, 7, #border_mode='same',
                        input_shape=X_train.shape[1:]))
model.add(Activation('relu'))

model.add(Convolution2D(32, 5, 5, #border_mode='same',
                        input_shape=X_train.shape[1:]))
model.add(Activation('relu'))

model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Convolution2D(32, 7, 7))
model.add(Activation('relu'))

model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))

model.add(Convolution2D(64, 7, 7))
model.add(Activation('relu'))

model.add(MaxPooling2D(pool_size=(4, 4)))
model.add(Dropout(0.5))

model.add(Flatten())
model.add(Dense(16))
model.add(Activation('relu'))
model.add(Dropout(0.1))

model.add(Dense(nb_classes))
model.add(Activation('softmax'))
评论
文号 / 827961

万流景仰
名片发私信
学术分 16
总主题 1270 帖总回复 8407 楼拥有证书:学者 机友 笔友
注册于 2008/03/29 15:34:00最后登录 2022/01/09 14:09:34
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:0

个人简介

已走,勿送

笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的