Python-OpenCV深度學(xué)習(xí)入門示例詳解
0. 前言
深度學(xué)習(xí)已經(jīng)成為機(jī)器學(xué)習(xí)中最受歡迎和發(fā)展最快的領(lǐng)域。自 2012 年深度學(xué)習(xí)性能超越機(jī)器學(xué)習(xí)等傳統(tǒng)方法以來(lái),深度學(xué)習(xí)架構(gòu)開(kāi)始快速應(yīng)用于包括計(jì)算機(jī)視覺(jué)在內(nèi)的眾多領(lǐng)域。深度學(xué)習(xí)的常見(jiàn)應(yīng)用包括語(yǔ)音識(shí)別、圖像識(shí)別、自然語(yǔ)言處理、推薦系統(tǒng)等等。大多數(shù)現(xiàn)代深度學(xué)習(xí)架構(gòu)都基于人工神經(jīng)網(wǎng)絡(luò),深度學(xué)習(xí)中的“深”是指架構(gòu)的層數(shù)。在本文中,首先介紹傳統(tǒng)機(jī)器學(xué)習(xí)方法與深度學(xué)習(xí)間的差異,然后將介紹圖像分類和對(duì)象檢測(cè)中常見(jiàn)的深度學(xué)習(xí)架構(gòu),最后,將介紹深度學(xué)習(xí) Python 庫(kù) Keras,并通過(guò)實(shí)戰(zhàn)來(lái)推開(kāi)深度學(xué)習(xí)的大門。
1. 計(jì)算機(jī)視覺(jué)中的深度學(xué)習(xí)簡(jiǎn)介
深度學(xué)習(xí)推動(dòng)了計(jì)算機(jī)視覺(jué)領(lǐng)域的深刻變革,我們首先解釋深度學(xué)習(xí)中的關(guān)鍵概念,以便更好的了解深度學(xué)習(xí)的廣袤世界。
1.1 深度學(xué)習(xí)的特點(diǎn)
深度學(xué)習(xí)在許多計(jì)算機(jī)視覺(jué)任務(wù)中的性能超越了傳統(tǒng)的機(jī)器學(xué)習(xí)方法,但在選擇何種方法完成特定的計(jì)算任務(wù)時(shí),應(yīng)該明確深度學(xué)習(xí)與傳統(tǒng)的機(jī)器學(xué)習(xí)方法之間的區(qū)別,以選擇合適的方法:
- 傳統(tǒng)的機(jī)器學(xué)習(xí)算法大多可以在低端機(jī)器上運(yùn)行,而深度學(xué)習(xí)算法需要較高的算力才能正確訓(xùn)練,通常這些計(jì)算可以使用 GPU 進(jìn)行優(yōu)化并行計(jì)算
- 當(dāng)對(duì)特征工程缺乏領(lǐng)域理解時(shí),深度學(xué)習(xí)技術(shù)將是首選方法,這是由于在深度學(xué)習(xí)中,尋找相關(guān)特征的任務(wù)是算法的一部分,它通過(guò)減少問(wèn)題的特征工程來(lái)實(shí)現(xiàn)自動(dòng)化。特征工程是將領(lǐng)域知識(shí)應(yīng)用于創(chuàng)建特征檢測(cè)器和提取器的過(guò)程,目的是降低數(shù)據(jù)的復(fù)雜性,使傳統(tǒng)的機(jī)器學(xué)習(xí)方法能夠正確學(xué)習(xí)。因此,傳統(tǒng)機(jī)器學(xué)習(xí)算法的性能取決于識(shí)別和提取特征的準(zhǔn)確程度,而深度學(xué)習(xí)技術(shù)試圖從數(shù)據(jù)中自動(dòng)提取高級(jí)特征。
- 傳統(tǒng)機(jī)器學(xué)習(xí)和深度學(xué)習(xí)都能夠處理海量數(shù)據(jù)集。但兩種方法之間的主要區(qū)別在于隨著數(shù)據(jù)規(guī)模的增加其性能的變化程度。例如,在處理小數(shù)據(jù)集時(shí),深度學(xué)習(xí)算法難以在數(shù)據(jù)中找到映射關(guān)系,因此可能表現(xiàn)不佳,因?yàn)樯疃葘W(xué)習(xí)通常需要大量數(shù)據(jù)來(lái)調(diào)整其內(nèi)部參數(shù)。根據(jù)經(jīng)驗(yàn)法,如果數(shù)據(jù)集很大,深度學(xué)習(xí)會(huì)優(yōu)于其他技術(shù),而當(dāng)數(shù)據(jù)集很小時(shí),傳統(tǒng)的機(jī)器學(xué)習(xí)算法更可取。
可以使用下圖來(lái)總結(jié)機(jī)器學(xué)習(xí)與深度學(xué)習(xí)的主要區(qū)別:
由上圖可知,機(jī)器學(xué)習(xí)與深度學(xué)習(xí)的關(guān)鍵選擇要點(diǎn)如下:
- 計(jì)算資源(深度學(xué)習(xí)<——高算力計(jì)算機(jī);機(jī)器學(xué)習(xí)<——低算力計(jì)算機(jī))
- 特征工程(深度學(xué)習(xí)<——特征提取和目標(biāo)任務(wù)在同一步驟中;機(jī)器學(xué)習(xí)<——特征提取和目標(biāo)任務(wù)在不同步驟中)
- 數(shù)據(jù)集大?。ㄉ疃葘W(xué)習(xí)<——大型或超大型數(shù)據(jù)集;機(jī)器學(xué)習(xí)<——小型或中型數(shù)據(jù)集)
1.2 深度學(xué)習(xí)大爆發(fā)
深度學(xué)習(xí)的概念可以追溯至 1986 年,但直到 2012 年深度學(xué)習(xí)性能超越傳統(tǒng)機(jī)器學(xué)習(xí)時(shí),才出現(xiàn)了深度學(xué)習(xí)的大爆發(fā)。 ImageNet 是一個(gè)大型視覺(jué)數(shù)據(jù)庫(kù),包含超過(guò) 1400 萬(wàn)張帶有標(biāo)簽的高分辨率圖像,包含 20,000 多個(gè)類別。因此,2012 年 AlexNet 架構(gòu)在解決 ImageNet 大規(guī)模視覺(jué)識(shí)別挑戰(zhàn)賽 (ILSVRC) 上的突破性進(jìn)展通常被認(rèn)為是深度學(xué)習(xí)大爆發(fā)的開(kāi)始。
2. 用于圖像分類的深度學(xué)習(xí)簡(jiǎn)介
繼 AlexNet 在 ILSVRC 比賽中取得成功之后,更多深度學(xué)習(xí)架構(gòu)開(kāi)始被應(yīng)用于 ImageNet 挑戰(zhàn)賽中,下圖顯示了在 ImageNet 挑戰(zhàn)賽中的最相關(guān)深度學(xué)習(xí)模型的準(zhǔn)確率和模型的參數(shù)量:
接下來(lái),對(duì)深度學(xué)習(xí)模型架構(gòu)進(jìn)行介紹,以了解它們的發(fā)展脈絡(luò)及其關(guān)鍵點(diǎn):
AlexNet
:AlexNet 是 LSVRC-2012 的獲勝者,是一種簡(jiǎn)單但功能強(qiáng)大的網(wǎng)絡(luò)架構(gòu),其通過(guò)堆疊卷積層和池化層,最后頂部使用全連接層。
VGG
:VGGNet 由 Visual Geometry Group (VGG) 提出,在 LSVRC-2014 中排名第二,與 AlexNet 相比其在整個(gè)網(wǎng)絡(luò)中僅使用 3 x 3 卷積核,而不是使用大尺寸卷積核(例如 7 x 7 和 11 x 11),主要貢獻(xiàn)在于它表明網(wǎng)絡(luò)的深度是在卷積神經(jīng)網(wǎng)絡(luò)中實(shí)現(xiàn)更好的識(shí)別或分類準(zhǔn)確率的關(guān)鍵。它的主要缺點(diǎn)是訓(xùn)練速度非常慢,并且其網(wǎng)絡(luò)架構(gòu)權(quán)重參數(shù)量非常大(可以從上圖看出)。
GoogLeNet/Inception V1
:GoogLeNet (也稱 Inception V1) 是 LSVRC-2014 的獲勝者,其 top-5 錯(cuò)誤率僅為 6.67%,非常接近人類水平的表現(xiàn)。這種架構(gòu)比 VGGNet 更深,但由于其使用 9 個(gè)并行的 Inception 模塊,Inception 模塊基于幾個(gè)非常小的卷積,極大的減少了參數(shù)數(shù)量。
ResNet
:ResNets 是 LSVRC-2015 的獲勝者,是迄今為止最深的網(wǎng)絡(luò),其包含 153 個(gè)卷積層 top-5 分類錯(cuò)誤率僅為 4.9% (使深度學(xué)習(xí)模型準(zhǔn)確率首次高于人類)。該架構(gòu)使用跳躍連接,可實(shí)現(xiàn)增量學(xué)習(xí)修改。
Inception V3
:Inception V2 在 Inception 模塊中引入了批歸一化,Inception V3 架構(gòu)包含了分解思想,其目標(biāo)是在不降低網(wǎng)絡(luò)效率的情況下減少參數(shù)的數(shù)量。
Inception V4
:Inception V4 具有比 Inception-V3 更統(tǒng)一的簡(jiǎn)化架構(gòu)和更多的 Inception 模塊,在 LSVRC 上達(dá)到了 80.2% 的 top-1 準(zhǔn)確率和 95.2% 的 top-5 準(zhǔn)確率。
3. 用于目標(biāo)檢測(cè)的深度學(xué)習(xí)簡(jiǎn)介
目標(biāo)檢測(cè)是深度學(xué)習(xí)中的一個(gè)熱門話題,其用于識(shí)別和定位圖像中的多個(gè)對(duì)象。目標(biāo)檢測(cè)算法通常使用以下三個(gè)數(shù)據(jù)集進(jìn)行基準(zhǔn)測(cè)試:1) PASCAL Visual Object (PASCAL VOC) 數(shù)據(jù)集,包含 20 個(gè)類別的 10,000 張圖像,數(shù)據(jù)集中包含目標(biāo)的邊界框;2) ImageNet 在 2013 年發(fā)布了一個(gè)目標(biāo)檢測(cè)數(shù)據(jù)集,它由大約 500,000 張圖像和 200 個(gè)類別組成;3) Common Objects in Context (COCO) 是一個(gè)大規(guī)模的對(duì)象檢測(cè)、分割數(shù)據(jù)集,其包括 328,000 張圖像以及 250 萬(wàn)個(gè)標(biāo)記目標(biāo)。為了評(píng)估目標(biāo)檢測(cè)算法,通常使用平均精度均值 (mean Average Precision, mAP),用于目標(biāo)檢測(cè)深度學(xué)習(xí)算法:
R-CNN:Region-based Convolutional Network (R-CNN) 是最早使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行目標(biāo)檢測(cè)的算法之一,與基于 HOG 特征的系統(tǒng)相比,卷積神經(jīng)網(wǎng)絡(luò)可以帶來(lái)更高的對(duì)象檢測(cè)性能。該算法可以分解為以下三個(gè)步驟:
- 創(chuàng)建一組候選區(qū)域
- 對(duì)每個(gè)候選區(qū)域通過(guò)基于 AlexNet 的模型執(zhí)行前向傳遞以提取特征向量
- 潛在對(duì)象通過(guò) SVM 分類器預(yù)測(cè)類別,利用線性回歸器預(yù)測(cè)邊界框的坐標(biāo)
Fast R-CNN:Fast Region-based Convolutional Network (Fast R-CNN) 是對(duì) R-CNN的改進(jìn),以有效地對(duì)目標(biāo)提議進(jìn)行分類。此外,F(xiàn)ast R-CNN 采用多項(xiàng)創(chuàng)新來(lái)提高訓(xùn)練和測(cè)試速度,同時(shí)提高檢測(cè)精度。
Faster R-CNN:Faster R-CNN 是對(duì) Fast R-CNN 的改進(jìn),它引入了候選區(qū)域網(wǎng)絡(luò) (region proposal network, RPN),與檢測(cè)網(wǎng)絡(luò)共享圖像的卷積特征。
R-FCN:Region-based Fully Convolutional Network (R-FCN) 是一個(gè)只有卷積層的框架,以實(shí)現(xiàn)準(zhǔn)確高效的目標(biāo)檢測(cè)。
YOLO: You only look once (YOLO) 可以在一個(gè)步驟中同時(shí)預(yù)測(cè)邊界框和類別概率。與其他深度學(xué)習(xí)檢測(cè)器相比,YOLO 產(chǎn)生更多的定位誤差,但其產(chǎn)生假陽(yáng)性的概率較小。
SSD:Single Shot MultiBox Detector (SSD) 同樣通過(guò)單一端到端卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)同時(shí)預(yù)測(cè)邊界框和類別概率。
YOLO V2: YOLO V2 是 YOLO 的改進(jìn)版本,專注于提高準(zhǔn)確性,同時(shí)是一個(gè)實(shí)時(shí)快速檢測(cè)器。
NASNet: NASNet 的作者介紹了神經(jīng)網(wǎng)絡(luò)搜索,通過(guò)使用循環(huán)神經(jīng)網(wǎng)絡(luò)來(lái)組成神經(jīng)網(wǎng)絡(luò)架構(gòu),NASNet 學(xué)習(xí)模型模型架構(gòu)的同時(shí)提高準(zhǔn)確性。
Mask R-CNN:Mask Region-based Convolutional Network (Mask R-CNN) 是 Faster R-CNN 模型的改進(jìn),它為邊界框檢測(cè)添加了一個(gè)并行分支,目的是預(yù)測(cè)目標(biāo)掩碼。目標(biāo)掩碼是它在圖像中按像素進(jìn)行的分割,允許進(jìn)行目標(biāo)實(shí)例分割。
YOLO V3:YOLO V3 是以 YOLO V1 和 YOLO V2 為基礎(chǔ)調(diào)整了網(wǎng)絡(luò)結(jié)構(gòu);利用多尺度特征進(jìn)行對(duì)象檢測(cè)。
YOLO V4:YOLO-V4 算法是在原有 YOLO 目標(biāo)檢測(cè)架構(gòu)的基礎(chǔ)上,采用了 CNN 領(lǐng)域中優(yōu)秀的優(yōu)化策略,從數(shù)據(jù)處理、主干網(wǎng)絡(luò)、網(wǎng)絡(luò)訓(xùn)練、激活函數(shù)、損失函數(shù)等各個(gè)方面都有著不同程度的優(yōu)化。
4. 深度學(xué)習(xí)框架 keras 介紹與使用
在本節(jié)中,我們將通過(guò)兩個(gè)簡(jiǎn)單示例來(lái)一窺深度學(xué)習(xí)的神秘面紗。在第一個(gè)示例中,構(gòu)造輸入數(shù)據(jù)來(lái)解決線性回歸問(wèn)題;在第二個(gè)示例中,使用 MNIST 數(shù)據(jù)集對(duì)手寫數(shù)字進(jìn)行分類。
4.1 keras 庫(kù)簡(jiǎn)介與安裝
Keras 是用 Python 編寫的開(kāi)源高級(jí)神經(jīng)網(wǎng)絡(luò) API,它能夠在 TensorFlow、或 Theano 之上運(yùn)行,其最大的特點(diǎn)是能夠?qū)崿F(xiàn)快速實(shí)驗(yàn),因此本文利用它來(lái)進(jìn)行深度學(xué)習(xí)實(shí)戰(zhàn)。
要安裝 Keras,首先進(jìn)行安裝:
pip install keras
4.2 使用 keras 實(shí)現(xiàn)線性回歸模型
首先創(chuàng)建用于訓(xùn)練/測(cè)試算法的數(shù)據(jù),如下所示:
# 產(chǎn)生一百個(gè)隨機(jī)數(shù)據(jù)點(diǎn)作為訓(xùn)練數(shù)據(jù) Number = 100 x = np.linspace(0, Number, Number) y = 3 * np.linspace(0, Number, Number) + np.random.uniform(-12, 12, Number)
接下來(lái)創(chuàng)建模型:
def create_model(): # 創(chuàng)建 Sequential 模型 model = Sequential() # 使用具有線性激活函數(shù)的全連接層 model.add(Dense(input_dim=1, units=1, activation='linear', kernel_initializer='uniform')) # 使用均方差(mse)作為損失函數(shù),Adam作為優(yōu)化器編譯模型 model.compile(loss='mse', optimizer=Adam(lr=0.1)) return model
使用 Keras 時(shí),最簡(jiǎn)單的模型類型是 Sequential 模型,可以將其視為網(wǎng)絡(luò)層的線性堆棧,對(duì)于更復(fù)雜的架構(gòu),可以使用 Keras 函數(shù)式 API,以創(chuàng)建任意網(wǎng)絡(luò)架構(gòu)。
作為簡(jiǎn)單示例,此處使用 Sequential 模型,然后利用 model.add() 方法堆疊層來(lái)構(gòu)建模型。在此示例中,使用了具有線性激活函數(shù)的單個(gè)全連接層。定義模型之后,需要使用損失函數(shù)與優(yōu)化器編譯模型,示例中使用均方差 (mean squared error, MSE) 作為損失函數(shù),使用 Adam 作為優(yōu)化器并設(shè)置學(xué)習(xí)率為 0.1。
編譯模型完成后,就可以使用 model.fit() 方法使用訓(xùn)練數(shù)據(jù)的訓(xùn)練模型:
linear_reg_model.fit(x, y, epochs=100, validation_split=0.2, verbose=2)
訓(xùn)練后,就可以獲得可學(xué)習(xí)參數(shù) w 和 b,這些值將用于接下來(lái)的:
def get_weights(model): w = model.get_weights()[0][0][0] b = model.get_weights()[1][0] return w, b w_final, b_final = get_weights(linear_reg_model)
接下來(lái),我們可以用以下方式進(jìn)行預(yù)測(cè):
predictions = w_final * x + b_final
還可以保存模型:
linear_reg_model.save_weights("my_model.h5")
最后可以將訓(xùn)練數(shù)據(jù)集和訓(xùn)練完成后線性模型進(jìn)行可視化:
plt.subplot(1, 2, 1) plt.plot(x, y, 'ro', label='Original data') plt.xlabel('x') plt.ylabel('y') plt.title("Training Data") plt.subplot(1, 2, 2) plt.plot(x, y, 'ro', label='Original data') plt.plot(x, predictions, label='Fitted line') plt.xlabel('x') plt.ylabel('y') plt.title('Linear Regression Result', fontsize=10) plt.legend() plt.show()
如上圖所示,可以看到左側(cè)圖像顯示的是訓(xùn)練數(shù)據(jù),右側(cè)圖像顯示了線性回歸模型對(duì)應(yīng)的擬合線。
如果我們已經(jīng)擁有訓(xùn)練完成的模型權(quán)重文件,就可以直接加載預(yù)先訓(xùn)練的模型來(lái)進(jìn)行預(yù)測(cè):
# 加載模型 linear_reg_model.load_weights('my_model.h5') # 構(gòu)建測(cè)試數(shù)據(jù)集 M = 3 new_x = np.linspace(Number + 1, Number + 10, M) # 使用模型進(jìn)行預(yù)測(cè) new_predictions = linear_reg_model.predict(new_x)
程序的運(yùn)行結(jié)果如下圖所示:
4.3 使用 keras 進(jìn)行手寫數(shù)字識(shí)別
接下來(lái),我們使用 Keras 識(shí)別手寫數(shù)字,與第一個(gè)示例相同,首先需要構(gòu)建模型:
def create_model(): model = Sequential() model.add(Dense(units=128, activation='relu', input_shape=(784,))) model.add(Dense(units=128, activation='relu')) model.add(Dense(units=64, activation='relu')) model.add(Dense(units=10, activation='softmax')) # 使用分類交叉熵(categorical_crossentropy)作為損失函數(shù)和隨機(jī)梯度下降作為優(yōu)化器編譯模型 model.compile(optimizer=SGD(0.001), loss='categorical_crossentropy', metrics=['acc']) return model
使用 categorical_crossentropy 損失函數(shù)編譯模型,該損失函數(shù)非常適合比較兩個(gè)概率分布,使用隨機(jī)梯度下降 (stochastic gradient descent, SGD) 作為優(yōu)化器。
接下來(lái)加載 MNIST 數(shù)據(jù)集:
(train_x, train_y), (test_x, test_y) = mnist.load_data()
此外,由于我們使用的是全連接層,因此必須對(duì)加載的數(shù)據(jù)進(jìn)行整形以輸入網(wǎng)絡(luò):
train_x = train_x.reshape(60000, 784) test_x = test_x.reshape(10000, 784) train_y = keras.utils.to_categorical(train_y, 10) test_y = keras.utils.to_categorical(test_y, 10)
創(chuàng)建模型完成后,就可以訓(xùn)練模型,并保存創(chuàng)建的模型,也可以評(píng)估模型在測(cè)試數(shù)據(jù)集上的表現(xiàn):
# 模型創(chuàng)建 model = create_model() # 模型訓(xùn)練 model.fit(train_x, train_y, batch_size=32, epochs=10, verbose=1) # 模型保存 model.save("mnist-model.h5") # 評(píng)估模型在測(cè)試數(shù)據(jù)集上的表現(xiàn) accuracy = model.evaluate(x=test_x, y=test_y, batch_size=32) # 打印準(zhǔn)確率 print("Accuracy: ", accuracy[1])
接下來(lái),可以使用訓(xùn)練完成的模型來(lái)預(yù)測(cè)圖像中的手寫數(shù)字:
def load_digit(image_name): gray = cv2.imread(image_name, cv2.IMREAD_GRAYSCALE) gray = cv2.resize(gray, (28, 28)) gray = gray.reshape((1, 784)) return gray # 加載圖片 test_digit_0 = load_digit("digit_0.png") test_digit_1 = load_digit("digit_1.png") test_digit_2 = load_digit("digit_2.png") test_digit_3 = load_digit("digit_3.png") imgs = np.array([test_digit_0, test_digit_1, test_digit_2, test_digit_3]) imgs = imgs.reshape(4, 784) # 預(yù)測(cè)加載圖像 prediction_class = model.predict_classes(imgs) # 打印預(yù)測(cè)結(jié)果 print("Class: ", prediction_class)
加載的四張圖像如下圖所示:
使用經(jīng)過(guò)訓(xùn)練的模型來(lái)預(yù)測(cè)這些圖像,得到的輸出如下:
Class: [0 1 2 3]
小結(jié)
在本節(jié)中,使用流行的庫(kù)深度學(xué)習(xí)庫(kù) Keras 對(duì)深度學(xué)習(xí)進(jìn)行了介紹。我們首先概述了用于圖像分類和目標(biāo)檢測(cè)的深度學(xué)習(xí)架構(gòu)。然后,我們介紹了 Keras,并通過(guò)示例訓(xùn)練了簡(jiǎn)單線性回歸模型,介紹了如何利用 Keras 訓(xùn)練全連接網(wǎng)絡(luò)識(shí)別手寫數(shù)字。
到此這篇關(guān)于Python-OpenCV深度學(xué)習(xí)入門示例詳解的文章就介紹到這了,更多相關(guān)Python OpenCV深度學(xué)習(xí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python OpenCV機(jī)器學(xué)習(xí)之圖像識(shí)別詳解
- Python OpenCV實(shí)戰(zhàn)之與機(jī)器學(xué)習(xí)的碰撞
- OpenCV機(jī)器學(xué)習(xí)MeanShift算法筆記分享
- 基于深度學(xué)習(xí)和OpenCV實(shí)現(xiàn)目標(biāo)檢測(cè)
- 使用Python中OpenCV和深度學(xué)習(xí)進(jìn)行全面嵌套邊緣檢測(cè)
- Dlib+OpenCV深度學(xué)習(xí)人臉識(shí)別的方法示例
- opencv深入淺出了解機(jī)器學(xué)習(xí)和深度學(xué)習(xí)
相關(guān)文章
詳解如何使用Python和正則表達(dá)式處理XML表單數(shù)據(jù)
在日常的Web開(kāi)發(fā)中,處理表單數(shù)據(jù)是一個(gè)常見(jiàn)的任務(wù),而XML是一種常用的數(shù)據(jù)格式,用于在不同的系統(tǒng)之間傳遞和存儲(chǔ)數(shù)據(jù),本文通過(guò)闡述一個(gè)技術(shù)問(wèn)題并給出解答的方式,介紹如何使用Python和正則表達(dá)式處理XML表單數(shù)據(jù),需要的朋友可以參考下2023-09-09解決Tensorflow使用pip安裝后沒(méi)有model目錄的問(wèn)題
今天小編就為大家分享一篇解決Tensorflow使用pip安裝后沒(méi)有model目錄的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06在Python中使用Mako模版庫(kù)的簡(jiǎn)單教程
這篇文章主要介紹了在Python中使用Mako模版庫(kù)的簡(jiǎn)單教程,包括在Django或者Tornado框架中集成Mako的方法,需要的朋友可以參考下2015-04-04Python實(shí)現(xiàn)視頻轉(zhuǎn)換為字符畫詳解
這篇文章主要介紹了如何通過(guò)Python實(shí)現(xiàn)讀取視頻并將其轉(zhuǎn)換為字符畫的示例代碼,文中講解詳細(xì),對(duì)我們的學(xué)習(xí)和工作有一點(diǎn)的價(jià)值,感興趣的小伙伴可以了解一下2021-12-12Python無(wú)法用requests獲取網(wǎng)頁(yè)源碼的解決方法
爬蟲獲取信息,很多時(shí)候是需要從網(wǎng)頁(yè)源碼中獲取鏈接信息的,下面這篇文章主要給大家介紹了關(guān)于Python無(wú)法用requests獲取網(wǎng)頁(yè)源碼的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07Python裝飾器的執(zhí)行過(guò)程實(shí)例分析
這篇文章主要介紹了Python裝飾器的執(zhí)行過(guò)程,結(jié)合實(shí)例形式分析了Python裝飾器的原理、執(zhí)行過(guò)程及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2018-06-06python自動(dòng)化測(cè)試selenium定位frame及iframe示例
這篇文章主要為大家介紹了python自動(dòng)化測(cè)試selenium定位frame及iframe示例的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11