獨家 | 手把手教你用Python構建你的第一個多標籤圖像分類模型(附案例)

2021-03-02 數據派THU


本文約4600字,建議閱讀12分鐘

本文明確了多標籤圖像分類的概念,並講解了如何構建多標籤圖像分類模型。

介紹

你正在處理圖像數據嗎?我們可以使用計算機視覺算法來做很多事情:

對象檢測

圖像分割

圖像翻譯

對象跟蹤(實時),還有更多……

這讓我思考——如果一個圖像中有多個對象類別,我們該怎麼辦?製作一個圖像分類模型是一個很好的開始,但我想擴展我的視野以承擔一個更具挑戰性的任務—構建一個多標籤圖像分類模型!

製作一個圖像分類模型

https://www.analyticsvidhya.com/blog/2019/01/build-image-classification-model-10-minutes/?utm_source=blog&utm_medium=multi-label-image-classification

我不想使用簡單玩具數據集來構建我的模型—這太普通了。然後,它打動了我—包含各種各樣的人的電影/電視劇海報。我可以僅通過看海報就能來構建我自己的多標籤圖像分類模型來預測不同的流派嗎?

答案很簡單——是的!在本文中,我解釋了多標籤圖像分類背後的思想。我們將使用電影海報構建我們自己的模型。你將會對我們的模型產生的令人印象深刻的結果感到驚訝。如果你是《復仇者聯盟》或《權力的遊戲》的粉絲,那麼在實現部分會有一個很棒的驚喜(無劇透的)給你。

激動嗎?很好,我們開始吧!

目錄

1. 什麼是多標籤圖像分類?

2. 多標籤圖像分類與多類圖像分類有何不同?

3. 了解多標籤圖像分類模型體系結構;

4. 構建多標籤圖像分類模型的步驟;

5. 案例研究:用Python解決多標籤圖像分類問題;

6.接下來的步驟和你的實驗;

7.尾記。

1. 什麼是多標籤圖像分類?

讓我們通過一個直觀的例子來理解多標籤圖像分類的概念。 看看下面的圖片:

圖1中的對象是一輛汽車。這是顯而易見的。然而,在圖2中沒有汽車,只有一組建築物。你能看出我們要怎麼做嗎?我們將圖像分為兩類,即,有車還是沒車。

當我們只有兩類圖像可以分類時,這就稱為二值圖像分類問題。

讓我們再看一個圖片:

在這個圖片中,你識別出了多少個物體?有太多了——房子、帶噴泉的池塘、樹木、巖石等等。所以,當我們可以將一個圖像分類為多個類(如上圖所示)時,就稱為多標籤圖像分類問題。

現在,這裡有一個問題——我們大多數人對多標籤和多類圖像分類感到困惑。當我第一次遇到這些術語時,我也被迷惑了。現在我對這兩個主題有了更好的理解,讓我來為你們澄清一下區別。

2. 多標籤圖像分類與多類圖像分類有何不同?

 

假設給我們一些動物的圖片,讓我們把它們分成相應的類別。為了便於理解,我們假設一個給定的圖像可以分為4類(貓、狗、兔子和鸚鵡)。現在,可能有兩種情況:

讓我們通過例子來了解每種情況,從第一個場景開始:

這裡,我們的每個圖像都只包含一個對象。敏銳的你會注意到在這個集合中有4種不同類型的對象(動物)。

這裡的每張圖片只能被分類為貓、狗、鸚鵡或兔子。沒有任何一個圖像屬於多個類別的情況。

當圖像可分類的類別超過兩種時

一個圖像不屬於一個以上的類別

如果滿足上述兩個條件,則稱為多類圖像分類問題。

現在,讓我們思考第二種情況 —— 看看下面的圖像:

第一張圖片(左上角)包含一隻狗和一隻貓

第二幅圖(右上角)包括一隻狗、一隻貓和一隻鸚鵡

第三幅圖(左下角)包含一隻兔子和一隻鸚鵡,以及

最後一張圖片(右下角)包含一隻狗和一隻鸚鵡

 

這些都是給定的圖像的標籤。這裡的每個圖像都屬於一個以上的類,因此它是一個多標籤圖像分類問題。

