猴子?狒狒?傻傻分不清楚——制作tfrecord数据集并利用卷积神经网络训练实例

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:38   2640   0

去年年底学习了深度学习的相关知识,但是寒假回来之后忘得也差不多了。。。为了巩固下所学知识,近期利用卷积神经网络做了一个小实例。卷积神经网络是一种多层神经网络,擅长处理图像特别是大图像的相关机器学习问题。卷积网络通过一系列方法,成功将数据量庞大的图像识别问题不断降维,最终使其能够被训练。为了测试卷积神经网络的性能,特地选择了猴子和狒狒这两种长得差不多的动物图片进行训练。

【step1:数据准备】

首先为了方便之后制作TFRecord数据集和训练,先在一个文件下建立两个文件夹"train" 和 "test":

然后分别进入这两个文件夹中,创建存放两种动物图片的文件夹"monkey"和"baboon":

现在文件夹中还是空的,没有现成的数据集,于是我通过百度爬虫获取了大约2000张猴子和狒狒的图片,爬虫脚本如下:

# -*- coding: utf-8 -*-
"""根据搜索词下载百度图片"""
import re
import sys
import urllib
import requests

keyWord = '狒狒'
savePath = 'E:/python/2019_02_24/train/baboon/'

def get_onepage_urls(onepageurl):
    """获取单个翻页的所有图片的urls+当前翻页的下一翻页的url"""
    if not onepageurl:
        print('已到最后一页, 结束')
        return [], ''
    try:
        html = requests.get(onepageurl)
        html.encoding = 'utf-8'
        html = html.text
    except Exception as e:
        print(e)
        pic_urls = []
        fanye_url = ''
        return pic_urls, fanye_url
    pic_urls = re.findall('"objURL":"(.*?)",', html, re.S)
    fanye_urls = re.findall(re.compile(r'<a href="(.*)" class="n">下一页</a>'), html, flags=0)
    fanye_url = 'http://image.baidu.com' + fanye_urls[0] if fanye_urls else ''
    return pic_urls, fanye_url


def down_pic(pic_urls):
    """给出图片链接列表, 下载所有图片"""
    for i, pic_url in enumerate(pic_urls):
        try:
            pic = requests.get(pic_url, timeout=15)
            string = savePath + str(i + 1) + '.jpg'
            with open(string, 'wb') as f:
                f.write(pic.content)
                print('成功下载第%s张图片: %s' % (str(i + 1), str(pic_url)))
        except Exception as e:
            print('下载第%s张图片时失败: %s' % (str(i + 1), str(pic_url)))
            print(e)
            continue


if __name__ == '__main__':
    keyword = keyWord  # 关键词, 改为你想输入的词即可, 相当于在百度图片里搜索一样
    url_init_first = 'http://image.baidu.com/search/flip?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1497491098685_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&ctd=1497491098685%5E00_1519X735&word='
    url_init = url_init_first + urllib.parse.quote(keyword, safe='/')
    all_pic_urls = []
    onepage_urls, fanye_url = get_onepage_urls(url_init)
    all_pic_urls.extend(onepage_urls)

    fanye_count = 0  # 累计翻页数
    while True:
        onepage_urls, fanye_url = get_onepage_urls(fanye_url)
        fanye_count += 1
        # print('第页' % str(fanye_count))
        if fanye_url == '' and onepage_urls == []:
            break
        all_pic_urls.extend(onepage_urls)

    down_pic(list(set(all_pic_urls)))

其中keyWord就是你想要搜索的关键词,savePath就是存放路径,运行脚本后,程序会自动从百度上自动下载该类图片到你设置的路径下。下载完毕后,将某些无法显示,或者无关的图片删除。最后为了方便,直接剪切小部分图片放入对应类别的test文件夹中。

【step2:制作TFRecord数据】

制作TFRecord数据的脚本网上有很多,大致都是差H NX\ K JHZ[ NX\ Bk.byH NY\XXJ K JBH NX\\XXJJBXY N\\J K BH N[J]W^Y\  XYJH JKZ[JB H NX^ JB NY\XXJ K  JB NX\\XXJJB N[J]W^Y\   KH KZ[JB NX^ BNY\XXJ K  JBNX\\XXJJBN[J    N  ] N\\J K JBW NX^Y\˙[WXY  ] X]][NX^ Bk.by.9cB[H N]YX[JH WJB[H NYXX[X^[W]]X[N]NJBiyki.h9` 9c%[\ N\XXJ Z[XIN[BX[X\[]H NZ[^[X[XJ [\ L  JBby/&9c%fjZ[\ NZ[Y[S[Z^\X[X\[]JKZ[[Z^J[K[\ N[\ BZ[\ NZ[Y[S[Z^\ YKM KZ[[Z^J[JBXYX[ N\]X[ \^ W JK\^ K JJBX\X NYXX[XYX[  BNNNo 9iyNNN N[ B[[\XX\[]X[^\ JBZ[\Y]YW[\N\BH[[ ML N[XY X[ N[XY]X[]JBX[ N ^YJ \IN VX[HH[ X[ BZ[\ [YYXN[XY NX[ Z[_K[N\BYH H  NNZ[\X NX\X][ YYXN[XY NX[K[N\B[  \ Y Z[[X\X YKZ[\XJB[XY X[ N[XY\X[\JBX[ N ^YJ \IN VX[B[ [\Y N\X\X YX\X][ YYXN[XY NX[K[N\JO O O[OH^ Z[[L/ :)y#+g*9c 9nyl9kf9&I 9ioz)yZ[YW]al:/c9dnni9/o"zhnnny(yyg*:+y/"/h9n/&. 9/..9% !Lxc%bndnnd)b&yg*9 9d#/c9b9&y/h9bn.#y/&l$y(z`&+y."9(ygk+/aky."am9ioy% (yg#ycb, y. 9o 9i$y..+"9cb9aiyh%hnyd#c9.-y"y.ye b,9.yc/(yl:),9bni.ycyc9./*e /[X\"[OH^ Z[[L 9d#$z+yo9(yg..XN[OH^ Z[[L[Y[H\HHZYHNMHZZ[XZZ[[^][KM KMMLYMX KHL [OH^ Z[[Ln.. M Ik"y/cf..:`"y. 9`+ I+#(ygm.#y .+" 9."j9fa.#yo-9kd9d9eo*`"y.a.b!.#y./+d l#&yd9kd9ioy`+ 9- c%fayo9i&+&*/:+glydync [OH^ Z[[Lodiyo"XN[OH^ Z[[LKc9aiyi&`&`d9++i&.*.#yd#9i)9cm.:/c9cm/-9oy.g&. 9.kn"y. 9kn+bx [OH^ Z[[L/X]\HX\9.*l9$z++...nc$ 9!)odg9i)9 $y9nML 9(I/. a+y*9. [OH^ Z[[Lg*9b-/g9l9kfX9l9kffa#)/fy&"oIkna"yn+bx [OH^ Z[[L b9i)kf9-l:a[OH^ Z[[L.9i*yc"" c:/:+yn"y.*9nayn"y..#y`d#y+b:e (/)nz+! N[OH^ Z[[L

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP