国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

15.衛(wèi)星圖片分類(lèi)

singerye / 1326人閱讀

摘要:我們這次用的數(shù)據(jù)集不再是中內(nèi)置的數(shù)據(jù)集,而是自定義的數(shù)據(jù)集,我們先看一下我們的數(shù)據(jù)所有的數(shù)據(jù)都存儲(chǔ)在這個(gè)文件夾中文件夾中有與這兩個(gè)子文件夾分別存放的是飛機(jī)與湖泊的衛(wèi)星圖像目錄導(dǎo)入庫(kù)導(dǎo)入庫(kù)導(dǎo)入庫(kù)數(shù)據(jù)處理數(shù)據(jù)處理數(shù)據(jù)處理獲取

我們這次用的數(shù)據(jù)集不再是tensorflow中內(nèi)置的數(shù)據(jù)集,而是自定義的數(shù)據(jù)集,我們先看一下我們的數(shù)據(jù)??

所有的數(shù)據(jù)都存儲(chǔ)在2_class這個(gè)文件夾中

文件夾中有airplane與lake這兩個(gè)子文件夾

分別存放的是飛機(jī)與湖泊的衛(wèi)星圖像

  • airplane

  • lake

目錄

1??導(dǎo)入庫(kù)

2??數(shù)據(jù)處理

2.1??獲取圖像

2.2??定義標(biāo)簽

2.3??制作標(biāo)簽集

3??加載圖像

4??創(chuàng)建數(shù)據(jù)集

4.1??創(chuàng)建圖片路徑數(shù)據(jù)集

4.2??創(chuàng)建圖片數(shù)據(jù)集

4.3??創(chuàng)建標(biāo)簽數(shù)據(jù)集

4.4??創(chuàng)建圖片+標(biāo)簽數(shù)據(jù)集(總數(shù)據(jù)集)

4.5??定義訓(xùn)練集與測(cè)試集

5??設(shè)置重復(fù),隨機(jī)與batch

6??創(chuàng)建模型

7??編譯模型

8??訓(xùn)練模型

9??保存模型

10??讀取模型

11??預(yù)測(cè)模型


1??導(dǎo)入庫(kù)

我們這里首次用到了glob這個(gè)庫(kù),這個(gè)庫(kù)是python自帶的庫(kù),用于處理路徑中的文件的

random也是Python自帶的庫(kù),用于進(jìn)行一些隨機(jī)的操作


2??數(shù)據(jù)處理


2.1??獲取圖像

首先我們獲取所有的圖像

我們?cè)?_class中有兩個(gè)子文件夾,現(xiàn)在我們都要,所以我們用*表示,后面的*.jpg表示我們要所有的jpg文件

glob.glob的返回值是一個(gè)列表,我們打印出來(lái)看一下

我們可以發(fā)現(xiàn)all_iamge_path的前面都是飛機(jī),后面都是湖泊,所以我們?cè)谶@里要進(jìn)行亂序以達(dá)到更好的訓(xùn)練效果,此處我們使用ramdom.shuffle()

2.2??定義標(biāo)簽

我們定義飛機(jī)的標(biāo)簽為0,湖泊的標(biāo)簽為1,我們先創(chuàng)建一個(gè)字典明確對(duì)應(yīng)關(guān)系

為了最終預(yù)測(cè)方便我們?cè)俣x反過(guò)來(lái)(索引對(duì)標(biāo)簽)的字典

2.3??制作標(biāo)簽集

定義之后我們要為所有的圖像添加標(biāo)簽,我們發(fā)現(xiàn)在路徑中,中間的子文件夾名稱(chēng)就是該圖片對(duì)應(yīng)的標(biāo)簽,所以我們現(xiàn)在把這個(gè)名稱(chēng)取出來(lái)

這里我們要用到str的內(nèi)置方法split,這個(gè)方法我在這個(gè)里面有介紹?python str基本用法_potato123232的博客-CSDN博客

  • 不同系統(tǒng)的路徑分隔符可能有區(qū)別,我們當(dāng)前使用的是windows,用的是雙斜杠(//)

我們打印出來(lái)看一下

3??加載圖像

tensorflow有內(nèi)置讀取文件的方法 tf.io.read_file()參數(shù)為文件路徑

我們現(xiàn)在讀取一個(gè)文件試一下這個(gè)方法

當(dāng)前的類(lèi)型是一堆二進(jìn)制的數(shù)據(jù),我們要將其解碼,使其變?yōu)閠ensor,我們使用tf.image.decode_jpeg()進(jìn)行解碼,第一個(gè)參數(shù)為要解碼的對(duì)象,第二個(gè)參數(shù)為通道格式,我們當(dāng)前為彩色圖像,所以為3