這兩種情況應該有助於你理解多類和多標籤圖像分類之間的區別。如果你需要進一步的說明,請在本文下面的評論部分與我聯繫。

在進入下一節之前,我建議你通讀這篇文章——在10分鐘內構建你的第一個圖像分類模型!它將幫助你了解如何解決一個多類圖像分類問題。

在10分鐘內構建你的第一個圖像分類模型:

https://www.analyticsvidhya.com/blog/2019/01/build-image-classification-model-10-minutes/?utm_source=blog&utm_medium=multi-label-image-classification

3. 構建多標籤圖像分類模型的步驟

現在我們已經對多標籤圖像分類有了一個直觀的認識,讓我們深入討論解決這個問題應該遵循的步驟。

第一步是以結構化格式獲取數據。這既適用於圖像二分類,也適用於多類圖像分類。

你應該有一個文件夾,其中包含您想要訓練模型的所有圖像。現在,為了訓練這個模型,我們還需要圖像的真實標籤。因此,你還應該有一個.csv文件,其中包含所有訓練圖像的名稱及其對應的真實標籤。

我們將在本文後面學習如何創建這個.csv文件。現在,只要記住數據應該是一種特定的格式。數據準備好後,我們可以將進一步的步驟劃分如下:

加載和預處理數據

首先,加載所有圖像,然後根據項目的需求對它們進行預處理。為了檢查我們的模型將如何對不可見的數據(測試數據)執行,我們創建了一個驗證集。我們在訓練集上訓練我們的模型並使用驗證集對其進行驗證(標準的機器學習方法)。

定義模型的結構

下一步是定義模型的結構。這包括決定隱藏層的數量、每層神經元的數量、激活函數等等。

訓練模型

是時候在訓練集上訓練我們的模型了!我們輸入訓練圖像及其對應的真標籤對模型進行訓練。我們還在這裡傳入驗證圖像,以幫助我們驗證模型在不可見數據上的性能。

作出預測

最後,我們使用訓練過的模型對新圖像進行預測。

4. 了解多標籤圖像分類模型結構

 

現在,多標籤圖像分類任務的預處理步驟將類似於多類問題的預處理步驟。關鍵的區別在於我們定義模型結構的步驟。

對於多類圖像分類模型,我們在輸出層使用softmax激活函數。對於每個圖像,我們想要最大化單個類的概率。當一個類的概率增大時,另一個類的概率就減小。所以,我們可以說每個類的概率都依賴於其他類。

但是在多標籤圖像分類的情況下,單個圖像可以有多個標籤。我們希望概率彼此獨立。使用softmax激活函數並不合適。相反,我們可以使用sigmoid激活函數。這將獨立地預測每個類的概率。它將在內部創建n個模型(這裡的n是總類數),每個類一個模型,並預測每個類的概率。

利用sigmoid激活函數將多標籤問題轉化為n-二分類問題。因此對於每幅圖像,我們將得到概率來確定圖像是否屬於第一類,以此類推。由於我們已經將其轉換為一個n-二分類問題,我們將使用binary_cross-sentropy損失。我們的目標是儘量減少這種損失,以提高模型的性能。

這是我們在定義用於解決多標籤圖像分類問題的模型結構時必須做的主要更改。訓練部分將類似於一個多類問題。我們將傳入訓練圖像及其對應的真實標籤,以及驗證集來驗證模型的性能。

最後,我們將獲取一張新的圖像,並使用訓練過的模型來預測該圖像的標籤。還跟得上嗎?

5. 案例研究:用Python解決多標籤圖像分類問題

祝賀你來到這一步!你的獎勵——用Python解決一個可怕的多標籤圖像分類問題。是時候啟動你最喜歡的Python IDE了!

讓我們明確問題陳述。我們的目標是通過電影的海報圖像來預測電影的類型。你能猜到為什麼這是一個多標籤圖像分類問題嗎?在你往下看之前想一下。

一部電影可以屬於多種類型,對吧?它不僅僅屬於一個類別,如動作片或喜劇片。電影可以是兩種或多種類型的結合。因此,它是多標籤圖像分類。

