資料介紹
描述
在這個(gè)項(xiàng)目中,我們將構(gòu)建一個(gè)自動(dòng)描述它觀察到的內(nèi)容的相機(jī)。將部署在 Jetson Nano 等邊緣設(shè)備上運(yùn)行的 AI 網(wǎng)絡(luò),以便它持續(xù)提供所獲取幀的文本描述。為了保持實(shí)現(xiàn)簡(jiǎn)單,雖然可以將注意力等高級(jí)功能添加到網(wǎng)絡(luò)中,但由于主腳本是相當(dāng)模塊化的,所以沒(méi)有實(shí)現(xiàn)它們。
將實(shí)施混合深度神經(jīng)網(wǎng)絡(luò),使用簡(jiǎn)單的 USB 攝像頭和 Jetson Nano 實(shí)時(shí)提供每一幀的字幕。
項(xiàng)目設(shè)計(jì)階段
該項(xiàng)目將分四期建設(shè)。在第一階段,我們將在配備獨(dú)立顯卡的主機(jī)上設(shè)置和訓(xùn)練網(wǎng)絡(luò)。第二階段包括設(shè)置 Jetson Nano 和實(shí)現(xiàn)從相機(jī)到 HDMI 監(jiān)視器的簡(jiǎn)單圖像管道。第三階段包括將圖像字幕深度神經(jīng)網(wǎng)絡(luò)與第二階段的圖像流水線相結(jié)合。最后,在最后一個(gè)階段,我們將在真實(shí)世界的設(shè)置下測(cè)試網(wǎng)絡(luò)。
硬件需要為 Jetson Nano 提供 2A 電源,因?yàn)閺?USB 為其供電不足以在高性能模式下運(yùn)行神經(jīng)模型。為此,請(qǐng)確保將跳線安裝在 Jetson Nano 的右側(cè)。然后插入 USB 攝像頭、帶有最新圖像的 SD 卡和以太網(wǎng)電纜。設(shè)置好硬件后,下一步就是設(shè)置先決條件框架。
主機(jī)設(shè)置
首先,我們將在主機(jī)筆記本電腦上定義和訓(xùn)練網(wǎng)絡(luò)。該項(xiàng)目將使用 Tensorflow 2.01、Keras 2.1 和 OpenCV 4.1。先決條件是安裝 Cuda10.0 和 Visual Studio Express 17.0 以利用 GPU 速度增益,以防筆記本電腦配備支持 NVIDIA 的 GPU。
我們將用于訓(xùn)練的數(shù)據(jù)集是 Flickr8K 圖像數(shù)據(jù)集。這是一個(gè)相對(duì)較小的數(shù)據(jù)集,允許在筆記本電腦級(jí) GPU 上訓(xùn)練完整的 AI 流水線。人們還可以使用更大的數(shù)據(jù)集,這將以更高的訓(xùn)練時(shí)間為代價(jià)獲得更好的性能。數(shù)據(jù)集可以通過(guò)申請(qǐng)表從伊利諾伊大學(xué)下載。
下一個(gè)數(shù)據(jù)集是 Glove 數(shù)據(jù)集,它是一組從大型文本語(yǔ)料庫(kù)構(gòu)建的詞嵌入。該數(shù)據(jù)集本質(zhì)上充當(dāng)了 AI 從中獲取詞匯的字典。標(biāo)題文本清理完成后,下一步是加載 Glove 嵌入。嵌入是神經(jīng)網(wǎng)絡(luò)使用的單詞編碼。基本上單詞被投影為高維空間中的向量,然后表示為向量。從這里下載數(shù)據(jù)集:
https://nlp.stanford.edu/projects/glove/
然后創(chuàng)建一個(gè)名為 /Captioning 的頂級(jí)目錄,并在其中提取兩個(gè)壓縮文件。
另外創(chuàng)建一個(gè)名為 /data 的文件夾,用于保存訓(xùn)練階段生成的文件。接下來(lái)我們將定義網(wǎng)絡(luò)并訓(xùn)練網(wǎng)絡(luò)。
神經(jīng)網(wǎng)絡(luò)訓(xùn)練
從高層次的角度來(lái)看,圖像字幕深度學(xué)習(xí)網(wǎng)絡(luò)由菊花鏈?zhǔn)竭B接在一起的深度 CNN (InceptionV3) 和 LSTM 循環(huán)神經(jīng)網(wǎng)絡(luò)組成。CNN 的輸出是一個(gè)表示圖像類(lèi)別的 x 維向量。輸出被發(fā)送到 LSTM,后者生成圖像中對(duì)象的文本描述。LSTM 基本上接收 x 維向量流。在此基礎(chǔ)上,它實(shí)時(shí)串接了對(duì)場(chǎng)景的描述。
可以在 Github 上找到訓(xùn)練網(wǎng)絡(luò)的 Ipython 筆記本。主網(wǎng)絡(luò)的設(shè)計(jì)基于 Jeff Heaton 的工作。它由一個(gè) InceptionV3 CNN 和一個(gè) LSTM 遞歸神經(jīng)網(wǎng)絡(luò)組成。
下一步是從 Flickr 字幕構(gòu)建數(shù)據(jù)集,并通過(guò)標(biāo)記化和預(yù)處理文本來(lái)清理所有描述。然后我們將 Flickr8K 數(shù)據(jù)集拆分為測(cè)試和訓(xùn)練圖像數(shù)據(jù)集。然后我們加載訓(xùn)練數(shù)據(jù)集描述并訓(xùn)練網(wǎng)絡(luò)。
如前所述,Inception 網(wǎng)絡(luò)用作網(wǎng)絡(luò)的第一階段。最后一個(gè)全連接層被移除,因此從第一階段 CNN 出來(lái)的數(shù)據(jù)是一個(gè)一維向量。Inception 只能接受分辨率為 299x299 像素的圖像,因此必須對(duì)相機(jī)圖像進(jìn)行格式化。
inputs1 = Input(shape=(OUTPUT_DIM,))
fe1 = Dropout(0.5)(inputs1)
fe2 = Dense(256, activation='relu')(fe1)
inputs2 = Input(shape=(max_length,))
se1 = Embedding(vocab_size, embedding_dim, mask_zero=True)(inputs2)
se2 = Dropout(0.5)(se1)
se3 = LSTM(256)(se2)
decoder1 = add([fe2, se3])
decoder2 = Dense(256, activation='relu')(decoder1)
outputs = Dense(vocab_size, activation='softmax')(decoder2)
caption_model = Model(inputs=[inputs1, inputs2], outputs=outputs)
上面的代碼片段顯示了編輯后的 ??InceptionV3 CNN 與 LSTM 連接。這實(shí)現(xiàn)了編碼器-解碼器架構(gòu)。
完成后,我們必須循環(huán)遍歷訓(xùn)練和測(cè)試圖像文件夾,并對(duì)每張圖像進(jìn)行預(yù)處理。
網(wǎng)絡(luò)的最后一部分是循環(huán)長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)。(LSTM) 簡(jiǎn)稱(chēng)。該網(wǎng)絡(luò)獲取序列并嘗試預(yù)測(cè)序列中的下一個(gè)單詞。這些類(lèi)型的網(wǎng)絡(luò)的工作由斯坦福大學(xué)的 A. Karpathy 完成,他指出它們對(duì)于此類(lèi)任務(wù)來(lái)說(shuō)是多么充分。
最后一步是訓(xùn)練網(wǎng)絡(luò)。對(duì)于這個(gè)項(xiàng)目,最初使用了 6 個(gè) epoch,損失最初為 2.6%。然而,為了獲得可接受的結(jié)果,損失必須遠(yuǎn)小于 1,因此必須訓(xùn)練至少 10-15 個(gè)時(shí)期。
訓(xùn)練網(wǎng)絡(luò)后,我們加載訓(xùn)練好的權(quán)重并在數(shù)據(jù)集的測(cè)試圖像以及不屬于原始數(shù)據(jù)集的圖像上測(cè)試網(wǎng)絡(luò)。
如果圖像在風(fēng)格和內(nèi)容上與 Flickr9K 數(shù)據(jù)集中的圖像非常相似,則描述相對(duì)準(zhǔn)確。這也可以使用 OpenCV API 來(lái)完成。首先我們需要安裝正確的版本。
安裝OpenCV
OpenCv4.1 是從源代碼編譯的。這可能需要一段時(shí)間。要安裝 4.1 版,我使用了以下腳本:
curl -L https://github.com/opencv/opencv/archive/4.1.1.zip -o opencv-4.1.1.zip
curl -L https://github.com/opencv/opencv_contrib/archive/4.1.1.zip -o opencv_contrib-4.1.1.zip
unzip opencv-4.1.1.zip
unzip opencv_contrib-4.1.1.zip
cd opencv-4.1.1/
echo "** Building..."
mkdir release
cd release/
cmake -D WITH_CUDA=ON -D ENABLE_PRECOMPILED_HEADERS=OFF -D CUDA_ARCH_BIN="5.3" -D CUDA_ARCH_PTX="" -D WITH_GTK=OFF -D WITH_QT=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.1.1/modules -D WITH_GSTREAMER=ON -D WITH_LIBV4L=ON -D BUILD_opencv_python2=ON -D BUILD_opencv_python3=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j3
sudo make install
請(qǐng)注意,GTK 已關(guān)閉,以避免在使用默認(rèn)設(shè)置編譯時(shí)發(fā)現(xiàn)的庫(kù)出現(xiàn)問(wèn)題。
安裝 OpenCV 后,使用下面附帶的文件 test_openCV.py 測(cè)試程序。USB 攝像頭在 /dev 下顯示為 /video0。
捕獲幀后,可以使用以下函數(shù)將文本覆蓋在每個(gè)幀的頂部:
def __draw_label(img, text, pos, bg_color):
font_face = cv2.FONT_HERSHEY_TRIPLEX
scale = 1
color = (255, 255, 255)
thickness = cv2.FILLED
margin = 5
txt_size = cv2.getTextSize(text, font_face, scale, thickness)
end_x = pos[0] + txt_size[0][0] + margin
end_y = pos[1] - txt_size[0][1] - margin
cv2.rectangle(img, pos, (end_x, end_y), bg_color, thickness)
cv2.putText(img, text, pos, font_face, scale, color, 2, cv2.LINE_AA)
下圖顯示了從相機(jī)捕獲的幀,日期覆蓋在幀的頂部。
所有通過(guò) OpenCv API 從相機(jī)拍攝的圖像都是 numpy 數(shù)組。因此,數(shù)組必須轉(zhuǎn)換為圖像,調(diào)整大小以匹配 InceptionV3 CNN 要求,然后再轉(zhuǎn)換回圖像并進(jìn)一步預(yù)處理。使用具有多個(gè)可編程分辨率的相機(jī)可以避免這種情況。
與最新的 RTX 類(lèi) GPU 相比,Jetson Nano 沒(méi)有特別強(qiáng)大的 GPU,因此,訓(xùn)練網(wǎng)絡(luò)絕對(duì)應(yīng)該在主機(jī)筆記本電腦上完成。
。
。
網(wǎng)絡(luò)需要 2-3 分鐘來(lái)加載,因?yàn)樗x取并解析所有編碼。然后它讀取圖像幀并將其通過(guò)網(wǎng)絡(luò)傳遞。推理發(fā)生得非常快。
網(wǎng)絡(luò)最初會(huì)根據(jù)內(nèi)存不足發(fā)出一些警告。請(qǐng)記住,它沒(méi)有使用 TensorRT 進(jìn)行優(yōu)化,因此可以通過(guò)這樣做并用更好的 CNN(例如 Xception)替換 InceptionV3 來(lái)進(jìn)一步提高速度。
系統(tǒng)應(yīng)用
實(shí)施此類(lèi)系統(tǒng)的主要途徑是沿海監(jiān)控、公園安全監(jiān)控以及任何此類(lèi)場(chǎng)景,其中自動(dòng)監(jiān)控可用于對(duì)挽救生命和確保環(huán)境安全產(chǎn)生積極影響的應(yīng)用。
進(jìn)一步改進(jìn)
下一步是將 Tensorflow 模式轉(zhuǎn)換為 NVIDIA 的 TensorRT,以獲得額外的加速。
由于這是一個(gè)模塊化系統(tǒng),網(wǎng)絡(luò)的輸出可以傳遞給通知系統(tǒng),每當(dāng)圖像描述中出現(xiàn)感興趣的詞時(shí),通知系統(tǒng)就會(huì)發(fā)送一封電子郵件。
進(jìn)一步的發(fā)展是將其與對(duì)話式人工智能系統(tǒng)相結(jié)合,以構(gòu)建一個(gè)“詢(xún)問(wèn)和描述”系統(tǒng)。
結(jié)論
可以看出,網(wǎng)絡(luò)僅在圖像內(nèi)容與訓(xùn)練圖像相似的情況下表現(xiàn)良好。
為了改進(jìn)描述,需要使用更大的文本語(yǔ)料庫(kù)以及更大的注釋數(shù)據(jù)集。雖然 Flickr30K 的大小幾乎是當(dāng)前數(shù)據(jù)集的 4 倍,但如果使用 MSCoCO 數(shù)據(jù)集,可以獲得更好的結(jié)果。問(wèn)題是您需要強(qiáng)大的 GPU 或使用云。
- 2023年人工智能產(chǎn)業(yè)概況及應(yīng)用趨勢(shì)分析 6次下載
- 人工智能是干嘛的 人工智能在金融行業(yè)的應(yīng)用 0次下載
- 什么是人工智能 人工智能應(yīng)用領(lǐng)域 0次下載
- 人工智能用水監(jiān)測(cè)系統(tǒng)的構(gòu)建
- 人工智能專(zhuān)題報(bào)告:生成式人工智能產(chǎn)業(yè)全梳理 3次下載
- 基于人工智能驅(qū)動(dòng)的關(guān)鍵信息基礎(chǔ)設(shè)施防御 4次下載
- 人工智能賦能的查詢(xún)處理與優(yōu)化技術(shù) 48次下載
- 人工智能的倫理智能體應(yīng)用及相關(guān)研究 7次下載
- 人工智能的現(xiàn)狀是怎么樣的未來(lái)應(yīng)該如何發(fā)展 12次下載
- 如何理解和學(xué)習(xí)人工智能 7次下載
- 人工智能到底是什么?什么工作需要學(xué)習(xí)人工智能 17次下載
- 為什么Python是人工智能最好的編程語(yǔ)言Python有什么優(yōu)勢(shì) 15次下載
- 人工智能及其產(chǎn)業(yè)發(fā)展如何?人工智能標(biāo)準(zhǔn)化白皮書(shū)(2018版)免費(fèi)下載 0次下載
- 人工智能行業(yè)發(fā)展?fàn)顩r如何?人工智能行業(yè)研究報(bào)告詳細(xì)資料免費(fèi)下載 15次下載
- 電子書(shū) 中美人工智能行業(yè)生態(tài)比較 243次下載
- NLP技術(shù)在人工智能領(lǐng)域的重要性 235次閱讀
- 如何使用PyTorch構(gòu)建更高效的人工智能 210次閱讀
- 生成式人工智能和感知式人工智能的區(qū)別 1158次閱讀
- 人工智能發(fā)展的條件有哪些 8664次閱讀
- 破局人工智能:AI平臺(tái)及智能語(yǔ)音應(yīng)用解析 7036次閱讀
- DeepMind徹底解決人工智能災(zāi)難性遺忘問(wèn)題 3216次閱讀
- 關(guān)于人工智能領(lǐng)域最新的報(bào)告分析 4701次閱讀
- 人工智能技術(shù)有哪些_人工智能技術(shù)的原理 6.1w次閱讀
- 人工智能為何這么熱_人工智能價(jià)值與應(yīng)用_無(wú)人機(jī)屬于人工智能嗎 7411次閱讀
- 人工智能相關(guān)的人與技術(shù)都在這里_人工智能的相關(guān)技術(shù) 4754次閱讀
- 全球人工智能大學(xué)有哪些_人工智能全球大學(xué)排名 5.3w次閱讀
- 人工智能需要哪些知識(shí)_人工智能需要學(xué)什么_如何自學(xué)人工智能 4.4w次閱讀
- 人工智能對(duì)教育的沖擊及對(duì)孩子的影響 2w次閱讀
- 人工智能+教育這條路怎么走_(dá)人工智能+教育趨勢(shì)分析 2.4w次閱讀
- 為什么要發(fā)展人工智能_發(fā)展人工智能經(jīng)濟(jì)意義分析 4.8w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多