基于卷积神经网络的物体分类识别

前言:

前段时间自己上手之间训练给定的数据集,发现训练精度提高到70%左右就不变了,苦苦调参终究不是王道,准备给它来个曲线救国。到底是我模型的问题?还是数据集的问题,目前我不确定。所以准备另起炉灶,重新制作数据集,从无到有,一步一步实现物体识别。准备开始。

一、制作数据集

毕竟这是实验阶段,尽量准备容易判断的数据集进行实验。所以,咱们准备做一个动物分类的数据集。里面有六类动物数据。训练集每类大约450张图片,测试集每类50张图片。制作过程就是用Python爬去百度图片的数据。
实在是太菜了,还得借鉴别人的代码,正则表达式写法还不会,好歹最终是做出来了。
代码如下:

import re
import requests

#这个是网址,找个百度图片地址复制上即可。
url = 'https://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1552035756177_R&pv=&ic=0&nc=1&z=&hd=&latest=&copyright=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word=%E9%A9%AC'
t=0
i=1
#准备爬取500张图片。说道五百,孙悟空压在五行山下也是五百年,今年下半年......文体两开花......
while t < 500:
    urll=url+str(t)+'&gsm=8c'
    html = requests.get(urll).text
    pic_url = re.findall('"thumbURL":"(.*?)",', html, re.S)
    for each in pic_url:
        print('正在下载第' + str(i + 1) + '张图片,图片地址:' + str(each))
        try:
            pic= requests.get(each, timeout=10)
        except requests.exceptions.ConnectionError:
            print('【错误!】当前图片无法下载')
            continue
        string = 'W:\\picture\\train\\c3horse\\' + "horse_" + str(i) + '.jpg' #自己命名即可,目录要注意设置
        fp = open(string, 'wb')
        fp.write(pic.content)
        fp.close()
        i += 1
        t += 1

我找了六类,最终如下:这是训练集和测试集
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

曾经出现的问题:
1.

  File "D:\Anaconda\lib\urllib\request.py", line 258, in urlretrieve
    tfp = open(filename, 'wb')
OSError: [Errno 22] Invalid argument: 'W:\\picture\train\\cat0.jpg'

原因:自己的路径\train这个与\t制表符发生冲突,因此需要改动改成反斜杠就不会冲突了。
2.
报错:
python3.6报错:AttributeError: ‘str’ object has no attribute ‘decode’
解决:把decode改为encode即可。

参考:
caffe学习笔记(四)–制作自己的数据集train.txt和val.txt,生成LMDB文件
有点用
这个博客好

二、给数据集加标签

这也是重要的一步,因为训练是读取数据就是通过读取txt文件进行的。因此需要建立train.txt和test.txt

注意:创建的时候,txt文件中应该给出的是相对路径,或者说直接读取数据可能可以用相对路径?因为不这样会出现如下错误:
在这里插入图片描述路径错误,所以找不到。

wrong:

seu@seu-HP-Z640:/media/seu/Linux-doc/wwh/caffe$ sh ./data/animal_picture/create_lmdb.sh 
Creating train lmdb...
I0308 21:03:00.933708 10679 convert_imageset.cpp:86] Shuffling data
I0308 21:03:01.937492 10679 convert_imageset.cpp:89] A total of 2699 images.
F0308 21:03:01.937552 10679 db_lmdb.cpp:13] Check failed: mkdir(source.c_str(), 0744) == 0 (-1 vs. 0) mkdir data/animal_picture/animal_train_lmdb failed
*** Check failure stack trace: ***
    @     0x7f071f7415cd  google::LogMessage::Fail()
    @     0x7f071f743433  google::LogMessage::SendToLog()
    @     0x7f071f74115b  google::LogMessage::Flush()
    @     0x7f071f743e1e  google::LogMessageFatal::~LogMessageFatal()
    @     0x7f071fcbe6e8  caffe::db::LMDB::Open()
    @           0x403aaf  main
    @     0x7f071e6b1830  __libc_start_main
    @           0x404b79  _start
    @              (nil)  (unknown)
Aborted (core dumped)

这是因为没建立好lmdb文件之前这个目录就存在了,我需要删除就可以了。
在这里插入图片描述
another wrong:

seu@seu-HP-Z640:/media/seu/Linux-doc/wwh/caffe$ sh ./data/animal_picture/create_lmdb.sh 
Creating train lmdb...
I0308 21:07:35.976945 11569 convert_imageset.cpp:86] Shuffling data
I0308 21:07:36.951099 11569 convert_imageset.cpp:89] A total of 2699 images.
I0308 21:07:36.951357 11569 db_lmdb.cpp:35] Opened lmdb data/animal_picture/animal_train_lmdb
E0308 21:07:36.978814 11569 io.cpp:80] Could not open or find file /media/seu/Linux-doc/wwh/caffe/data/animal_picture/train/c2dog/dog_349.jpg
E0308 21:07:37.081532 11569 io.cpp:80] Could not open or find file /media/seu/Linux-doc/wwh/caffe/data/animal_picture/train/c2dog/dog_52.jpg
E0308 21:
  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值