我們將使用的數據集包含多個多類型電影的海報圖像。我對數據集做了一些更改,並將其轉換為結構化格式,即一個包含圖像的文件夾和一個存儲真正標籤的.csv文件。你可以從這裡下載結構化數據集。下面是一些來自我們數據集的海報:

這裡

https://drive.google.com/file/d/1dNa_lBUh4CNoBnKdf9ddoruWJgABY1br/view

如果你願意,可以在這裡下載原始數據集和基準真值。

這裡 

https://www.cs.ccu.edu.tw/~wtchu/projects/MoviePoster/index.html

讓我們開始編程!

首先,導入所有需要的Python庫:

1. import keras  

2. from keras.models import Sequential  

3. from keras.layers import Dense, Dropout, Flatten  

4. from keras.layers import Conv2D, MaxPooling2D  

5. from keras.utils import to_categorical  

6. from keras.preprocessing import image  

7. import numpy as np  

8. import pandas as pd  

9. import matplotlib.pyplot as plt  

10. from sklearn.model_selection import train_test_split  

11. from tqdm import tqdm  

12. %matplotlib inline  

現在,讀取.csv文件並查看前五行的內容:

1. train = pd.read_csv('multi_label_train.csv')    # reading the csv file  

2. train.head()      # printing first five rows of the file  

這個文件中有27列。 讓我們輸出這些列的名字看看:

1. train.columns  

Genre列包含每個圖像的列表,其中明確了每個圖像對應的電影的類型。因此,從.csv文件的頭部開始,第一個圖像的類型是喜劇和戲劇。

剩下的25列是獨熱碼列。因此,如果一部電影屬於動作類型,它的值將為1,否則為0。每個圖像可以屬於25種不同的類型。

我們將構建一個返回給定電影海報類型的模型。但在此之前,你還記得構建圖像分類模型的第一步嗎?

沒錯——就是正確的加載和預處理數據。所以,讓我們看看所有的訓練圖片:

1. train_image = []  

2. for i in tqdm(range(train.shape[0])):  

3.     img = image.load_img('Multi_Label_dataset/Images/'+train['Id'][i]+'.jpg',target_size=(400,400,3))  

4.     img = image.img_to_array(img)  

5.     img = img/255  

6.     train_image.append(img)  

7. X = np.array(train_image)  

快速瀏覽一下數組的形狀:

1. X.shape  

這裡共有7254個海報圖像,所有圖像都已轉換為(400,300,3)的形狀。 讓我們繪製並可視化其中一個圖像:

1. plt.imshow(X[2])  

這是電影《交易場所》的海報。讓我們輸出這部電影的類型:

1. train['Genre'][2]  

這部電影僅有一個類型——喜劇。我們的模型所需的下一步是所有圖像的真實標籤。你能猜出這7254個圖像真實標籤的形狀是什麼嗎?

讓我們來看看。 我們知道總共有25種可能的類型。對於每個圖像,我們將有25個目標,即電影是否屬於該類型。 因此,所有這25個目標的值都為0或1。

我們將從訓練文件中刪除Id和Genre列,並將剩餘的列轉換為將成為我們圖像目標的數組:

1. y = np.array(train.drop(['Id', 'Genre'],axis=1))  

2. y.shape  

輸出數組的形狀是(7254,25),正如我們預想的那樣。 現在,讓我們創建一個驗證集,它將幫助我們檢查模型在不可見的數據上的性能。 我們將隨機分離10%的圖像作為我們的驗證集:

1. X_train, X_test, y_train, y_test =   

2.                  train_test_split(X, y, random_state=42, test_size=0.1)  

下一步是定義模型結構。輸出層將有25個神經元(等於類型的數量),我們將使用sigmoid作為激活函數。

我將使用某一結構(如下所示)來解決這個問題。 你也可以通過更改隱藏層數,激活函數和其他超參數來修改此架構。

1. model = Sequential()  

2. model.add(Conv2D(filters=16, kernel_size=(5, 5), activation="relu", input_shape=(400,400,3)))  

3. model.add(MaxPooling2D(pool_size=(2, 2)))  

