0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用MLP做圖像分類識別?

電子工程師 ? 來源:未知 ? 作者:李倩 ? 2018-07-05 09:40 ? 次閱讀

▌一、前言

閱讀本文的基礎(chǔ):我會認(rèn)為你對BP神經(jīng)網(wǎng)絡(luò)有充分的了解,熟讀過我上一篇文章,本文會大量引用上一篇文章的知識以及代碼。

▌二、用MLP做圖像分類識別?

在沒有CNN以及更先進(jìn)的神經(jīng)網(wǎng)絡(luò)的時(shí)代,樸素的想法是用多層感知機(jī)(MLP)做圖片分類的識別,沒毛病。

作為上篇筆記學(xué)習(xí)的延續(xù),以及下一篇CNN的藥引,使用MLP來做圖片分類識別,實(shí)在是個(gè)不錯(cuò)的過度例子。通過這個(gè)例子,從思路上引出一系列的問題,我不賣關(guān)子,自問自答吧,即:

MLP能做圖片分類識別嗎?--> 答案是是可以的,上一篇我們是擬合非線性分類函數(shù),這里是擬合圖像特征,數(shù)學(xué)本質(zhì)沒區(qū)別。

MLP做這個(gè)事情效果如何?--> 個(gè)人認(rèn)知內(nèi),只能說一般一般。

MLP在這一領(lǐng)域效果一般,是有什么缺陷嗎? --> 缺陷是有的,下文會詳細(xì)說。

有更好的解決方案嗎? --> 那也是必須有的,地球人火星人喵星人都知道有CNN等等更先進(jìn)的東東;但是在沒有這些東西存在的時(shí)代,你發(fā)明出來了,那才真是666。

▌三、先上車

1. 數(shù)據(jù)源

數(shù)據(jù)源當(dāng)然是圖片,但是是經(jīng)過數(shù)據(jù)化處理的圖片,使用的是h5文件。h5文件簡單說就是把數(shù)據(jù)按索引固化起來,挺簡單的不多說,度度一下:

h5py入門講解:

https://blog.csdn.net/csdn15698845876/article/details/73278120

我們有3個(gè)h5文件,存著不重復(fù)的圖片數(shù)據(jù),分別是:

train_catvnoncat.h5 (用來訓(xùn)練模型用的,一共有209張,其中有貓也有不是貓的圖片,尺寸64*64像素)

test_catvnoncat.h5 (用來測試模型準(zhǔn)確度的,一共有50張圖片,,其中有貓也有不是貓的圖片,尺寸64*64像素)

my_cat_misu.h5 (用來玩的,我家貓主子的1張照騙,尺寸64*64像素)

2. 數(shù)據(jù)結(jié)構(gòu)

拿train_catvnoncat.h5舉例,這個(gè)文件有2個(gè)索引:

train_set_x:這是一個(gè)數(shù)組,因?yàn)槭?09張圖片,所以數(shù)組長度是209。數(shù)組中的元素是一個(gè) 64*64*3 的矩陣。64*64是圖片像素尺寸,3是什么鬼?別忘了這是彩色圖片,3就是代表RGB這3個(gè)顏色通道的值。

train_set_y:圖片標(biāo)簽數(shù)組,長度也是209,是209張圖片的標(biāo)簽(label),對應(yīng)數(shù)組下標(biāo)的值是1時(shí),代表這張圖片是喵星人,0則代表不是。

同理,test_catvnoncat.h5 中有 test_set_x 和 test_set_y;my_cat_misu.h5 中有 mycat_set_x 和 mycat_set_y

3. 告訴你怎么制作圖片的h5文件,以后做cnn等模型訓(xùn)練時(shí),非常有用

以我主子為例子:

原圖:

自己處理成64*64的圖片,當(dāng)然你也可以寫代碼做圖片處理,我懶,交給你實(shí)現(xiàn)了:

python代碼,用到h5py庫:

def save_imgs_to_h5file(h5_fname, x_label, y_label, img_paths_list, img_label_list): # 構(gòu)造n張圖片的隨機(jī)矩陣 data_imgs = np.random.rand(len(img_paths_list), 64, 64, 3).astype('int') label_imgs = np.random.rand(len(img_paths_list), 1).astype('int') # plt.imread可以把圖片以多維數(shù)組形式讀出來,然后我們存成 n*n*3 的矩陣 for i in range(len(img_paths_list)): data_imgs[i] = np.array(plt.imread(img_paths_list[i])) label_imgs[i] = np.array(img_label_list[i]) # 創(chuàng)建h5文件,按照指定的索引label存到文件中,完事了 f = h5py.File(h5_fname, 'w') f.create_dataset(x_label, data=data_imgs) f.create_dataset(y_label, data=label_imgs) f.close() return data_imgs, label_imgs #用法 # 圖片label為1代表這是一張喵星人的圖片,0代表不是 save_imgs_to_h5file('datasets/my_cat_misu.h5', 'mycat_set_x', 'mycat_set_y', ['misu.jpg'],[1])

4. 看看我的數(shù)據(jù)源的樣子

用來訓(xùn)練的圖片集合,209張:

用來校驗(yàn)?zāi)P蜏?zhǔn)確度的圖片集合, 50張

用來玩的,主子照騙,1張:

▌四. 開車了

1. 如何設(shè)計(jì)模型:

輸入層:我們的圖片是64*64的像素尺寸,那么算上RGB三個(gè)通道的數(shù)據(jù),我們把三維矩陣?yán)擅鏃l 64*64*3 = 12288。 也就是我們輸入層的數(shù)據(jù)長度是12288。

隱藏層:使用多層隱藏層,可以自行多嘗試一下不同的結(jié)構(gòu)。這里我使用3個(gè)隱藏層,隱藏層神經(jīng)元個(gè)數(shù)分別是20,7,5

輸出層:我們的目標(biāo)就是判斷某張圖片是否是貓而已,所以輸出層1個(gè)神經(jīng)元,輸出概率大于0.5認(rèn)為是貓,小于等于0.5認(rèn)為不是。

【插播】:有人會想,第一層隱藏層的神經(jīng)元和輸入層數(shù)量一致是不是會好點(diǎn)?理論上是會好點(diǎn),但是這涉及到MLP的一個(gè)缺陷,因?yàn)槿B接情況下,這樣做,第一層的權(quán)重w參數(shù)就有1228的平方個(gè),約為1.5個(gè)億。如果圖片更大呢?參數(shù)會成指數(shù)級膨脹,后果盡情想象。

2. 如何訓(xùn)練模型

還用說,把209張圖片的數(shù)據(jù)扔到神經(jīng)網(wǎng)絡(luò),完成一次迭代,然后訓(xùn)練1萬次,可自行嘗試迭不同代次數(shù)觀察效果。

3. 如何衡量模型的準(zhǔn)確度

大神吳恩達(dá)(Andrew Ng)提到的方法之一,就是劃分不同集合,一部分用來訓(xùn)練,一部分用來驗(yàn)證模型效果,這樣可以達(dá)到衡量你所訓(xùn)練的模型的效果如何。所以我們訓(xùn)練使用209張圖片,最終使用50張測試模型效果。

為了好玩,可以自己用不同圖片通過模型去做分類識別。

▌五. 老規(guī)矩,甩代碼

還是說明一下代碼流程吧:

代碼使用到的 NeuralNetwork 是我上一篇筆記的代碼,實(shí)現(xiàn)了BP神經(jīng)網(wǎng)絡(luò),import進(jìn)來直接用即可。

代碼做的事情就是:

從h5文件加載圖片數(shù)據(jù)

把原始圖片顯示出來,同時(shí)也保存成圖片文件

訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型

驗(yàn)證模型準(zhǔn)確度

把識別結(jié)果標(biāo)注到原始圖片上,同時(shí)也保存成圖片文件

