日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows使用opencv训练模型过程记录(提供样本)

發(fā)布時間:2024/4/11 windows 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows使用opencv训练模型过程记录(提供样本) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先按照這個指引安裝好所需要的工具:

Windows環(huán)境下訓(xùn)練OpenCV分類器

Windows環(huán)境下訓(xùn)練OpenCV分類器_@陌阡的博客-CSDN博客

Python + pip

下載 opencv_createsamples.exe和opencv_traincascade.exe

準(zhǔn)備訓(xùn)練庫opencv_bin,自己拍照進(jìn)行訓(xùn)練。

自己試了幾個訓(xùn)練結(jié)果,發(fā)現(xiàn)都不理想。一般訓(xùn)練識別不準(zhǔn)確。

后來經(jīng)過多次嘗試,覺得應(yīng)該收集更多正樣本,于是以消毒液為例子,自己進(jìn)行拍照,剪裁得到正樣本。我拍了130多張。

然后使用QQ截圖并剪裁功能,剪裁出了質(zhì)量達(dá)標(biāo)的105張:

然后使用上面博主提供的1.py進(jìn)行灰度和大小處理,得到正樣本105張:

import os

from skimage.color import rgb2gray

import numpy as np

import skimage.io as io

import cv2

def convert_gray(f, **args): ?# 圖片處理與格式化的函數(shù)

????rgb = io.imread(f) ?# 讀取圖片

????gray = rgb2gray(rgb) ?# 將彩色圖片轉(zhuǎn)換為灰度圖片

????dst = cv2.resize(gray, (50, 50)) ?# 調(diào)整大小,圖像分辨率為40*40

????return dst

if __name__ == '__main__':

????'''

????批量轉(zhuǎn)灰度圖

????'''

????datapath = r'.' ?# 圖片所在的路徑

????str = datapath + '/org/*.jpg' ?# 識別.jpg的圖像

????coll = io.ImageCollection(str, load_func=convert_gray) ?# 批處理

????for i in range(len(coll)):

????????io.imsave('./pos/' + np.str(i) + '.jpg', coll[i]) ?# 保存圖片

然后使用3.py生成info.txt, 使用上面下載到的負(fù)樣本生成 bg.txt

import os

def create_pos_n_neg():

????for file_type in ['pos', 'neg1964']: #此處修改neg或pos即可

????????if not os.path.exists(file_type):

????????????continue

????????for img in os.listdir(file_type):

????????????if (file_type.startswith('neg')):

????????????????line = 'D:/DEV_SDKs/Opencv/train3/'+file_type + '/' + img + '\n'

????????????????with open('bg.txt', 'a') as f:

????????????????????f.write(line)

????????????elif (file_type.startswith('pos')):

????????????????line = 'D:/DEV_SDKs/Opencv/train5/'+file_type + '/' + img + ' 1 0 0 50 50\n'

????????????????with open('info.txt', 'a') as f:

????????????????????f.write(line)

if __name__ == '__main__':

????create_pos_n_neg()

????print('描述文件已生成!')

生成的info.txt內(nèi)容是這樣的:

D:/DEV_SDKs/Opencv/train5/pos/0.jpg 1 0 0 50 50

D:/DEV_SDKs/Opencv/train5/pos/1.jpg 1 0 0 50 50

D:/DEV_SDKs/Opencv/train5/pos/10.jpg 1 0 0 50 50

...

生成的bg.txt內(nèi)容是這樣的:

D:/DEV_SDKs/Opencv/train5/neg/1.jpg

D:/DEV_SDKs/Opencv/train5/neg/10.jpg

D:/DEV_SDKs/Opencv/train5/neg/100.jpg

D:/DEV_SDKs/Opencv/train5/neg/11.jpg

...

這里使用的是絕對路徑,那只需要復(fù)制info.txt, bg.txt到需要的目錄而不需要修改圖片所在的目錄 。

下面到opencv_bin目錄下,把info.txt, bg.tx粘貼下來。生成樣本文件:

opencv_createsamples.exe -vec info.vec -info info.txt -bg bg.txt -num 105 -w 50 -h 50

這一步會生成一個?info.vec文件,下一步需要用到。

在opencv_bin目錄下創(chuàng)建一個data目錄用于存放結(jié)果,然后調(diào)用訓(xùn)練命令:

opencv_traincascade.exe -data data -vec info.vec -bg bg.txt -numPos 105 -numNeg 315 -numStages 20 ?-w 50 -h 50 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -featureType LBP

注意:雖然這里有1964個負(fù)樣本,但是不能用那么多,只需要正樣本的3倍就可以了;使用太多反而增加訓(xùn)練時間,影響準(zhǔn)確率。

等待了大約5小時,到stage15后就停止了,生成了一個13kb的結(jié)果xml, 測試了一下,基本能達(dá)到要求,需要還是有一定的誤識別率,但是對于需要識別的本尊基本都能穩(wěn)定識別到了。

其中樣本已上傳:

消毒液瓶doctmp.zip-機(jī)器學(xué)習(xí)文檔類資源-CSDN下載

總結(jié)

以上是生活随笔為你收集整理的Windows使用opencv训练模型过程记录(提供样本)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。