自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python項(xiàng)目實(shí)戰(zhàn)篇-常用驗(yàn)證碼標(biāo)注和識(shí)別

開發(fā) 后端
驗(yàn)證碼全稱為全自動(dòng)區(qū)分計(jì)算機(jī)和人類的圖靈測(cè)試(Completely Automated Public Turing test to tell Computers and Humans Apart,簡(jiǎn)稱CAPTCHA),俗稱驗(yàn)證碼,是一種區(qū)分用戶是計(jì)算機(jī)和人的公共全自動(dòng)程序。

[[422814]]

大家好,我是Snowball。

一、前言

今天給大家分享的實(shí)戰(zhàn)項(xiàng)目是常用驗(yàn)證碼標(biāo)注&識(shí)別,從想法誕生到實(shí)現(xiàn)思路,再到編碼實(shí)戰(zhàn)的整體過程,這個(gè)過程我前后整理了上萬字,計(jì)劃分章節(jié)來發(fā)布。言歸正傳,一起來看看今天的內(nèi)容吧!今天這篇內(nèi)容主要講解這篇文章的創(chuàng)作靈感、需求分析和實(shí)現(xiàn)思路。

首先介紹一下驗(yàn)證碼基本概念,驗(yàn)證碼全稱為全自動(dòng)區(qū)分計(jì)算機(jī)和人類的圖靈測(cè)試(Completely Automated Public Turing test to tell Computers and Humans Apart,簡(jiǎn)稱CAPTCHA),俗稱驗(yàn)證碼,是一種區(qū)分用戶是計(jì)算機(jī)和人的公共全自動(dòng)程序。驗(yàn)證碼的主要目的是強(qiáng)制人機(jī)交互來抵御機(jī)器自動(dòng)化攻擊,為了確保服務(wù)器系統(tǒng)的穩(wěn)定和用戶信息的安全,大部分網(wǎng)站采用了驗(yàn)證碼技術(shù)。圖片驗(yàn)證碼是目前最常用的一種,本文也主要討論這種驗(yàn)證碼的識(shí)別。

最初,圖片驗(yàn)證碼識(shí)別的想法最初源于12年的大學(xué)階段,當(dāng)時(shí)的學(xué)校教務(wù)系統(tǒng)每次搶課系統(tǒng)就崩潰,而且還要特定時(shí)間段跟其他同學(xué)一起搶指定課程,基本搶不到自己想修的課程,那時(shí)候就想繞過系統(tǒng)圖片驗(yàn)證碼通過代碼實(shí)現(xiàn)自動(dòng)搶課,鑒于當(dāng)時(shí)自己編碼能力和技術(shù)能力有限,機(jī)器學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)相關(guān)框架效果較差,最后以各種條件限制實(shí)現(xiàn)不了告終~~

XDM,等等,故事還沒完,時(shí)間回到2021年,做為一名勤于搬磚、善于思考學(xué)習(xí)的程序猿,在經(jīng)過幾年社會(huì)的毒打后,想著以現(xiàn)在自己的項(xiàng)目經(jīng)驗(yàn)、學(xué)習(xí)能力和編碼功底,以及行業(yè)內(nèi)機(jī)器學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)等AI技術(shù)的發(fā)展,能不能把多年以來的想法給實(shí)現(xiàn),達(dá)到圖片驗(yàn)證碼高正確率識(shí)別預(yù)測(cè),訓(xùn)練一個(gè)高度可用的CNN模型。在做項(xiàng)目之前經(jīng)過筆者幾天的資料查詢過程中,確信高可用的驗(yàn)證碼識(shí)別模型想法是可以做的,于是開啟了CNN神經(jīng)網(wǎng)絡(luò)等技術(shù)前置知識(shí)的漫長(zhǎng)學(xué)習(xí)過程。

幾個(gè)月過后,項(xiàng)目編碼實(shí)戰(zhàn)出爐,效果嘛,自我感覺還行,基本達(dá)到高可用,500張訓(xùn)練數(shù)據(jù)圖,CNN模型單個(gè)字符97%以上準(zhǔn)確率。