#coding:utf-8 import h5py import matplotlib.font_manager as fm import matplotlib.pyplot as plt import numpy as np from NeuralNetwork import * font = fm.FontProperties(fname='/System/Library/Fonts/STHeiti Light.ttc') def load_Cat_dataset(): train_dataset = h5py.File('datasets/train_catvnoncat.h5', "r") train_set_x_orig = np.array(train_dataset["train_set_x"][:]) train_set_y_orig = np.array(train_dataset["train_set_y"][:]) test_dataset = h5py.File('datasets/test_catvnoncat.h5', "r") test_set_x_orig = np.array(test_dataset["test_set_x"][:]) test_set_y_orig = np.array(test_dataset["test_set_y"][:]) mycat_dataset = h5py.File('datasets/my_cat_misu.h5', "r") mycat_set_x_orig = np.array(mycat_dataset["mycat_set_x"][:]) mycat_set_y_orig = np.array(mycat_dataset["mycat_set_y"][:]) classes = np.array(test_dataset["list_classes"][:]) train_set_y_orig = train_set_y_orig.reshape((1, train_set_y_orig.shape[0])) test_set_y_orig = test_set_y_orig.reshape((1, test_set_y_orig.shape[0])) mycat_set_y_orig = mycat_set_y_orig.reshape((1, mycat_set_y_orig.shape[0])) return train_set_x_orig, train_set_y_orig, test_set_x_orig, test_set_y_orig, mycat_set_x_orig, mycat_set_y_orig,classes def predict_by_modle(x, y, nn): m = x.shape[1] p = np.zeros((1,m)) output, caches = nn.forward_propagation(x) for i in range(0, output.shape[1]): if output[0,i] > 0.5: p[0,i] = 1 else: p[0,i] = 0 # 預(yù)測出來的結(jié)果和期望的結(jié)果比對,看看準(zhǔn)確率多少: # 比如100張預(yù)測圖片里有50張貓的圖片,只識別出40張,那么識別率就是80% print(u"識別率: " + str(np.sum((p == y)/float(m)))) return np.array(p[0], dtype=np.int), (p==y)[0], np.sum((p == y)/float(m))*100 def save_imgs_to_h5file(h5_fname, x_label, y_label, img_paths_list, img_label_list): data_imgs = np.random.rand(len(img_paths_list), 64, 64, 3).astype('int') label_imgs = np.random.rand(len(img_paths_list), 1).astype('int') for i in range(len(img_paths_list)): data_imgs[i] = np.array(plt.imread(img_paths_list[i])) label_imgs[i] = np.array(img_label_list[i]) f = h5py.File(h5_fname, 'w') f.create_dataset(x_label, data=data_imgs) f.create_dataset(y_label, data=label_imgs) f.close() return data_imgs, label_imgs if __name__ == "__main__": # 圖片label為1代表這是一張喵星人的圖片,0代表不是 #save_imgs_to_h5file('datasets/my_cat_misu.h5', 'mycat_set_x', 'mycat_set_y', ['misu.jpg'],[1]) train_set_x_orig, train_set_y_orig, test_set_x_orig, test_set_y_orig, mycat_set_x_orig, mycat_set_y_orig, classes = load_Cat_dataset() train_x_flatten = train_set_x_orig.reshape(train_set_x_orig.shape[0], -1).T test_x_flatten = test_set_x_orig.reshape(test_set_x_orig.shape[0], -1).T mycat_x_flatten = mycat_set_x_orig.reshape(mycat_set_x_orig.shape[0], -1).T train_set_x = train_x_flatten / 255. test_set_x = test_x_flatten / 255. mycat_set_x = mycat_x_flatten / 255. print(u"訓(xùn)練圖片數(shù)量: %d" % len(train_set_x_orig)) print(u"測試圖片數(shù)量: %d" % len(test_set_x_orig)) plt.figure(figsize=(10, 20)) plt.subplots_adjust(wspace=0,hspace=0.15) for i in range(len(train_set_x_orig)): plt.subplot(21,10, i+1) plt.imshow(train_set_x_orig[i],interpolation='none',cmap='Reds_r',vmin=0.6,vmax=.9) plt.xticks([]) plt.yticks([]) plt.savefig("cat_pics_train.png") plt.show() plt.figure(figsize=(8, 8)) plt.subplots_adjust(wspace=0, hspace=0.1) for i in range(len(test_set_x_orig)): ax = plt.subplot(8, 8, i + 1) im = ax.imshow(test_set_x_orig[i], interpolation='none', cmap='Reds_r', vmin=0.6, vmax=.9) plt.xticks([]) plt.yticks([]) plt.savefig("cat_pics_test.png") plt.show() plt.figure(figsize=(2, 2)) plt.subplots_adjust(wspace=0, hspace=0) for i in range(len(mycat_set_x_orig)): ax = plt.subplot(1, 1, i + 1) im = ax.imshow(mycat_set_x_orig[i], interpolation='none', cmap='Reds_r', vmin=0.6, vmax=.9) plt.xticks([]) plt.yticks([]) plt.savefig("cat_pics_my.png") plt.show() # 用訓(xùn)練圖片集訓(xùn)練模型 layers_dims = [12288, 20, 7, 5, 1] nn = NeuralNetwork(layers_dims, True) nn.set_xy(train_set_x, train_set_y_orig) nn.set_num_iterations(10000) nn.set_learning_rate(0.0075) nn.training_modle() # 結(jié)果展示說明: # 【識別正確】: # 1.原圖是貓,識別為貓 --> 原圖顯示 # 2.原圖不是貓,識別為不是貓 --> 降低顯示亮度 # 【識別錯(cuò)誤】: # 1.原圖是貓,但是識別為不是貓 --> 標(biāo)紅顯示 # 2.原圖不是貓, 但是識別成貓 --> 標(biāo)紅顯示 # 訓(xùn)練用的圖片走一遍模型,觀察其識別率 plt.figure(figsize=(10, 20)) plt.subplots_adjust(wspace=0, hspace=0.15) pred_train, true, accuracy = predict_by_modle(train_set_x, train_set_y_orig, nn) for i in range(len(train_set_x_orig)): ax = plt.subplot(21, 10, i + 1) x_data = train_set_x_orig[i] if pred_train[i] == 0 and train_set_y_orig[0][i] == 0: x_data = x_data/5 if true[i] == False: x_data[:, :, 0] = x_data[:, :, 0] + (255 - x_data[:, :, 0]) im = plt.imshow(x_data,interpolation='none',cmap='Reds_r',vmin=0.6,vmax=.9) plt.xticks([]) plt.yticks([]) plt.suptitle(u"Num Of Pictrues: %d Accuracy: %.2f%%" % (len(train_set_x_orig), accuracy), y=0.92, fontsize=20) plt.savefig("cat_pics_train_predict.png") plt.show() # 不屬于訓(xùn)練圖片集合的測試圖片,走一遍模型,觀察其識別率 plt.figure(figsize=(8, 8)) plt.subplots_adjust(wspace=0, hspace=0.1) pred_test, true, accuracy = predict_by_modle(test_set_x, test_set_y_orig, nn) for i in range(len(test_set_x_orig)): ax = plt.subplot(8, 8, i + 1) x_data = test_set_x_orig[i] if pred_test[i] == 0 and test_set_y_orig[0][i] == 0: x_data = x_data/5 if true[i] == False: x_data[:, :, 0] = x_data[:, :, 0] + (255 - x_data[:, :, 0]) im = ax.imshow(x_data, interpolation='none', cmap='Reds_r', vmin=0.6, vmax=.9) plt.xticks([]) plt.yticks([]) plt.suptitle(u"Num Of Pictrues: %d Accuracy: %.2f%%" % (len(test_set_x_orig), accuracy), fontsize=20) plt.savefig("cat_pics_test_predict.png") plt.show() # 用我家主子的照騙,走一遍模型,觀察其識別率,因?yàn)橹挥幸粡垐D片,所以識別率要么 100% 要么 0% plt.figure(figsize=(2, 2.6)) plt.subplots_adjust(wspace=0, hspace=0.1) pred_mycat, true, accuracy = predict_by_modle(mycat_set_x, mycat_set_y_orig, nn) for i in range(len(mycat_set_x_orig)): ax = plt.subplot(1, 1, i+1) x_data = mycat_set_x_orig[i] if pred_mycat[i] == 0 and mycat_set_y_orig[0][i] == 0: x_data = x_data/5 if true[i] == False: x_data[:, :, 0] = x_data[:, :, 0] + (255 - x_data[:, :, 0]) im = ax.imshow(x_data, interpolation='none', cmap='Reds_r', vmin=0.6, vmax=.9) plt.xticks([]) plt.yticks([]) if pred_mycat[i] == 1: plt.suptitle(u"我:'我主子是喵星人嗎?' A I :'是滴'", fontproperties = font) else: plt.suptitle(u"我:'我主子是喵星人嗎?' A I :'唔系~唔系~'", fontproperties = font) plt.savefig("cat_pics_my_predict.png") plt.show()

