使用Tensorflow+OpenCV構(gòu)建會(huì)玩石頭剪刀布的AI
我使用了Python的OpenCV庫(kù)進(jìn)行所有與相機(jī)相關(guān)的操作,所以這里的label指的是圖像屬于哪個(gè)類(lèi),根據(jù)標(biāo)簽,圖像保存在適當(dāng)?shù)哪夸浿小t和maxCt是用來(lái)保存圖像的起始索引和最終索引,剩下的是標(biāo)準(zhǔn)的OpenCV代碼,用于獲取網(wǎng)絡(luò)攝像頭源并將圖像保存到目錄中。需要注意的一點(diǎn)是,我所有的圖片維數(shù)都是300 x 300的。運(yùn)行此目錄樹(shù)后,我的目錄樹(shù)如下所示。
C:.
├───paper
│ paper0.jpg
│ paper1.jpg
│ paper2.jpg
│
├───rock
│ rock0.jpg
│ rock1.jpg
│ rock2.jpg
│
└───scissor
scissor0.jpg
scissor1.jpg
scissor2.jpg
如果你引用的是Github存儲(chǔ)庫(kù)(https://github.com/HOD101s/RockPaperScissor-AI-) ,則getData.py會(huì)為你完成這項(xiàng)工作!預(yù)處理我們的數(shù)據(jù)我們需要使用圖像,而計(jì)算機(jī)可以識(shí)別數(shù)字,因此,我們將所有圖像轉(zhuǎn)換為它們各自的矢量表示,另外,我們的標(biāo)簽尚待生成,由于已建立的標(biāo)簽不能是文本,因此我使用shape_to_label字典為每個(gè)類(lèi)手動(dòng)構(gòu)建了“獨(dú)熱編碼”表示。
DATA_PATH = sys.a(chǎn)rgv[1] # Path to folder containing data
shape_to_label = {'rock':np.a(chǎn)rray([1.,0.,0.,0.]),'paper':np.a(chǎn)rray([0.,1.,0.,0.]),'scissor':np.a(chǎn)rray([0.,0.,1.,0.]),'ok':np.a(chǎn)rray([0.,0.,0.,1.])}
arr_to_shape = {np.a(chǎn)rgmax(shape_to_label[x]):x for x in shape_to_label.keys()}
imgData = list()
labels = list()
for dr in os.listdir(DATA_PATH):
if dr not in ['rock','paper','scissor']:
continue
print(dr)
lb = shape_to_label[dr]
i = 0
for pic in os.listdir(os.path.join(DATA_PATH,dr)):
path = os.path.join(DATA_PATH,dr+'/'+pic)
img = cv2.imread(path)
imgData.a(chǎn)ppend([img,lb])
imgData.a(chǎn)ppend([cv2.flip(img, 1),lb]) #horizontally flipped image
imgData.a(chǎn)ppend([cv2.resize(img[50:250,50:250],(300,300)),lb]) # zoom : crop in and resize
i+=3
print(i)
np.random.shuffle(imgData)
imgData,labels = zip(*imgData)
imgData = np.a(chǎn)rray(imgData)
labels = np.a(chǎn)rray(labels)
當(dāng)我們根據(jù)類(lèi)將圖像保存在目錄中時(shí),目錄名用作標(biāo)簽,該標(biāo)簽使用shape_to_label字典轉(zhuǎn)換為獨(dú)熱表示。在我們遍歷系統(tǒng)中的文件以訪問(wèn)圖像之后,cv2.imread()函數(shù)返回圖像的矢量表示。我們通過(guò)翻轉(zhuǎn)圖像并放大圖像來(lái)進(jìn)行一些手動(dòng)的數(shù)據(jù)增強(qiáng),這增加了我們的數(shù)據(jù)集大小,而無(wú)需拍攝新照片,數(shù)據(jù)增強(qiáng)是生成數(shù)據(jù)集的關(guān)鍵部分。最后,圖像和標(biāo)簽存儲(chǔ)在單獨(dú)的numpy數(shù)組中。cv2.imread()函數(shù)https://www.geeksforgeeks.org/python-opencv-cv2-imread-method/更多關(guān)于數(shù)據(jù)增強(qiáng)的信息。https://towardsdatascience.com/data-augmentation-for-deep-learning-4fe21d1a4eb9通過(guò)遷移學(xué)習(xí)建立我們的模型:在處理圖像數(shù)據(jù)時(shí),有許多經(jīng)過(guò)預(yù)訓(xùn)練的模型可供使用,這些模型已經(jīng)在具有數(shù)千個(gè)標(biāo)簽的數(shù)據(jù)集上進(jìn)行了訓(xùn)練,由于這些模型通過(guò)其應(yīng)用程序api的Tensorflow和Keras分布,我們可以使用這些模型,這使得在我們的應(yīng)用程序中包含這些預(yù)先訓(xùn)練的模型看起來(lái)很容易!
總之,遷移學(xué)習(xí)采用的是經(jīng)過(guò)預(yù)訓(xùn)練的模型,并且不包含進(jìn)行最終預(yù)測(cè)的最終層,能夠區(qū)分這種情況下圖像中的特征,并將這些信息傳遞給我們自己的Dense神經(jīng)網(wǎng)絡(luò)。為什么不訓(xùn)練你自己的模型呢?完全取決于你!然而,使用遷移學(xué)習(xí)可以在很多時(shí)候使你的進(jìn)步更快,從某種意義上說(shuō),你避免了重復(fù)造輪子。
發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
最新活動(dòng)更多
-
即日-10.29立即報(bào)名>> 2024德州儀器嵌入式技術(shù)創(chuàng)新發(fā)展研討會(huì)
-
10月31日立即下載>> 【限時(shí)免費(fèi)下載】TE暖通空調(diào)系統(tǒng)高效可靠的組件解決方案
-
即日-11.13立即報(bào)名>>> 【在線會(huì)議】多物理場(chǎng)仿真助跑新能源汽車(chē)
-
11月14日立即報(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中國(guó)智造CIO在線峰會(huì)
推薦專題
- 1 Intel宣布40年來(lái)最重大轉(zhuǎn)型:年底前裁員15000人、拋掉2/3房產(chǎn)
- 2 因美封殺TikTok,字節(jié)股價(jià)骨折!估值僅Meta1/5
- 3 宏山激光重磅發(fā)布行業(yè)解決方案,助力智能制造產(chǎn)業(yè)新飛躍
- 4 國(guó)產(chǎn)AI芯片公司破產(chǎn)!白菜價(jià)拍賣(mài)
- 5 具身智能火了,但規(guī)模落地還需時(shí)間
- 6 國(guó)產(chǎn)英偉達(dá)們,抓緊沖刺A股
- 7 三次錯(cuò)失風(fēng)口!OpenAI前員工殺回AI編程賽道,老東家捧金相助
- 8 英特爾賦能智慧醫(yī)療,共創(chuàng)數(shù)字化未來(lái)
- 9 英偉達(dá)的麻煩在后頭?
- 10 將“網(wǎng)紅”變成“商品”,AI“爆改”實(shí)力拉滿
- 高級(jí)軟件工程師 廣東省/深圳市
- 自動(dòng)化高級(jí)工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷(xiāo)售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級(jí)銷(xiāo)售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專家 廣東省/江門(mén)市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市