4. model.add(Dropout(0.25))  

5. model.add(Conv2D(filters=32, kernel_size=(5, 5), activation='relu'))  

6. model.add(MaxPooling2D(pool_size=(2, 2)))  

7. model.add(Dropout(0.25))  

8. model.add(Conv2D(filters=64, kernel_size=(5, 5), activation="relu"))  

9. model.add(MaxPooling2D(pool_size=(2, 2)))  

10. model.add(Dropout(0.25))  

11. model.add(Conv2D(filters=64, kernel_size=(5, 5), activation='relu'))  

12. model.add(MaxPooling2D(pool_size=(2, 2)))  

13. model.add(Dropout(0.25))  

14. model.add(Flatten())  

15. model.add(Dense(128, activation='relu'))  

16. model.add(Dropout(0.5))  

17. model.add(Dense(64, activation='relu'))  

18. model.add(Dropout(0.5))  

19. model.add(Dense(25, activation='sigmoid'))  

讓我們顯示我們的模型總結:

1. model.summary()  

 

有相當多的參數要學習! 現在,編譯模型。 我將使用binary_crossentropy作為損失函數,使用ADAM作為優化器(同樣,你也可以使用其他優化器):

1. model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])  

最後,我們最有趣的部分——訓練模型。我們將訓練模型10個循環,並傳入我們之前創建的驗證數據,以驗證模型的性能:

1. model.fit(X_train, y_train, epochs=10, validation_data=(X_test, y_test), batch_size=64)  

我們可以看到訓練損失已降至0.24,驗證損失也降低了。 下一步是什麼? 是時候做預測了!

所有《權力的遊戲(GoT)》和《復仇者聯盟(Avengers)》的粉絲——這是給你們的禮物。 讓我獲取GoT和Avengers的海報,並將它們提供給我們的模型。 在繼續之前下載GOT和Avengers的海報。

GOT

https://drive.google.com/file/d/1cfIE-42H4_UM-JERoctseLUpKwmd40YE/view

Avengers

https://drive.google.com/file/d/1buNOcfo0Im2HmFH778dUwxven8Zzebtu/view

在進行預測之前,我們需要使用前面看到的相同步驟預處理這些圖像。

1. img = image.load_img('GOT.jpg',target_size=(400,400,3))  

2. img = image.img_to_array(img)  

3. img = img/255  

現在,我們將使用我們訓練好的模型預測這些海報的類型。該模型將告訴我們每種類型的概率,我們將從中獲得前3個預測結果。

1. classes = np.array(train.columns[2:])  

2. proba = model.predict(img.reshape(1,400,400,3))  

3. top_3 = np.argsort(proba[0])[:-4:-1]  

4. for i in range(3):  

5.     print("{}".format(classes[top_3[i]])+" ({:.3})".format(proba[0][top_3[i]]))  

6. plt.imshow(img)  

真棒!我們的模型為《權力的遊戲》預測了戲劇,驚悚和動作類型。在我看來,這個分類很好。讓我們在《復仇者聯盟》海報上試試我們的模型。圖像預處理:

1. img = image.load_img('avengers.jpeg',target_size=(400,400,3))  

2. img = image.img_to_array(img)  

3. img = img/255  

然後做預測:

1. classes = np.array(train.columns[2:])  

2. proba = model.predict(img.reshape(1,400,400,3))  

3. top_3 = np.argsort(proba[0])[:-4:-1]  

4. for i in range(3):  

5.     print("{}".format(classes[top_3[i]])+" ({:.3})".format(proba[0][top_3[i]]))  

6. plt.imshow(img)  

我們的模型給出的類型是戲劇、動作和驚悚。同樣,這些都是非常準確的結果。這個模型能在好萊塢電影分類上表現的一樣優秀嗎?讓我們來看看。我們將使用這張Golmal 3的海報。

你知道在這個階段該做什麼——加載和預處理的圖像:

1. img = image.load_img('golmal.jpeg',target_size=(400,400,3))  

2. img = image.img_to_array(img)  

3. img = img/255  

然後為這個海報預測電影類型:

1. classes = np.array(train.columns[2:])  

2. proba = model.predict(img.reshape(1,400,400,3))  

3. top_3 = np.argsort(proba[0])[:-4:-1]  

4. for i in range(3):  

5.     print("{}".format(classes[top_3[i]])+" ({:.3})".format(proba[0][top_3[i]]))  

6. plt.imshow(img)  

《Golmaal 3》是一部喜劇,我們的模型預測它為最受歡迎的類型。其他預測類型是劇情片和浪漫片——相對準確的評估。我們可以看到該模型能夠僅通過海報預測電影類型。

6. 接下來的步驟和你自己的實驗

這就是如何解決多標籤圖像分類問題。儘管我們只有大約7000張圖片來訓練模型,但我們的模型表現得非常好。

你可以嘗試收集更多的訓練海報。我的建議是使所有的流派類別有相對平等的分布的數據集。為什麼?

如果某一類型在大多數訓練圖像中重複出現,那麼我們的模型可能會與該類型過度匹配。對於每一張新圖片,該模型都可能預測出相同的類型。為了克服這個問題,你應該嘗試均衡的流派類別分布。

這些是你可以嘗試改進模型性能的一些關鍵點。你還能想到別的嗎?告訴我!

7. 尾記

除了流派類型預測外,多標籤圖像分類還有多種應用。例如,你可以使用此技術自動標記圖像。假設你想預測圖像中服裝的類型和顏色。你可以建立一個多標籤圖像分類模型,這將幫助你預測同時兩者!

希望本文能幫助你理解多標籤圖像分類的概念。如果你有任何反饋或建議,請在下面的評論部分與我們分享。實驗快樂!

原文連結:

https://www.analyticsvidhya.com/blog/2019/04/build-first-multi-label-image-classification-model-python/

原文標題:

Build your First Multi-Label Image Classification Model in Python

編輯:王菁

校對:林亦霖

吳金笛,雪城大學計算機科學碩士一年級在讀。迎難而上是我最舒服的狀態,動心忍性,曾益我所不能。我的目標是做個早睡早起的Cool Girl。

工作內容:需要一顆細緻的心,將選取好的外文文章翻譯成流暢的中文。如果你是數據科學/統計學/計算機類的留學生,或在海外從事相關工作,或對自己外語水平有信心的朋友歡迎加入翻譯小組。

你能得到:定期的翻譯培訓提高志願者的翻譯水平,提高對於數據科學前沿的認知,海外的朋友可以和國內技術應用發展保持聯繫,數據派THU產學研的背景為志願者帶來好的發展機遇。

其他福利:來自於名企的數據科學工作者,北大清華以及海外等名校學生他們都將成為你在翻譯小組的夥伴。

點擊文末「閱讀原文」加入數據派團隊~

點擊「閱讀原文」擁抱組織

