yolov5實(shí)戰(zhàn)之二維碼檢測(數(shù)據(jù)+模型)

目錄
1.前言
2.二維碼數(shù)據(jù)
3.訓(xùn)練配置
3.1數(shù)據(jù)集設(shè)置
3.2訓(xùn)練參數(shù)的配置
3.3網(wǎng)絡(luò)結(jié)構(gòu)設(shè)置
3.4訓(xùn)練
3.5結(jié)果示例
模型下載
1.前言
之前總結(jié)過yolov5來做皮卡丘的檢測,用來熟悉yolov5的使用,不過總歸是個(gè)demo型的應(yīng)用,沒啥實(shí)用價(jià)值。后來正好項(xiàng)目上有需要在成像條件不好的情況去檢測二維碼,傳統(tǒng)的二維碼檢測方式基本上是通過角點(diǎn)檢測定位二維碼的三個(gè)定位點(diǎn),在成像不好的時(shí)候,很容易失敗。如果用深度學(xué)習(xí)去做魯棒性就強(qiáng)很多,在檢測到二維碼之后,可以進(jìn)行調(diào)焦或圖像增強(qiáng)等手段,輔助后續(xù)的二維碼識別過程。
環(huán)境準(zhǔn)備同?yolov5實(shí)戰(zhàn)之皮卡丘檢測
2.二維碼數(shù)據(jù)
首先第一步肯定是需要準(zhǔn)備數(shù)據(jù)了,通過網(wǎng)絡(luò)我們可以找到不少二維碼數(shù)據(jù),通過打標(biāo)后,就可以得到第一批數(shù)據(jù)了。僅通過網(wǎng)絡(luò)圖片還是不夠的,因?yàn)檎业降亩S碼圖像的背景不一定符合我們的實(shí)際使用場景,僅僅用這些數(shù)據(jù)訓(xùn)練,雖然能檢測到二維碼,但是誤檢也會比較嚴(yán)重。所以還需要人造一些數(shù)據(jù),我們可以將二維碼摳出來,貼到各種各樣的背景圖上去,用于擴(kuò)增我們的數(shù)據(jù)集。
數(shù)據(jù)制作具體也可以參考皮卡丘那篇,或者官方repo:?https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data
數(shù)據(jù)生成大概的代碼:
3.訓(xùn)練配置
3.1數(shù)據(jù)集設(shè)置
新建qrcode_dataset.yml, 設(shè)置下數(shù)據(jù)集的路徑
3.2訓(xùn)練參數(shù)的配置
可以根據(jù)自己的任務(wù)設(shè)置下數(shù)據(jù)增強(qiáng)比例這些:
3.3網(wǎng)絡(luò)結(jié)構(gòu)設(shè)置
根據(jù)需要調(diào)整設(shè)置自己的網(wǎng)絡(luò)大小以及根據(jù)想要檢測的二維碼大小設(shè)置anchor:
anchor在非finetune訓(xùn)練方式下,默認(rèn)是通過數(shù)據(jù)集計(jì)算出來的,若要關(guān)閉這個(gè)功能,需要訓(xùn)練時(shí)開啟”--noautoanchor"選項(xiàng)。
3.4訓(xùn)練
設(shè)置上述這些,就可以開始訓(xùn)練了,由于我修改了網(wǎng)絡(luò)結(jié)構(gòu),所以先是從頭訓(xùn)練了,然后又進(jìn)行了一次finetune訓(xùn)練。訓(xùn)練可以指定的參數(shù):
大部分情況下,我們只需要設(shè)置batchsize, epoch數(shù),cfg這幾個(gè)
同樣的,訓(xùn)練結(jié)果可以在控制臺看或通過wandb查看(參見pikachu那篇)。
3.5結(jié)果示例
模型下載
輕量級二維碼檢測模型:模型下載
數(shù)據(jù)集下載:https://download.csdn.net/download/liuhao3285/87771958