人工智能创意赛—猫狗识别

本文介绍了基于卷积神经网络(CNN)的猫狗图像识别流程,包括数据准备、网络配置、模型训练和评估。使用CIFAR10数据集,通过数据增强防止过拟合,训练过程中不断优化模型,最终达到较高的识别准确率。

前言:

  1. 虽然人类的识别能力很强大,但是对于高速发展的社会,人类自身识别能力已经满足不了我们的需求,于是就产生了基于计算机的图像识别技术,让计算机代替人类去处理大量的物理信息,解决人类无法识别或者识别率特别低的信息。基于图片识别的思想,我们想做基于卷积神经网络来做一次猫狗识别。
  2. 卷积神经网络学到的模式具有平移不变性,这使得卷积神经网络在处理图像时可以高效利用数据(因为视觉世界从根本上具有平移不变性),它只需要更少的训练样本就可以学到具有泛化能力的数据表示。所以我们采用了基于卷积神经网络来实现我们的猫狗识别。
  3. 我们使用CIFAR10数据集(包含60,000张32x32的彩色图片,10个类别,每个类包含6,000张。其中50,000张图片作为训练集,10000张作为验证集)。这次我们只对其中的猫和狗两类进行预测。这些图片是各种各样,分辨率也各不相同。图片中的猫和狗形状、所处位置、体表颜色各不一样。它们的姿态不同,有的在坐着而有的则不是,它们的情绪可能是开心的也可能是伤心的,猫可能在睡觉,而狗可能在汪汪地叫着。照片可能以任一焦距从任意角度拍下。我们选用卷积神经网络,因为它在图像分类任务上效果很好,它们有着能够自动学习多重抽象层的能力,这些抽象层在给定一个分类任务后又可以对每个类别给出更简单的特征表示。它们能够更好的利用图像的结构信息。
    猫狗分类属于图像分类中的粗粒度分类问题,我们使用的是交叉熵损失函数,该函数在分类任务上比较常用。在预测之前,要对图像进行预处理。首先将图片大小调整为32*32,接着将图像转换成一维向量,最后再对一维向量进行归一化处理。在预测之后,我们定义一个准确率函数,这个可以在我们训练的时候输出分类的准确率。因为训练样本不是很多,所以过拟合是最关心的问题。我们将使用一种针对于计算机视觉领域的新方法,在用深度学习模型处理图像时几乎都会用到这种方法,它就是数据增强。
  4. 最后,我们会根据测试效果进行调整,从而达到更优的效果。
  5. 关于排期规划,我们计划在6月前期完成代码思路及技术选型的任务,在6月中期完成代码的实现,到了6月后期完成代码的优化及改进。们会根据测试效果进行调整,从而达到更优的效果。

img

实践总体过程和步骤如下图

img

Step1:准备数据

(1)首先导入必要的包

paddle.fluid—>PaddlePaddle深度学习框架

os------------->python的模块,可使用该模块对操作系统进行操作

In [1]

#导入需要的包
import paddle as paddle
import paddle.fluid as fluid
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
import os

(2)数据集介绍

我们使用CIFAR10数据集。CIFAR10数据集包含60,000张32x32的彩色图片,10个类别,每个类包含6,000张。其中50,000张图片作为训练集,10000张作为验证集。这次我们只对其中的猫和狗两类进行预测。

img

(3)train_reader和test_reader

paddle.dataset.cifar.train10()和test10()分别获取cifar训练集和测试集

paddle.reader.shuffle()表示每次缓存BUF_SIZE个数据项,并进行打乱

paddle.batch()表示每BATCH_SIZE组成一个batch

(4)数据集下载

由于本次实践的数据集稍微比较大,以防出现不好下载的问题,为了提高效率,可以用下面的代码进行数据集的下载。

!mkdir -p /home/aistudio/.cache/paddle/dataset/cifar/

!wget "http://ai-atest.bj.bcebos.com/cifar-10-python.tar.gz" -O cifar-10-python.tar.gz

!mv cifar-10-python.tar.gz /home/aistudio/.cache/paddle/dataset/cifar/

In [2]

!mkdir -p  /home/aistudio/.cache/paddle/dataset/cifar/
!wget "http://ai-atest.bj.bcebos.com/cifar-10-python.tar.gz" -O cifar-10-python.tar.gz
!mv cifar-10-python.tar.gz  /home/aistudio/.cache/paddle/dataset/cifar/
!ls -a /home/aistudio/.cache/paddle/dataset/cifar/
--2020-01-07 17:50:25--  http://ai-atest.bj.bcebos.com/cifar-10-python.tar.gz
Resolving ai-atest.bj.bcebos.com (ai-atest.bj.bcebos.com)... 182.61.200.195, 182.61.200.229
Connecting to ai-atest.bj.bcebos.com (ai-atest.bj.bcebos.com)|182.61.200.195|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 170498071 (163M) [application/x-gzip]
Saving to: ‘cifar-10-python.tar.gz’

cifar-10-python.tar 100%[===================>] 162.60M  23.5MB/s    in 6.0s    

2020-01-07 17:50:31 (27.1 MB/s) - ‘cifar-10-python.tar.gz’ saved [170498071/170498071]

.  ..  cifar-10-python.tar.gz

In [3]

BATCH_SIZE = 128
#用于训练的数据提供器
train_reader = paddle.batch(
    paddle.reader.shuffle(paddle.dataset.cifar.train10(), 
                          buf_size=128*100),           
    batch_size=BATCH_SIZE)                                
#用于测试的数据提供器
test_reader = paddle.batch(
    paddle.dataset.cifar.test10(),                      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BlackTurn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值