▌六.結(jié)論

1. 神經(jīng)網(wǎng)絡(luò)模型的輸出結(jié)果,標(biāo)注到了圖片上并展示出來,規(guī)則是:

結(jié)果展示說明:

【識別正確】:原圖是貓,識別為貓 --> 原圖顯示原圖不是貓,識別為不是貓 --> 降低顯示亮度【識別錯(cuò)誤】:原圖是貓,但是識別為不是貓 --> 標(biāo)紅顯示原圖不是貓, 但是識別成貓 --> 標(biāo)紅顯示

圖片標(biāo)題會顯示Accuracy(準(zhǔn)確度),準(zhǔn)確度的計(jì)算公式是: 識別正確圖片數(shù)/圖片總數(shù)。

2. 模型訓(xùn)練完成后,把訓(xùn)練用的209張圖片用訓(xùn)練好的模型識別一遍,觀察結(jié)果:可以看到,迭代1w次的模型,識別訓(xùn)練圖集,準(zhǔn)確度是 100% 的:

3. 模型訓(xùn)練完成后,使用測試圖集用訓(xùn)練好的模型識別一遍,觀察結(jié)果:可以看到,迭代1w次的模型,識別訓(xùn)練圖集,準(zhǔn)確度只有 78%:

4. 看看模型能不能認(rèn)出我主子是喵星人,看樣子,它是認(rèn)出來了:

▌七.對結(jié)果進(jìn)一步分析,引出一系列問題

拋出一個(gè)問題:為什么用測試圖集驗(yàn)證模型,識別率只有78%?在我嘗試過改變神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì),參數(shù)調(diào)參后,仍然無法提高識別率,為什么呢?

不算徹底的解答:

也許是我水平有限,調(diào)參姿勢不對?姿勢帥并不是萬能的,我們應(yīng)該從更深層次的原理進(jìn)行分析。

有人說,你訓(xùn)練數(shù)據(jù)少了,好像有那么些道理。其實(shí)是可以給模型輸入更多圖片的特征是個(gè)不錯(cuò)的辦法,比如旋轉(zhuǎn)一下,圖片內(nèi)容放大縮小,挪挪位置等。但是Andrew Ng也說過,過分追求訓(xùn)練數(shù)據(jù)收集是一條不歸路。

在同等訓(xùn)練數(shù)據(jù)集下,有更好的辦法嗎?由此引出下一個(gè)問題。

刨根問底:想要知道為什么MLP識別度難以做到很高,撇開網(wǎng)絡(luò)結(jié)構(gòu),調(diào)參,訓(xùn)練數(shù)據(jù)先不談。我們應(yīng)該從MLP身上找找茬。搞清楚我們目標(biāo),是提高對圖片進(jìn)行分類識別,那么在使用MLP實(shí)現(xiàn)這個(gè)目標(biāo)時(shí),它自身是否有缺陷,導(dǎo)致實(shí)現(xiàn)這個(gè)目標(biāo)遇到了困難。那么解決了這些困難,就找到了解決問題的方法。

