如何使用Python將給定的圖像集進(jìn)行聚類?
介紹大家好,最近在參加深度學(xué)習(xí)競賽時(shí),遇到了一個(gè)有趣的問題,即如何將給定的圖像集進(jìn)行聚類,你可能會(huì)說,這不是一個(gè)簡單的分類問題嗎?使用卷積神經(jīng)網(wǎng)絡(luò), 就實(shí)現(xiàn),但關(guān)鍵在于沒有合適訓(xùn)練數(shù)據(jù)提供訓(xùn)練。在不想自己收集數(shù)據(jù)集的情況,我們?nèi)绾谓鉀Q這個(gè)問題呢?這就是本文的主要內(nèi)容,即將深度學(xué)習(xí)直接應(yīng)用于測試數(shù)據(jù)(此處為圖像),而無需創(chuàng)建訓(xùn)練數(shù)據(jù)集并在該數(shù)據(jù)集上訓(xùn)練神經(jīng)網(wǎng)絡(luò)。卷積神經(jīng)網(wǎng)絡(luò)作為特征提取器首先我們需要討論為什么需要特征提取器?以及如何使卷積神經(jīng)網(wǎng)絡(luò)(CNN)發(fā)揮作用。圖像數(shù)據(jù)的特征提取器:假設(shè)算法需要像特征一樣需要兩只眼睛,一只鼻子和一張嘴來將圖像分類為面部,但是在不同的圖像中,這些特征存在于不同的像素位置,因此簡單地將圖像扁平化并將其提供給算法是不起作用的。而解決這個(gè)問題剛好是CNN的卷積層發(fā)揮作用的地方。卷積層作為我們的特征提取器,并將圖像分解為越來越精細(xì)的細(xì)節(jié),我們來看一下下面的例子:
這是一只貓的圖像,這是Vgg16的第一個(gè)卷積層看到它的樣子
請注意不同的圖像,這些是我們的CNN所學(xué)習(xí)的特征圖,一些特征圖著重于輪廓,一些特征著重于紋理,而某些特征則涉及更細(xì)微的細(xì)節(jié)(如耳和嘴),下一階段的卷積層將這些特征分解得更細(xì)的細(xì)節(jié)。
上午我們知道了卷積層可以學(xué)習(xí)圖像的特定功能,那么接下來我們將實(shí)現(xiàn)編碼。實(shí)現(xiàn)CNN的卷積層網(wǎng)絡(luò):以下代碼顯示了如何使用預(yù)訓(xùn)練的CNN Vgg16獲得以上結(jié)果:MyModel = tf2.<a onclick="parent.postMessage({'referent':'.tensorflow.keras'}, '*')">keras.a(chǎn)pplications.VGG16(
include_top=True, weights='imagenet', input_tensor=None, input_shape=None,
pooling=None, classes=1000, classifier_activation='softmax'
)
MyModel.summary()
## lets Define a Function that can show Features learned by CNN's nth convolusion layer
def ShowMeWhatYouLearnt(<a onclick="parent.postMessage({'referent':'.kaggle.usercode.12234793.44545592.ShowMeWhatYouLearnt..Image'}, '*')">Image, <a onclick="parent.postMessage({'referent':'.kaggle.usercode.12234793.44545592.ShowMeWhatYouLearnt..layer'}, '*')">layer, <a onclick="parent.postMessage({'referent':'.kaggle.usercode.12234793.44545592.ShowMeWhatYouLearnt..MyModel'}, '*')">MyModel):
<a onclick="parent.postMessage({'referent':'.kaggle.usercode.12234793.44545592.ShowMeWhatYouLearnt..img'}, '*')">img = img_to_array(<a onclick="parent.postMessage({'referent':'.kaggle.usercode.12234793.44545592.ShowMeWhatYouLearnt..Image'}, '*')">Image)
<a onclick="parent.postMessage({'referent':'.kaggle.usercode.12234793.44545592.ShowMeWhatYouLearnt..img'}, '*')">img = np.<a onclick="parent.postMessage({'referent':'.numpy.expand_dims'}, '*')">expand_dims(<a onclick="parent.postMessage({'referent':'.kaggle.usercode.12234793.44545592.ShowMeWhatYouLearnt..img'}, '*')">img, 0)
### preprocessing for img for vgg16
<a onclick="parent.postMessage({'referent':'.kaggle.usercode.12234793.44545592.ShowMeWhatYouLearnt..img'}, '*')">img = tf2.<a onclick="parent.postMessage({'referent':'.tensorflow.keras'}, '*')">keras.a(chǎn)pplications.vgg16.preprocess_input(<a onclick="parent.postMessage({'referent':'.kaggle.usercode.12234793.44545592.ShowMeWhatYouLearnt..img'}, '*')">img)
## Now lets define a model which will help us
## see what vgg16 sees
<a onclick="parent.postMessage({'referent':'.kaggle.usercode.12234793.44545592.ShowMeWhatYouLearnt..inputs'}, '*')">inputs = <a onclick="parent.postMessage({'referent':'.kaggle.usercode.12234793.44545592.ShowMeWhatYouLearnt..MyModel'}, '*')">MyModel.inputs
<a onclick="parent.postMessage({'referent':'.kaggle.usercode.12234793.44545592.ShowMeWhatYouLearnt..outputs'}, '*')">outputs = <a onclick="parent.postMessage({'referent':'.kaggle.usercode.12234793.44545592.ShowMeWhatYouLearnt..MyModel'}, '*')">MyModel.layers[<a onclick="parent.postMessage({'referent':'.kaggle.usercode.12234793.44545592.ShowMeWhatYouLearnt..layer'}, '*')">layer].output
<a onclick="parent.postMessage({'referent':'.kaggle.usercode.12234793.44545592.ShowMeWhatYouLearnt..model'}, '*')">model = Model(inputs=<a onclick="parent.postMessage({'referent':'.kaggle.usercode.12234793.44545592.ShowMeWhatYouLearnt..inputs'}, '*')">inputs, outputs=<a onclick="parent.postMessage({'referent':'.kaggle.usercode.12234793.44545592.ShowMeWhatYouLearnt..outputs'}, '*')">outputs)
<a onclick="parent.postMessage({'referent':'.kaggle.usercode.12234793.44545592.ShowMeWhatYouLearnt..model'}, '*')">model.summary()
## let make predictions to see what the Cnn sees
發(fā)表評(píng)論
請輸入評(píng)論內(nèi)容...
請輸入評(píng)論/評(píng)論長度6~500個(gè)字
最新活動(dòng)更多
-
10月31日立即下載>> 【限時(shí)免費(fèi)下載】TE暖通空調(diào)系統(tǒng)高效可靠的組件解決方案
-
即日-11.13立即報(bào)名>>> 【在線會(huì)議】多物理場仿真助跑新能源汽車
-
11月28日立即報(bào)名>>> 2024工程師系列—工業(yè)電子技術(shù)在線會(huì)議
-
12月19日立即報(bào)名>> 【線下會(huì)議】OFweek 2024(第九屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會(huì)
-
即日-12.26火熱報(bào)名中>> OFweek2024中國智造CIO在線峰會(huì)
-
即日-2025.8.1立即下載>> 《2024智能制造產(chǎn)業(yè)高端化、智能化、綠色化發(fā)展藍(lán)皮書》
推薦專題
- 1 【一周車話】沒有方向盤和踏板的車,你敢坐嗎?
- 2 特斯拉發(fā)布無人駕駛車,還未迎來“Chatgpt時(shí)刻”
- 3 特斯拉股價(jià)大跌15%:Robotaxi離落地還差一個(gè)蘿卜快跑
- 4 馬斯克給的“驚喜”夠嗎?
- 5 打完“價(jià)格戰(zhàn)”,大模型還要比什么?
- 6 馬斯克致敬“國產(chǎn)蘿卜”?
- 7 神經(jīng)網(wǎng)絡(luò),誰是盈利最強(qiáng)企業(yè)?
- 8 比蘋果偉大100倍!真正改寫人類歷史的智能產(chǎn)品降臨
- 9 諾獎(jiǎng)進(jìn)入“AI時(shí)代”,人類何去何從?
- 10 Open AI融資后成萬億獨(dú)角獸,AI人才之爭開啟
- 高級(jí)軟件工程師 廣東省/深圳市
- 自動(dòng)化高級(jí)工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級(jí)銷售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市