這個(gè)就是我們要用到的類(lèi)型,我們現(xiàn)在先看一下它的shape

前面兩個(gè)是寬高,第三個(gè)是通道(rgb三通道)

再看一下它的dtype

發(fā)現(xiàn)是uint8,我們訓(xùn)練中最好轉(zhuǎn)換為float,我們使用tensorflow的cast方法進(jìn)行類(lèi)型轉(zhuǎn)換

之后我們對(duì)圖像進(jìn)行歸一化,由于當(dāng)前圖像的取值范圍為(0-255)所以我們除255(一般的圖像取值范圍都是0到255)

我們?yōu)榱私窈蠓奖銓⑸厦娴倪^(guò)程封裝成一個(gè)函數(shù)

我們正好梳理一下流程

首先我們需要圖片的路徑,然后讀取該路徑的文件

之后解碼該文件

再之后我們需要加入一步操作,我們剛剛進(jìn)行的是單張的流程,所以不涉及到圖片大小不一的情況,我們?cè)谟?xùn)練的過(guò)程中,將圖片的大小統(tǒng)一會(huì)達(dá)到更好的效果,所以我們此處使用tf.image.resize改變圖像的大小

此處我們將其都改為(256,256)的圖像大小,之后將其類(lèi)型轉(zhuǎn)變?yōu)閒loat32,再之后歸一化


4??創(chuàng)建數(shù)據(jù)集


4.1??創(chuàng)建圖片路徑數(shù)據(jù)集

首先我們創(chuàng)建所有圖片路徑的數(shù)據(jù)集

我們看一下當(dāng)前的路徑集

我們從types可以看出來(lái),現(xiàn)在里面全都是字符串

4.2??創(chuàng)建圖片數(shù)據(jù)集

然后我們將路徑集中的每個(gè)元素都執(zhí)行一遍load_img(),此處我們使用的是tensorflow中的map方法,這個(gè)方法與python內(nèi)置的map方法使用方式相似,我在這里有介紹?python內(nèi)建方法_potato123232的博客-CSDN博客

現(xiàn)在我們?cè)倏匆幌卢F(xiàn)在的圖片數(shù)據(jù)集

4.3??創(chuàng)建標(biāo)簽數(shù)據(jù)集

4.4??創(chuàng)建圖片+標(biāo)簽數(shù)據(jù)集(總數(shù)據(jù)集)

在這一步中我們要把剛剛的圖片數(shù)據(jù)集和標(biāo)簽數(shù)據(jù)集合為一個(gè)數(shù)據(jù)集,我們使用tf.data.Dataset.zip()將兩個(gè)數(shù)據(jù)集合并

  • zip的參數(shù)是元組類(lèi)型,如果不加小括號(hào)會(huì)報(bào)錯(cuò)

4.5??定義訓(xùn)練集與測(cè)試集

我們?nèi)∩厦鎰?chuàng)建的數(shù)據(jù)集一部分作為訓(xùn)練集,另一部分作為測(cè)試集,我們先看一下一共有多少?gòu)垐D片

我們可以使用20%的數(shù)據(jù)進(jìn)行驗(yàn)證,其余圖片進(jìn)行訓(xùn)練,我們現(xiàn)在定義這兩個(gè)數(shù)值,這里由于乘0.2可能會(huì)出現(xiàn)小數(shù),我們的數(shù)量是不能有小數(shù)部分的,所以我們?nèi)≌尾糠?/p>

之后我們跳過(guò)總數(shù)據(jù)集的前test_count個(gè)數(shù)作為訓(xùn)練集,然后取前test_count作為測(cè)試集

  • skip() 跳過(guò),參數(shù)為要跳過(guò)的個(gè)數(shù)

5??設(shè)置重復(fù),隨機(jī)與batch

首先我們定義BATCHSIZE為16,這個(gè)和cpu性能相關(guān),如果cpu性能好可適量增大,BATCHSIZE越大訓(xùn)練速度越快,BATCHSIZE對(duì)訓(xùn)練精度無(wú)影響

此處由于加入了重復(fù),所以隨機(jī)是有必要的(雖然我們上面對(duì)數(shù)據(jù)集加入了初始隨機(jī)),因?yàn)槿绻患尤腚S機(jī)我們每次傳入的圖片順序還是一樣的,對(duì)最終訓(xùn)練的結(jié)果有不好的影響

  • shuffle的參數(shù)名稱(chēng)為buffle_size是在多少個(gè)數(shù)據(jù)內(nèi)進(jìn)行隨機(jī)的意思,batch的參數(shù)名稱(chēng)為batch_size,這兩個(gè)參數(shù)沒(méi)有關(guān)聯(lián)