相關焦點

  • 手把手教你用Python構建你的第一個多標籤圖像分類模型(附案例)
    在本文中,我解釋了多標籤圖像分類背後的思想。我們將使用電影海報構建我們自己的模型。你將會對我們的模型產生的令人印象深刻的結果感到驚訝。如果你是《復仇者聯盟》或《權力的遊戲》的粉絲,那麼在實現部分會有一個很棒的驚喜(無劇透的)給你。激動嗎?很好,我們開始吧!目錄1. 什麼是多標籤圖像分類?2. 多
  • 手把手系列 | 教你用Python構建多標籤圖像分類模型(附案例)
    答案很簡單——是的!在本文中,我解釋了多標籤圖像分類背後的思想。我們將使用電影海報構建我們自己的模型。了解多標籤圖像分類模型體系結構;4. 構建多標籤圖像分類模型的步驟;5. 案例研究:用Python解決多標籤圖像分類問題;6.接下來的步驟和你的實驗;7.尾記。1. 什麼是多標籤圖像分類?讓我們通過一個直觀的例子來理解多標籤圖像分類的概念。 看看下面的圖片:
  • 手把手教你學Python之手寫數字識別
    問題描述:手寫數字識別是指給定一系列的手寫數字圖片以及對應的數字標籤,構建模型進行學習,目標是對於一張新的手寫數字圖片能夠自動識別出對應的數字
  • 手把手教你從零起步構建自己的圖像搜索模型
    來聊聊優化吧在機器學習中,有時也和軟體工程一樣,方法總比問題多,每種方法都有不同的權衡。如果我們正在進行研究或本地的產品原型設計,我們可以暫時擺脫效率非常低的解決方案。但是如果我們的目標是要構建一個可維護和可擴展的相似圖像搜尋引擎,我們必須考慮到兩點:1. 如何適應數據演變 2. 模型的運行速度。
  • 獨家 | 手把手教你運用深度學習構建視頻人臉識別模型(Python實現)
    你一定碰到過類似的例子,但並沒有意識到這些場景背後到底使用了什麼技術!例如,對於每一張上傳到平臺的圖像,Facebook都用自動生成的標籤建議替代手動給圖像加標籤。Facebook使用了一個簡單的人臉識別算法來分析圖像中人臉的像素,同時將它和相關用戶做比較。我們將學習如何創建一個人臉識別模型,但是在我們描述相關的技術細節之前,先來探討一些其它的應用案例。
  • 圖像分類:一個更魯棒的場景分類模型
    如何根據圖像的視覺內容為圖像賦予一個語義類別(例如,教室、街道等)是圖像場景分類的目標,也是圖像檢索、圖像內容分析和目標識別等問題的基礎。但由於圖片的尺度、角度、光照等因素的多樣性以及場景定義的複雜性,場景分類一直是計算機視覺中的一個挑戰性問題。本次任務從400萬張網際網路圖片中精選出8萬張圖片,分屬於80個日常場景類別,例如航站樓、足球場等。每個場景類別包含600-1100張圖片。
  • 乾貨 :10分鐘搭建你的第一個圖像識別模型(附步驟、代碼)
    我聽過無數次有抱負的數據科學家這樣說,他們害怕在自己的機器上構建深度學習模型。 其實,你不必在谷歌或其他大型科技公司工作,就可以訓練深度學習數據集。你完全可以用幾分鐘的時間從頭搭建起你自己的神經網絡,而不需要租谷歌的伺服器。Fast.ai的學生花了18分鐘設計出了用於ImageNet數據集的一個模型,接下來我將在本文中展示類似的方法。
  • 獨家 :教你用Pytorch建立你的第一個文本分類模型!
    學習如何使用PyTorch實現文本分類理解文本分類中的關鍵點學習使用壓縮填充方法在我的編程歷程中,我總是求助於最先進的架構。現在得益於深度學習框架,比如說PyTorch,Keras和 TensorFlow,實現先進的架構已經變得更簡單了。這些深度學習框架提供了一種實現複雜模型架構和算法的簡單方式,不需要你掌握大量的專業知識和編程技能。
  • 獨家 | 教你用Pytorch建立你的第一個文本分類模型!
    因此,在本文中,我們將介紹解決文本分類問題的關鍵點。然後我們將在PyTorch框架實現我們的第一個文本分類器!包裝器和預訓練模型在我們深入專業概念前,我們先快速熟悉一下PyTorch這個框架。PyTorch的基本數據單元是Tensor,類似於python中的numpy數列。使用PyTorch的最重要的兩個優點是:動態的網絡——訓練過程中網絡結構可以變化多GPU分布式訓練
  • 手把手教你在小數據集下使用Keras進行圖像分類
    AI 前線導讀:這是一篇實戰類的文章,旨在向讀者介紹計算機視覺的外圍應用:圖像分類問題。現在我們翻譯了 Rising Odegua 這篇基於 keras 進行圖像分類的文章。在本文,作者介紹了如何在數據集較小的情況下,如何使用 keras 進行圖像分類。
  • 手把手教你用TensorFlow搭建圖像識別系統(一)|...
    我們採取的方法是讓計算機自己去完成這樣的過程,而不是手把手地一步步教會計算機如何解釋圖像並翻譯成電腦程式。我們給計算機提供總體結構,讓計算機從經驗中學習,就像我們人類做的那樣。但是,在我們開始構想計算機視覺的整體方案之前,讓我們把這個任務簡化為一個容易掌握的小目標。
  • 手把手教你用TensorFlow搭建圖像識別系統(三)|...
    TensorFlow構建圖像識別系統的第三部分。在前兩部分中,我們構建了一個softmax分類器來標記來自CIFAR-10數據集的圖像,實現了約25-30%的精度。 因為有10個不同可能性的類別,所以我們預期的隨機標記圖像的精度為10%。25-30%的結果已經比隨機標記的結果好多了,但仍有很大的改進空間。在這篇文章中,作者Wolfgang Beyer將介紹如何構建一個執行相同任務的神經網絡。看看可以提高預測精度到多少!
  • 手把手教你用PyTorch實現圖像分類器(第一部分)
    通過3篇短文,介紹如何實現圖像分類器的概念基礎——這是一種能夠理解圖像內容的算法。本文的目標不是提供手把手的指導,而是幫助理解整個過程。如果你正在考慮學習機器學習或人工智慧,你將不得不做類似的項目,並理解本系列文章中介紹的概念。文章主要進行概念上的解釋,不需要知道如何編寫代碼。
  • 用Kaggle 經典案例教你用 CNN 做圖像分類!
    GitHub 地址:NELSONZHAO/zhihu如果覺得有幫助,麻煩點個 star 啦~介紹文章主要分為兩個部分,第一部分我們將通過一個簡單的 KNN 來實現圖像的分類,第二部分我們通過卷積神經網絡提升整個圖像分類的性能。
  • 從零開始實現穿衣圖像分割完整教程(附python代碼演練)
    它輸入原始的圖像(從網絡上下載或用智慧型手機拍照),並提取圖像中的連衣裙。 分割的難點在於原始圖像中存在了大量的噪聲,但是我們會在預處理期間通過一個技巧來解決這個問題。最後,您還可以嘗試將此解決方案與之前引用的解決方案合併。 這允許您通過外出和拍攝時拍攝的照片,開發一個實時推薦和標記服裝的系統。
  • Tensorflow實戰系列:手把手教你使用LSTM進行文本分類(附完整代碼)
    【導讀】專知小組計劃近期推出Tensorflow實戰系列,計劃教大家手把手實戰各項子任務。
  • Stacking 模型融合詳解(附python代碼)
    ,clf1,我們使用kfold交叉驗證,那麼可以得到k個clf1模型,模型的類型是一樣的,但是模型裡面學到的參數不一樣,因為他們的訓練集是不一樣的,對與每一折的訓練,我們還有一個驗證集啊,那麼我們用訓練得到的模型在驗證集合上做一次預測,你想,因為這個時候我們的驗證集是不是只有1分,也就是只有train_set_number/k個樣本(train_set_number表示訓練樣本的個數),但是這只是一折啊
  • 手把手教你用TensorFlow搭建圖像識別系統(二)|...
    在我們的模型中,我們首先為圖像數據定義了佔位符,它們包括浮點數據(tf.float32)。shape參數定義了輸入數據的大小。我們將同時輸入多幅圖像(稍後我們將談到這些處理),但是我們希望可以隨時改變實際輸入圖像的個數。所以第一項shape參數為none,這代表大小可以是任何長度。第二項參數是3072,這是每幅圖像的浮點值。
  • 我用Python實現了12500張貓狗圖像的精準分類
    在這麼多的領域裡,深度學習在語言理解、圖像分析這種認知任務上的表現已經達到了我們人類的水平。如何構建一個在圖像分類任務上能達到 90% 精度的深度神經網絡?這個問題看似非常簡單,但在深度神經網絡特別是卷積神經網絡(CNN)興起之前,這是一個被計算機科學家們研究了很多年的棘手問題。
  • 手把手教你用英偉達 DIGITS 解決圖像...
    英偉達想必大家都有所耳聞,但對英偉達開發的深度學習訓練系統(NVIDIA Deep Learning GPU Training System, DIGITS) 知之甚少,今天我們介紹如何使用DIGITS,實現基於深度神經網絡的圖像分類,包括數據集創建、模型創建、模型訓練、模型測試等等。