MLP在做圖片分類識別的缺陷:神經(jīng)元是全連接的方式構(gòu)成的神經(jīng)網(wǎng)絡(luò),全連接情況下,假設(shè)圖片是1k*1k像素大小,那么隱藏層個(gè)數(shù)和輸入層尺寸一致時(shí),不考慮RGB顏色通道,單通道下,權(quán)重w參數(shù)個(gè)數(shù)會是:(沒數(shù)錯(cuò)0的話)

如果圖片再大點(diǎn),參數(shù)膨脹到不可想象,直接導(dǎo)致的負(fù)面效果是:

參數(shù)過多,計(jì)算量龐大

全連接情況下,過深的網(wǎng)絡(luò)容易導(dǎo)致梯度消失,模型難以訓(xùn)練

MLP全連接的情況下,無法做到圖片的形變識別。怎么理解這個(gè)詞呢,拿手寫數(shù)字舉個(gè)例子,比如寫8,每個(gè)人書寫習(xí)慣不一樣,有的人寫的很正,但有的人寫歪了點(diǎn),上半部分小,下半部分大,等等。這時(shí)候,MLP的缺點(diǎn)就顯現(xiàn)出來了,同一張圖片,旋轉(zhuǎn),或者稍微平移形變一下,它無法識別。你可以通過增加更多特征給模型,但這不是本質(zhì)上的解決該問題的方法,而是對訓(xùn)練的優(yōu)化手段。

▌八. 總結(jié)要解決的問題,離下一個(gè)坑就不遠(yuǎn)了

上面已經(jīng)列舉了要解決的幾個(gè)問題,這里總結(jié)一下:

我們要解決參數(shù)膨脹帶來的計(jì)算量龐大的問題。

優(yōu)化參數(shù)量之后,如何在同等訓(xùn)練數(shù)據(jù)集不變的情況下,如何提取更多特征。

在輸入有一定的旋轉(zhuǎn)平移伸縮時(shí),仍能正確識別。

能解決以上問題的眾所周知,就是CNN以及眾多更先進(jìn)的神經(jīng)網(wǎng)絡(luò)模型了。本文作為一篇引子文章,也是CNN的導(dǎo)火索。代碼在你手中,把第一層隱藏層設(shè)計(jì)成和輸入層一樣大,即 layers_dims = [12288, 12288, 20, 7, 5, 1]。還只是64*64的小圖片而已,那龜速,我和我的小破筆記本都不能忍啊。這也是為什么大神們發(fā)明CNN的原因之一吧!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4734

    瀏覽量

    100420
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    29817

    瀏覽量

    268111
  • 圖像分類
    +關(guān)注

    關(guān)注

    0

    文章

    89

    瀏覽量

    11897