我們可以發(fā)現(xiàn)與上面的train_ds相比,train_ds加入了一個(gè)維度None,這個(gè)是因?yàn)槲覀兗尤肓薭atch,我們每加入一次batch就會(huì)多出一個(gè)維度,所以我們要注意添加batch的次數(shù)

我們給測(cè)試集也加上batch,測(cè)試集不用加shuffle因?yàn)闊o(wú)論是否亂序都要測(cè)試,而且測(cè)試的順序不影響最終的acc或loss,不用加shuffle就不用加repeat

6??創(chuàng)建模型

我們使用的網(wǎng)絡(luò)為卷積神經(jīng)網(wǎng)絡(luò),我們的網(wǎng)絡(luò)是這樣的

我們看一下這個(gè)模型的summary

  • 這個(gè)模型很像VGG模型,后面會(huì)提到

這里要注意下面幾點(diǎn)

  • 圖像大小

我們卷積到最后圖像大小為(6,6),這個(gè)時(shí)候依然可以使用(3,3)的卷積核進(jìn)行卷積,但如果輸出的圖像大小小于卷積核大小,這個(gè)時(shí)候就不能繼續(xù)卷積了,如果繼續(xù)卷積會(huì)報(bào)錯(cuò)

  • 最后一層的神經(jīng)元個(gè)數(shù)

二分類(lèi)我們最終輸出一個(gè)結(jié)果就可以了,我們可以設(shè)置一個(gè)閾值(一般為0.5),大于或等于閾值我們判定為飛機(jī),小于閾值我們判定為湖泊

7??編譯模型

  • 優(yōu)化器

我們這里沒(méi)有直接使用"adam"這個(gè)字符串,而是使用了tf.keras.optimizers.Adam(),我們使用后面的這種方法可以對(duì)優(yōu)化器添加參數(shù),如果使用前面的方式使用的就是默認(rèn)參數(shù),這里我們修改了學(xué)習(xí)速率,我們把學(xué)習(xí)速率搞小一點(diǎn)

  • 損失

我們的所有l(wèi)oss存放在tf.keras.losses中,上面我們用的是大寫(xiě)的BinaryCrossentropy,這個(gè)和咱們之前直接輸入字符串的效果相同,還有一種小寫(xiě)的,這個(gè)需要添加參數(shù),我們現(xiàn)在暫時(shí)不用這個(gè)

如果我們進(jìn)行多分類(lèi)任務(wù)的話(huà)損失就要改成CategoricalCrossentropy

CategoricalCrossentropy有個(gè)參數(shù)是from_logits,如果我們?cè)跇?gòu)建神經(jīng)網(wǎng)絡(luò)時(shí)最后一層沒(méi)有激活函數(shù),則from_logits就置為T(mén)rue,如果我們有激活函數(shù)就置為False

8??訓(xùn)練模型

首先我們定義訓(xùn)練集與測(cè)試集的每一個(gè)epoch所進(jìn)行的批次數(shù)

之后我們使用fit()對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練

訓(xùn)練之后我們將結(jié)果繪制成曲線看一下情況

  • acc

  • loss

發(fā)現(xiàn)準(zhǔn)確率已經(jīng)超過(guò)了0.95,這個(gè)在實(shí)際生活中的某些場(chǎng)合中已經(jīng)達(dá)到了可以使用的程度


9??保存模型

像這種CNN的模型訓(xùn)練的時(shí)間比較漫長(zhǎng),所以我們此處先簡(jiǎn)單介紹一下如何保存模型,訓(xùn)練后我們對(duì)訓(xùn)練好的模型進(jìn)行保存,之后我們?cè)俅我褂玫竭@個(gè)模型的時(shí)候就不需要再訓(xùn)練了

運(yùn)行結(jié)束后會(huì)出現(xiàn)這樣一個(gè)文件夾

里面有這些文件,這個(gè)就不在這里多介紹了,后面會(huì)具體的提到如何保存模型

10??讀取模型

這個(gè)時(shí)候我們就再另一個(gè)新開(kāi)的py文件中讀取模型了

11??預(yù)測(cè)模型

我們先從百度上找一張飛機(jī)的圖片與湖泊的衛(wèi)星圖片,當(dāng)然我們也可以直接使用數(shù)據(jù)集中的圖片,但是如果找原來(lái)的圖片意義不大,因?yàn)閺挠?xùn)練數(shù)據(jù)中找的圖不能驗(yàn)證模型的成果

我們訓(xùn)練的數(shù)據(jù)怎么處理的原數(shù)據(jù),在預(yù)測(cè)的時(shí)候也要對(duì)被預(yù)測(cè)圖片進(jìn)行一遍相同的處理,所以我們要再次使用一次上面定義的load_img()

首先定義load_img()

然后使用load_img()

我們看一下它的shape

