從頭實現(xiàn)一個自己的汽車識別分類器(上)--爬取數(shù)據(jù)篇

目錄:
爬取數(shù)據(jù)篇
訓練模型篇
汽車識別篇

不知道大家在日常生活中有沒有朋友或是妹子看見一輛車艾帐,突然問道:這是什么車定躏?
或者我們逛論壇時經常會看見有人傳一張照片然后問:這是什么車患雇?
就像下圖這樣



其他人還好临梗,如果是妹子問,你答不出來荧止,咱面子上掛不住啊~
但是除了老司機屹电,我們不可能每輛車都能說出名稱來,尤其是僅僅憑借汽車內飾或者一些局部特寫跃巡。
那么我們能不能制作一個汽車識別程序危号,讓程序自動識別車型呢。
今天我決定通過卷積神經網絡素邪,從頭實現(xiàn)一個汽車識別分類器外莲。

大體流程如下

  • 爬取數(shù)據(jù)、清洗數(shù)據(jù)
  • 搭建模型兔朦、訓練模型
  • 模型識別汽車圖像

先表明一下操作環(huán)境:
操作系統(tǒng):ubuntu18.04
python版本:3.7
pytorch版本:1.2
GPU:1060
CUDA:10.1
另外:ubuntu自帶的輸入法真難用偷线,如果有錯別字請自行聯(lián)想:)

爬取數(shù)據(jù)篇

這里爬取的目標是汽車之家圖片板塊下關注度排行的各類型(如微型車磨确、小型車、SUV等)下的汽車各9種淋昭。合集應該是81種(但是我爬取了90種俐填,可能是HTML里多了一類汽車的鏈接)



點擊其中一個汽車(比如奔馳AMG GT),是此汽車的分類目錄翔忽,如下圖


將此分類下的圖像全部爬取下來英融。以便網絡可以識別汽車的不同角度以及各種局部信息。
爬取的結果如以下圖展示:



可以看到圖片數(shù)據(jù)全部放在了all_cars這個文件夾下歇式,并且按車類放在了各自的文件夾里驶悟。一共16萬多張圖片,占用3.5G材失。



另外值得一提的是痕鳍,為了節(jié)省抓取時間和訓練時間以及儲存空間~×蓿~
我抓取的是展示用的縮略圖(圖像尺寸為200 * 180)笼呆,并非為1024 * 768的原圖。
下面貼出爬蟲代碼(car.py)
import requests
from lxml import etree
from os.path import join
import os
import time

base_url = 'https://car.autohome.com.cn'
headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36'
    }

# 獲取html文檔旨别,方便下面的函數(shù)調用
def get_html(url):
    r = requests.get(url, headers=headers)
    r.encoding = r.apparent_encoding
    html = etree.HTML(r.text)
    return html

# 獲取汽車的名稱和圖冊鏈接
def get_car(url):
    html = get_html(url)
    links = html.xpath('//div[@id="levelContent"]/div/ul/li/a/@href')
    for link in links:
        link = base_url + link
        get_calsses(link)

# 獲取汽車的各分類的圖冊鏈接
def get_calsses(url):
    html = get_html(url)
    links = html.xpath('//ul[@class="search-pic-sortul"]/li/a/@href')
    for link in links:
        link = base_url+link
        get_img_url(link)

# 獲取圖片地址
def get_img_url(url):
    html = get_html(url)
    links = html.xpath('//div[@class="uibox-con carpic-list03 border-b-solid"]/ul/li/a/img/@src')
    name = html.xpath('//h2[@class="fn-left cartab-title-name"]/a/text()')[0]
    for link in links:
        link = 'https:' + link
        # print(link)
        save_img(name, link)
    try:
        next_page = html.xpath('//div[@class="page"]/a[last()]/@href')[0]
        next_page = base_url + next_page
        if 'html' in next_page:
            get_img_url(next_page)
            time.sleep(0.5)
    except:
        pass


# 保存圖片
def save_img(name, url):
    img_name = url.split('_')[-1]
    img = requests.get(url, headers=headers)
    root = join('cars', name)
    filename = join(root, img_name)
    if not os.path.exists(root):
        os.makedirs(root)
    with open(filename, 'wb') as f:
        f.write(img.content)
        print('正在下載:', filename)


if __name__ == '__main__':
    url = 'https://car.autohome.com.cn/pic/index.html'
    get_car(url)
    print('下在完成诗赌!')

最后說一下,爬蟲爬取下來的可能會有錯誤的秸弛,會給訓練帶來麻煩铭若,這里再貼出清理錯誤的圖片的代碼。

import imghdr
import os
from torchvision.datasets import ImageFolder


data_set = ImageFolder('./all_cars')
print(data_set.imgs)
for img, _ in data_set.imgs:
    img_type = imghdr.what(img)
    if img_type == None:
        os.remove(img)
        print('已刪除無效文件:', img)

OK, 數(shù)據(jù)爬取和清洗已經介紹完了递览,改天我換個搜狗輸入法叼屠,繼續(xù)~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市绞铃,隨后出現(xiàn)的幾起案子镜雨,更是在濱河造成了極大的恐慌,老刑警劉巖儿捧,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冷离,死亡現(xiàn)場離奇詭異,居然都是意外死亡纯命,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門痹栖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亿汞,“玉大人,你說我怎么就攤上這事揪阿×莆遥” “怎么了咆畏?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長吴裤。 經常有香客問我旧找,道長,這世上最難降的妖魔是什么麦牺? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任钮蛛,我火速辦了婚禮,結果婚禮上剖膳,老公的妹妹穿的比我還像新娘魏颓。我一直安慰自己,他們只是感情好吱晒,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布甸饱。 她就那樣靜靜地躺著,像睡著了一般仑濒。 火紅的嫁衣襯著肌膚如雪叹话。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天墩瞳,我揣著相機與錄音驼壶,去河邊找鬼。 笑死矗烛,一個胖子當著我的面吹牛辅柴,可吹牛的內容都是我干的。 我是一名探鬼主播瞭吃,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼碌嘀,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了歪架?” 一聲冷哼從身側響起股冗,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎和蚪,沒想到半個月后止状,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡攒霹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年怯疤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片催束。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡集峦,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情塔淤,我是刑警寧澤摘昌,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站高蜂,受9級特大地震影響聪黎,放射性物質發(fā)生泄漏。R本人自食惡果不足惜备恤,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一稿饰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧烘跺,春花似錦湘纵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至脖咐,卻和暖如春铺敌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背屁擅。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工偿凭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人派歌。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓弯囊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親胶果。 傳聞我的和親對象是個殘疾皇子匾嘱,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內容

  • 《六項精進》 大綱,背誦0遍早抠,共363遍 《 大學》誦讀1遍霎烙,共225遍 其他經典 和孩子一起背誦中國少年說 日行...
    a92bbf37be2b閱讀 67評論 0 0
  • 隨著移動互聯(lián)網的普及,快餐閱讀進入興盛期蕊连,全民閱讀時代隨之到來悬垃,很多人意識到閱讀的重要性,開始培養(yǎng)閱讀的習慣甘苍〕⑷洌可是...
    蹣跚書步閱讀 615評論 1 5
  • It is not difficult to imagine a world short of ambition....
    CIAAIA閱讀 582評論 0 0