原文標(biāo)題:AI從入門到放棄2:CNN的導(dǎo)火索,用MLP做圖像分類識別?

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    基于LabVIEW圖像識別的物體外觀實(shí)時(shí)分類研究

    基于LabVIEW圖像識別的物體外觀實(shí)時(shí)分類研究
    發(fā)表于 04-26 13:07

    怎么matlab實(shí)現(xiàn)對硬幣的識別分類

    怎么matlab實(shí)現(xiàn)對硬幣的識別分類?需要用到哪些函數(shù)?求賜教。。。
    發(fā)表于 05-08 17:18

    怎么圖像識別?

    怎么圖像識別
    發(fā)表于 07-22 23:23

    STM32f103圖像輪廓識別

    想用STM32F103圖像識別,現(xiàn)在視頻圖像采回來了,怎么輪廓識別
    發(fā)表于 10-31 09:41

    基于MLP的快速醫(yī)學(xué)圖像分割網(wǎng)絡(luò)UNeXt相關(guān)資料分享

    1、基于MLP的快速醫(yī)學(xué)圖像分割網(wǎng)絡(luò)UNeXt  方法概述  之前我們解讀過基于 Transformer 的 U-Net變體,近年來一直是領(lǐng)先的醫(yī)學(xué)圖像分割方法,但是參數(shù)量往往不樂觀,計(jì)算復(fù)雜,推理
    發(fā)表于 09-23 14:53

    介紹一種用于密集預(yù)測的mlp架構(gòu)CycleMLP

    MLP-Mixer, ResMLP和gMLP,其架構(gòu)與圖像大小相關(guān),因此在目標(biāo)檢測和分割中是無法使用的。而CycleMLP有兩個(gè)優(yōu)點(diǎn)。(1)可以處理各種大小的圖像。(2)利用局部窗口實(shí)現(xiàn)了計(jì)算復(fù)雜度
    發(fā)表于 02-09 16:28

    arduino哪個(gè)開發(fā)板可以圖像識別?

    arduino哪個(gè)開發(fā)板可以圖像識別
    發(fā)表于 09-22 06:49

    基于最小l_1稀疏圖表學(xué)習(xí)分類圖像識別方法研究

    基于最小l_1稀疏圖表學(xué)習(xí)分類圖像識別方法研究_蔣業(yè)文
    發(fā)表于 01-07 16:00 ?0次下載

    花粉圖像分類識別

    針對現(xiàn)有粗糙度描述子大多依賴于灰度值平均值,容易造成圖像信息的丟失的問題,提出了一種新的基于高斯尺度空間粗糙度描述子的特征提取方法,并應(yīng)用于花粉圖像分類識別。首先,采用高斯金字塔算
    發(fā)表于 01-08 15:46 ?3次下載

    AI從入門到放棄:MLP圖像分類識別

    在沒有CNN以及更先進(jìn)的神經(jīng)網(wǎng)絡(luò)的時(shí)代,樸素的想法是多層感知機(jī)(MLP圖片分類識別
    的頭像 發(fā)表于 07-09 10:09 ?7574次閱讀

    基于深度卷積生成對抗網(wǎng)絡(luò)的花朵圖像識別分類

    為了提高花朵圖像識別分類的準(zhǔn)確率,采用基于深度卷積生成對抗網(wǎng)絡(luò)的算法來完成花朵圖像識別分類。為了保證花朵
    發(fā)表于 05-28 16:51 ?5次下載

    人體識別圖像技術(shù)的原理及分類

    人體識別圖像技術(shù)是一種通過分析人體圖像(如照片或視頻)來識別個(gè)體身份的技術(shù)。它主要基于人體特征(如膚色、體型等)進(jìn)行分析,通過對人體姿態(tài)、步態(tài)、外觀等因素的提取與建模,實(shí)現(xiàn)人體身份的
    的頭像 發(fā)表于 05-25 14:57 ?1752次閱讀

    模擬矩陣在圖像識別中的應(yīng)用

    訊維模擬矩陣在圖像識別中的應(yīng)用主要是通過構(gòu)建一個(gè)包含多種圖像數(shù)據(jù)的模擬矩陣,來訓(xùn)練和測試深度學(xué)習(xí)模型,從而提高圖像識別的準(zhǔn)確性和效率。 在圖像識別中,訊維模擬矩陣可以用來
    的頭像 發(fā)表于 09-04 14:17 ?541次閱讀
    模擬矩陣在<b class='flag-5'>圖像識別</b>中的應(yīng)用

    CNN圖像分類策略

    在深度學(xué)習(xí)出現(xiàn)之前,自然圖像中的對象識別過程相當(dāng)粗暴簡單:定義一組關(guān)鍵視覺特征(“單詞”),識別每個(gè)視覺特征在圖像中的存在頻率(“包”),然后根據(jù)這些數(shù)字對
    發(fā)表于 12-25 11:36 ?267次閱讀
    CNN<b class='flag-5'>圖像</b><b class='flag-5'>分類</b>策略

    圖像識別技術(shù)原理 圖像識別技術(shù)的應(yīng)用領(lǐng)域

    圖像識別技術(shù)是一種通過計(jì)算機(jī)對圖像進(jìn)行分析和理解的技術(shù)。它借助計(jì)算機(jī)視覺、模式識別、人工智能等相關(guān)技術(shù),通過對圖像進(jìn)行特征提取和匹配,找出圖像
    的頭像 發(fā)表于 02-02 11:01 ?2190次閱讀