這里先貼項(xiàng)目的工程Git地址,有基礎(chǔ)的同學(xué)可以去直接拉取項(xiàng)目下來把玩源碼:

  1. [Java后臺(tái)-通用驗(yàn)證碼標(biāo)注系統(tǒng)](https://gitee.com/snowball2dev/DataMarkService)  
  2. [Vue管理后臺(tái)模板-通用驗(yàn)證碼標(biāo)注系統(tǒng)](https://gitee.com/snowball2dev/DataMarkService-Vue) 
  3. [Python-圖片驗(yàn)證碼識(shí)別模型案例](https://gitee.com/snowball2dev/VerifyCodeRecognize-Python) 
  4. [標(biāo)注系統(tǒng)線上效果體驗(yàn)地址](http://139.9.191.103:8084/) 

好的,XDM,如果到這里還有興趣往下看的話,那么就請(qǐng)跟隨結(jié)合筆者的學(xué)習(xí)、編碼實(shí)戰(zhàn)過程來了解常用的驗(yàn)證碼識(shí)別方法和過程。

二、需求分析

說到圖片驗(yàn)證碼識(shí)別功能,這個(gè)功能初步想想也簡(jiǎn)單,網(wǎng)上搜一下關(guān)鍵詞,相關(guān)文章和開源項(xiàng)目非常多。以下是github搜索結(jié)果:

乍一看,好像真有免費(fèi)的午餐,隨便下載個(gè)CNN-python項(xiàng)目,改幾行代碼,然后開始瘋狂標(biāo)注數(shù)據(jù)過程,就能跑出來模型。

筆者自己最初也是這么想的,只求簡(jiǎn)單粗暴,于是弄了幾個(gè)項(xiàng)目下來跑了之后,發(fā)現(xiàn)代碼是可以用,但是效果非常拉跨,單個(gè)字符識(shí)別正確率很低,70%不到,4-6個(gè)字符那正確率就更低了,基本上達(dá)不到高正確率,可用性非常一般。對(duì)于一個(gè)有追求的程序猿,不可能這么就完事了,于是,這就有了這個(gè)項(xiàng)目的整活。

在使用這些開源項(xiàng)目的過程中,發(fā)現(xiàn)下載的項(xiàng)目實(shí)現(xiàn)過程大都分為2種思路,第一種無需圖片切割,直接數(shù)據(jù)標(biāo)注訓(xùn)練模型;第二種為圖片驗(yàn)證碼進(jìn)行字符切割,然后為單個(gè)字符進(jìn)行分類訓(xùn)練。項(xiàng)目執(zhí)行的具體過程就不演示了,有興趣的讀者開源自行搗鼓,下面就是筆者自己對(duì)2種思路適用方式的實(shí)踐思考總結(jié):

1. 第一種無需圖片切割

優(yōu)點(diǎn):簡(jiǎn)單粗暴,通用性強(qiáng),直接用各種卷積神經(jīng)網(wǎng)絡(luò)模型硬懟圖片驗(yàn)證碼提取特征,適合知道驗(yàn)證碼生成的正向代碼過程,用代碼生成圖片驗(yàn)證碼數(shù)據(jù)給模型訓(xùn)練。

缺點(diǎn):數(shù)據(jù)量小時(shí)模型擬合效果差,需要大量人工標(biāo)注數(shù)據(jù),不太適合不知道驗(yàn)證碼生成規(guī)則,少量標(biāo)注數(shù)據(jù)。

2. 第二種進(jìn)行字符切割

針對(duì)驗(yàn)證碼生成規(guī)則,分析驗(yàn)證碼各種背景干擾、噪聲點(diǎn)像素、字體形變和累疊、字符位置隨機(jī)及個(gè)數(shù)不定、反色等情況,對(duì)圖片逆向處理,達(dá)到局部字符可切割,降低卷積模型層次,降低數(shù)據(jù)標(biāo)注量,實(shí)現(xiàn)字符分類。

優(yōu)點(diǎn):可針對(duì)單一圖片驗(yàn)證碼做特殊預(yù)處理,可實(shí)現(xiàn)部分字符切割,針對(duì)字符小圖進(jìn)行分類訓(xùn)練,小批量數(shù)據(jù)標(biāo)注就可以訓(xùn)練模型達(dá)到高擬合效果,達(dá)到可用

缺點(diǎn):通用性不強(qiáng),訓(xùn)練模型只適用特定圖片驗(yàn)證碼,復(fù)雜驗(yàn)證碼可能無法切割

XDM,等等,還有一種思路:

筆者自己學(xué)習(xí)OpenCV時(shí)想到的,通過圖片預(yù)處理,輪廓檢測(cè),然后對(duì)A-Z,0-9字符通過SIFT算法進(jìn)行特征提取,最后跟需要匹配的字符進(jìn)行FLANN匹配,理想很豐滿,然后編寫相關(guān)代碼后發(fā)現(xiàn)由于驗(yàn)證碼的正向生成過程導(dǎo)致字符特征變化太大,并不適合,于是放棄采用該思路,代碼見上述代碼鏈接中的python項(xiàng)目image_match.py。

根據(jù)以上思路總結(jié),根本沒有免費(fèi)的午餐,好的數(shù)據(jù)和特征工程同等重要,要實(shí)現(xiàn)好的效果,都是要根據(jù)具體問題具體分析,所以筆者分析自己的圖片驗(yàn)證碼識(shí)別案例,更適合第二種,另外一點(diǎn)原因大批量標(biāo)注數(shù)據(jù)人工成本過高,個(gè)人不太喜歡。以下將附帶案例詳細(xì)介紹第二種識(shí)別思路的實(shí)現(xiàn)過程。

三、實(shí)現(xiàn)思路

根據(jù)需求初步分析,大概可分為四個(gè)步驟:

1. 數(shù)據(jù)采集/預(yù)處理:http批量下載,OpenCV API使用學(xué)習(xí),圖片預(yù)處理

2. 數(shù)據(jù)標(biāo)注:GUI標(biāo)注功能開發(fā),人工標(biāo)注數(shù)據(jù)階段,模型訓(xùn)練后預(yù)測(cè)數(shù)據(jù)可進(jìn)行數(shù)據(jù)集補(bǔ)充

3. CNN神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練:windows環(huán)境,cpu/gpu,學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)框架API,微積分、線代、概率論等前置知識(shí),加深對(duì)神經(jīng)網(wǎng)絡(luò)模型理解,pytroch框架的使用

4. 項(xiàng)目部署:linux環(huán)境下,標(biāo)注系統(tǒng)VUE前端部署、標(biāo)注系統(tǒng)Java后端部署、Python模型部署

以下是Xmind腦圖導(dǎo)出效果:

四、總結(jié)

我是Snowball。這篇內(nèi)容主要講解了常用驗(yàn)證碼標(biāo)注&識(shí)別的背景知識(shí), 介紹了驗(yàn)證碼的基本概念,講述了這個(gè)文章的的創(chuàng)作靈感、需求分析和實(shí)現(xiàn)思路。

小伙伴們,快快用實(shí)踐一下吧!如果在學(xué)習(xí)過程中,有遇到任何問題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。

本文轉(zhuǎn)載自微信公眾號(hào)「Python爬蟲與數(shù)據(jù)挖掘  」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系Python爬蟲與數(shù)據(jù)挖掘公眾號(hào)。

 

責(zé)任編輯:武曉燕 來源: Python爬蟲與數(shù)據(jù)挖掘
相關(guān)推薦

2021-09-16 07:52:18

Python項(xiàng)目實(shí)戰(zhàn)

2021-09-11 09:07:17

Python驗(yàn)證碼標(biāo)注

2021-09-18 09:15:39

Python神經(jīng)網(wǎng)絡(luò)Python基礎(chǔ)

2013-06-19 10:19:59

2024-01-29 08:32:10

Python驗(yàn)證碼識(shí)別

2020-12-29 05:33:03

Serverless驗(yàn)證碼架構(gòu)

2016-11-03 13:33:31

2016-11-08 19:19:06

2023-10-27 08:53:13

Python驗(yàn)證碼圖片識(shí)別

2022-02-17 10:34:21

神經(jīng)網(wǎng)絡(luò)識(shí)別驗(yàn)證碼

2022-05-11 07:41:31

Python驗(yàn)證碼

2021-02-04 10:08:34

騰訊云驗(yàn)證碼醫(yī)療影像

2021-06-16 06:58:09

TensorFlow識(shí)別驗(yàn)證碼

2014-04-24 10:09:05

驗(yàn)證碼C#

2021-07-22 10:25:07

JS驗(yàn)證碼前端

2009-08-06 16:30:58

C#代碼和驗(yàn)證碼圖片

2020-11-16 07:28:53

驗(yàn)證碼

2009-08-11 14:05:28

JSP驗(yàn)證碼

2009-02-09 14:17:36

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)