發(fā)現(xiàn)shape是三維的,而我們訓(xùn)練時(shí)的圖像是四維的,我們需要再提升一個(gè)維度

現(xiàn)在我們就可以進(jìn)行預(yù)測(cè)了

我們發(fā)現(xiàn)得到了一個(gè)概率值,這個(gè)值越靠近1就是越像湖泊,越靠近0就越像飛機(jī),那我們現(xiàn)在就可以直接進(jìn)行判斷了

為了方便我們現(xiàn)在把預(yù)測(cè)的過(guò)程也封裝成一個(gè)函數(shù)

現(xiàn)在我們用這個(gè)函數(shù)預(yù)測(cè)一樣剛剛湖泊的圖片

如果想把圖片展示出來(lái),然后加上預(yù)測(cè)的文字,那么我們可以使用opencv,方法在這里可以找到?1.圖像基本操作_potato123232的博客-CSDN博客_圖像基本操作

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/122574.html

相關(guān)文章

  • 無(wú)線網(wǎng)絡(luò)技術(shù)學(xué)習(xí)總結(jié)

    摘要:通過(guò)通信線路連入通信子網(wǎng)終端是用戶(hù)訪問(wèn)網(wǎng)絡(luò)的界面網(wǎng)絡(luò)操作系統(tǒng)是相對(duì)于主機(jī)操作系統(tǒng)而言的。接收方使用同一擴(kuò)頻碼進(jìn)行擴(kuò)解。 目錄 一、計(jì)算機(jī)網(wǎng)絡(luò) 1.計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)概述 2.計(jì)算機(jī)網(wǎng)絡(luò)分類(lèi) 3.無(wú)線網(wǎng)絡(luò)分類(lèi) 二、無(wú)線通信和網(wǎng)絡(luò)仿真技術(shù)基礎(chǔ) 1.基本概念 2.調(diào)制 (1)、概述 (2)、常用方式 ...

    animabear 評(píng)論0 收藏0
  • 從RocketMQ我們學(xué)到了什么之NameServer

    摘要:故事中的下屬們,就是消息生產(chǎn)者角色,屋子右面墻根那塊地就是消息持久化,呂秀才就是消息調(diào)度中心,而你就是消息消費(fèi)者角色。下屬們匯報(bào)的消息,應(yīng)該疊放在哪里,這個(gè)消息又應(yīng)該在哪里才能找到,全靠呂秀才的驚人記憶力,才可以讓消息準(zhǔn)確的被投放以及消費(fèi)。 微信公眾號(hào):IT一刻鐘大型現(xiàn)實(shí)非嚴(yán)肅主義現(xiàn)場(chǎng)一刻鐘與你分享優(yōu)質(zhì)技術(shù)架構(gòu)與見(jiàn)聞,做一個(gè)有劇情的程序員關(guān)注可了解更多精彩內(nèi)容。問(wèn)題或建議,請(qǐng)公眾號(hào)留言...

    wangbjun 評(píng)論0 收藏0
  • 從RocketMQ我們學(xué)到了什么之NameServer

    摘要:故事中的下屬們,就是消息生產(chǎn)者角色,屋子右面墻根那塊地就是消息持久化,呂秀才就是消息調(diào)度中心,而你就是消息消費(fèi)者角色。下屬們匯報(bào)的消息,應(yīng)該疊放在哪里,這個(gè)消息又應(yīng)該在哪里才能找到,全靠呂秀才的驚人記憶力,才可以讓消息準(zhǔn)確的被投放以及消費(fèi)。 微信公眾號(hào):IT一刻鐘大型現(xiàn)實(shí)非嚴(yán)肅主義現(xiàn)場(chǎng)一刻鐘與你分享優(yōu)質(zhì)技術(shù)架構(gòu)與見(jiàn)聞,做一個(gè)有劇情的程序員關(guān)注可了解更多精彩內(nèi)容。問(wèn)題或建議,請(qǐng)公眾號(hào)留言...

    Arno 評(píng)論0 收藏0
  • 【收藏】6000字人工智能科普,高中生都能讀懂 —— Jinkey原創(chuàng)

    摘要:人工智能概述簡(jiǎn)史應(yīng)用領(lǐng)域安防實(shí)時(shí)從視頻中檢測(cè)出行人和車(chē)輛。通過(guò)多張醫(yī)療影像重建出人體內(nèi)器官的三維模型,幫助醫(yī)生設(shè)計(jì)手術(shù),確保手術(shù)為我們每個(gè)人提供康建議和疾病風(fēng)險(xiǎn)預(yù)警,從而讓我們生活得更加健康。 showImg(https://segmentfault.com/img/remote/1460000015971504); 0 引言 本文是《人工智能基礎(chǔ)(高中版)》的讀書(shū)筆記,這本書(shū)的配圖非...

    張巨偉 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<