日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用TensorFlow 2識(shí)別驗(yàn)證碼過(guò)程中踩過(guò)的坑

Tensorflowers ? 來(lái)源:TensorFlow ? 作者:TensorFlow ? 2020-10-22 16:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在學(xué)習(xí)了 CNN 之后,我一直想去做一個(gè)驗(yàn)證碼識(shí)別。網(wǎng)上找了很多資料,雜七雜八的一大堆,但是好多是 tf1 寫(xiě)的。我對(duì) tf1 不太熟悉,于是自己開(kāi)始了基于 TensorFlow 2 的摸索實(shí)踐。

摸索的過(guò)程異常艱難,一開(kāi)始我直接用 captcha 生成了 10080 張驗(yàn)證碼去識(shí)別,發(fā)現(xiàn) loss 一直停留在 2.3 左右,accuracy 一直是 0.1 左右,訓(xùn)練了 100 回合,也沒(méi)什么提升,電腦都快要跑廢了,咋辦呀?于是網(wǎng)上各種問(wèn)大佬,找到機(jī)會(huì)就提問(wèn),其中一位大佬的回答讓我受到了啟發(fā),他說(shuō):你可以先識(shí)別 1 位,然后 2 位,3 位,最后 4 位,一步一步來(lái)……。

本文主要描述我在驗(yàn)證碼識(shí)別過(guò)程中的一些摸索,整理出來(lái)以供大家參考:

第一回:搭建網(wǎng)絡(luò)結(jié)構(gòu)

首先我們需要搭建網(wǎng)絡(luò)結(jié)構(gòu),如下:

model=tf.keras.models.Sequential([ tf.keras.Input(shape=(H, W, C)), layers.Conv2D(32, 3, activation='relu'), layers.MaxPooling2D((2, 2)), layers.Conv2D(64, 3, activation='relu'), layers.MaxPooling2D((2, 2)), layers.Conv2D(64, 3, activation='relu'), layers.MaxPooling2D((2, 2)), layers.Conv2D(64, 3, activation='relu'), layers.MaxPooling2D((2, 2)), layers.Conv2D(64, 3, activation='relu'), layers.MaxPooling2D((2, 2)), layers.Flatten(), layers.Dense(1024, activation='relu'), layers.Dense(D * N_LABELS, activation='softmax'), layers.Reshape((D, N_LABELS)), ]) model.compile(optimizer='adam', loss='categorical_crossentropy', metrics= ['accuracy']) callbacks=[ tf.keras.callbacks.TensorBoard(log_dir='logs'), tf.keras.callbacks.ModelCheckpoint(filepath=check_point_path, save_weights_only=True, save_best_only=True) ] history = model.fit(train_gen, steps_per_epoch=len(train_idx)//batch_size, epochs=100, callbacks=callbacks, validation_data=valid_gen, validation_steps=len(valid_idx)//valid_batch_size)

summary:

我的訓(xùn)練數(shù)據(jù)量:train count: 7408, valid count: 3176, test count: 4536

樣本圖:

訓(xùn)練結(jié)果:

Train for 231 steps, validate for 99 steps Epoch 1/100 1/231 […] - ETA: 4:18 - loss: 2.2984 - accuracy: 0.1328 231/231 [==============================] - 143s 618ms/step - loss: 2.3032 - accuracy: 0.0971 - val_loss: 2.3029 - val_accuracy: 0.0987 Epoch 2/100 230/231 [============================>.] - ETA: 0s - loss: 2.3026 - accuracy: 0.1014 231/231 [==============================] - 121s 525ms/step - loss: 2.3026 - accuracy: 0.1013 - val_loss: 2.3031 - val_accuracy: 0.0986 Epoch 3/100 230/231 [============================>.] - ETA: 0s - loss: 2.3026 - accuracy: 0.1029 231/231 [==============================] - 138s 597ms/step - loss: 2.3026 - accuracy: 0.1026 - val_loss: 2.3032 - val_accuracy: 0.0986 Epoch 4/100 230/231 [============================>.] - ETA: 0s - loss: 2.3025 - accuracy: 0.1031 231/231 [==============================] - 124s 537ms/step - loss: 2.3025 - accuracy: 0.1031 - val_loss: 2.3032 - val_accuracy: 0.0987 Epoch 5/100 230/231 [============================>.] - ETA: 0s - loss: 2.3025 - accuracy: 0.1040 231/231 [==============================] - 123s 532ms/step - loss: 2.3025 - accuracy: 0.1039 - val_loss: 2.3032 - val_accuracy: 0.0989 Epoch 6/100 230/231 [============================>.] - ETA: 0s - loss: 2.3025 - accuracy: 0.1039 231/231 [==============================] - 118s 509ms/step - loss: 2.3025 - accuracy: 0.1038 - val_loss: 2.3033 - val_accuracy: 0.0988 … Epoch 20/100 230/231 [============================>.] - ETA: 0s - loss: 2.3025 - accuracy: 0.1038 231/231 [==============================] - 120s 521ms/step - loss: 2.3025 - accuracy: 0.1038 - val_loss: 2.3034 - val_accuracy: 0.0988 Epoch 21/100 190/231 [=======================>…] - ETA: 20s - loss: 2.3025 - accuracy: 0.1032

loss 一直沒(méi)有變化,accuracy 也很低,不知道出現(xiàn)了什么原因,困擾一兩個(gè)星期,都想要放棄了,太難了。但是我不死心,非要把它搞出來(lái),4 位識(shí)別不出來(lái),能不能先識(shí)別一位呢?好,那就開(kāi)始搞,一位比較簡(jiǎn)單,跟 Mnist 數(shù)據(jù)集很相似,在這我就不贅述了。

第二回:2 位彩色驗(yàn)證碼訓(xùn)練

接著來(lái)識(shí)別 2 位的驗(yàn)證碼。train count: 441, valid count: 189, test count: 270

樣本圖:

下面是我用 2 位驗(yàn)證碼進(jìn)行訓(xùn)練的結(jié)果:

30 張圖片進(jìn)行測(cè)試,結(jié)果:

哎呦,有感覺(jué)了,有了起色了,但是出現(xiàn)了過(guò)擬合的現(xiàn)象,解決過(guò)擬合的方法主要有:

Get more training data

Reduce the capacity of the network

Add weight regularization

Add dropout

Data-augmentation

Batch normalization

第三回:增加彩色驗(yàn)證碼數(shù)據(jù)集

于是我就增加了數(shù)據(jù)集。train count: 4410, valid count: 1890, test count: 2700

然后又出現(xiàn)了 loss 一直在 2.3,accuracy 在 0.09 左右,這是什么鬼呢?但是我還是不死心呀,繼續(xù)想辦法呀,既然彩色的有難度,我先識(shí)別黑白的樣本行不行呢,先試試吧。

第四回:2 位黑白驗(yàn)證碼訓(xùn)練

網(wǎng)絡(luò)結(jié)構(gòu)依然采用上面的,input_shape(100,120,3)。

這是我用 2 位的黑白圖片的驗(yàn)證碼進(jìn)行了訓(xùn)練,效果很好,收斂也很快。

訓(xùn)練第 50 回合時(shí):

Epoch 50/50 26/27 [============>…] - ETA: 0s - loss: 0.0150 - accuracy: 0.9940 27/27 [==============] - 8s 289ms/step - loss: 0.0212 - accuracy: 0.9936 - val_loss: 0.2348 - val_accuracy: 0.9446

隨機(jī)選取了 30 張圖片進(jìn)行了測(cè)試,2 張識(shí)別錯(cuò)了:

樣本圖:

看著這結(jié)果,我露出了潔白的大牙,信心大增呀,繼續(xù)搞,直接上 4 位驗(yàn)證碼。

第五回:4 位黑白驗(yàn)證碼訓(xùn)練

依然采用上面的網(wǎng)絡(luò)結(jié)構(gòu),這次使用的是 4 位黑白圖片的驗(yàn)證碼。train count: 2469, valid count: 1059, test count: 1512

訓(xùn)練第 20 回合:

Epoch 20/20 76/77 [====>.] - ETA: 0s - loss: 0.0409 - accuracy: 0.9860 77/77 [======] - 33s 429ms/step - loss: 0.0408 - accuracy: 0.9861 - val_loss: 0.3283 - val_accuracy: 0.9221

隨機(jī)選取 30 張圖片進(jìn)行測(cè)試,8 張錯(cuò)誤:

4 位驗(yàn)證碼的樣本圖:

從結(jié)果來(lái)看,有點(diǎn)過(guò)擬合,沒(méi)關(guān)系,繼續(xù)加大數(shù)據(jù)集。

第六回:增加黑白驗(yàn)證碼數(shù)據(jù)集

依舊采用上面的網(wǎng)絡(luò)結(jié)構(gòu),這次我增加了數(shù)據(jù)集 4939 張,依舊使用的是 4 位黑白的驗(yàn)證碼,訓(xùn)練結(jié)果還是挺好的:train count: 4939, valid count: 2117, test count: 3024

第 20 回合:

Epoch 20/20 153/154 [==>.] - ETA: 0s - loss: 0.0327 - accuracy: 0.9898 154/154 [====] - 75s 488ms/step - loss: 0.0329 - accuracy: 0.9898 - val_loss: 0.1057 - val_accuracy: 0.9740

可以看出 訓(xùn)練集的準(zhǔn)確率 跟驗(yàn)證集上很接近,隨機(jī)選取 30 張圖片進(jìn)行測(cè)試,6 張錯(cuò)誤圖如下:

好了,搞了這么多,由此我覺(jué)得是噪點(diǎn)影響了深度學(xué)習(xí)的識(shí)別,maxpool 的時(shí)候連帶著噪點(diǎn)也采樣了,我們需要將噪點(diǎn)處理掉,再喂入神經(jīng)網(wǎng)絡(luò)。

第七回:預(yù)處理

在上面的推理中,我感覺(jué)是噪點(diǎn)影響了神經(jīng)網(wǎng)絡(luò)的識(shí)別,于是乎我在送入網(wǎng)絡(luò)之前進(jìn)行了去噪,二值化操作,訓(xùn)練如下:train count: 4939, valid count: 2117, test count: 3024

從圖中可以看出,模型收斂了,但有點(diǎn)過(guò)擬合,第 20 回合訓(xùn)練結(jié)果如下:

Epoch 20/20 153/154 [==>.] - ETA: 0s - loss: 0.0407 - accuracy: 0.9861 154/154 [===] - 69s 450ms/step - loss: 0.0408 - accuracy: 0.9860 - val_loss: 0.3227 - val_accuracy: 0.9244

隨機(jī)選取了 30 張圖片進(jìn)行了測(cè)試,8 張錯(cuò)誤:

做到這里, 我對(duì)之前的推測(cè)有了猜疑:是噪點(diǎn)影響的嗎?我覺(jué)得不完全是。核心原因是我在嘗試的過(guò)程中對(duì)驗(yàn)證碼進(jìn)行了處理,從 RGB 的驗(yàn)證碼變成了單通道的黑白驗(yàn)證碼,使得圖片的信息減少了,神經(jīng)網(wǎng)絡(luò)的計(jì)算量也大大減少了,網(wǎng)絡(luò)模型很快得到了收斂,loss 顯著減少,accuracy 在不斷提高。

整個(gè)過(guò)程是使用 CPU 進(jìn)行訓(xùn)練的,電腦配置是 Intel_Corei7-6700HQ_CPU@_2.60GHz,8G 內(nèi)存。如果大家的電腦配置高,用 GPU 進(jìn)行訓(xùn)練,我覺(jué)得即使不做預(yù)處理,效果也能出來(lái)。


責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cnn
    cnn
    +關(guān)注

    關(guān)注

    3

    文章

    356

    瀏覽量

    23563
  • tensorflow
    +關(guān)注

    關(guān)注

    13

    文章

    336

    瀏覽量

    62406
  • 驗(yàn)證碼
    +關(guān)注

    關(guān)注

    2

    文章

    20

    瀏覽量

    4896

原文標(biāo)題:經(jīng)驗(yàn)總結(jié):使用 TensorFlow 2 識(shí)別驗(yàn)證碼過(guò)程中踩過(guò)的坑

文章出處:【微信號(hào):tensorflowers,微信公眾號(hào):Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    實(shí)測(cè)不!羅德與施瓦茨FSP3,射頻發(fā)燒黨的剛需主力機(jī)

    玩射頻也有好幾年了,從入門(mén)級(jí)的入門(mén)機(jī)型換到中高端旗艦,過(guò)不少,也摸過(guò)不少經(jīng)典款。今天就來(lái)聊聊我自用大半年的羅德與施瓦茨FSP3,實(shí)打?qū)嵉膶?shí)測(cè)感受,沒(méi)有虛標(biāo)吹捧,全是發(fā)燒黨關(guān)心的干貨,適合剛?cè)?/div>
    的頭像 發(fā)表于 04-25 15:11 ?646次閱讀
    實(shí)測(cè)不<b class='flag-5'>踩</b><b class='flag-5'>坑</b>!羅德與施瓦茨FSP3,射頻發(fā)燒黨的剛需主力機(jī)

    光耦失效的N種現(xiàn)場(chǎng)!工程師都過(guò)

    在電子電路設(shè)計(jì),光電耦合器(光耦)憑借電氣隔離、信號(hào)傳輸、抗干擾等核心優(yōu)勢(shì),成為電源、工控、汽車(chē)電子、醫(yī)療設(shè)備等領(lǐng)域不可或缺的基礎(chǔ)器件。它看似結(jié)構(gòu)簡(jiǎn)單、應(yīng)用便捷,卻藏著無(wú)數(shù)容易被忽略的“陷阱”,幾乎每位硬件工程師都在光耦上過(guò)失效的
    的頭像 發(fā)表于 04-23 11:18 ?268次閱讀
    光耦失效的N種現(xiàn)場(chǎng)!工程師都<b class='flag-5'>踩</b><b class='flag-5'>過(guò)</b>的<b class='flag-5'>坑</b>

    深耕電路板加工8年,從到精通,這些實(shí)操經(jīng)驗(yàn)幫你少走90%彎路

    大家好,從事電路板(PCB)加工行業(yè)整整13年,從最初跟著師傅學(xué)習(xí)的學(xué)徒,到現(xiàn)在能獨(dú)立負(fù)責(zé)從樣品打樣到批量量產(chǎn)的全流程,期間過(guò)、總結(jié)的經(jīng)驗(yàn),今天一次性分享給大家——無(wú)論你是剛?cè)胄械男率?,還是
    發(fā)表于 04-16 09:31

    PCB顏色選購(gòu)避指南:別再被&quot;黑色高端&quot;忽悠了!

    做硬件這么多年,發(fā)現(xiàn)很多新手甚至部分老工程師選PCB顏色都過(guò):覺(jué)得黑色更高端、藍(lán)色更好看、紫色更個(gè)性,結(jié)果投產(chǎn)之后要么良率暴跌,要么成本翻倍,最后還是老老實(shí)實(shí)換回綠色。今天就把PCB顏色選擇的底層邏輯說(shuō)透,看完再也不會(huì)
    的頭像 發(fā)表于 03-26 14:06 ?203次閱讀

    N溝道 vs P溝道MOS管,怎么選才不?一文搞懂選型關(guān)鍵

    ? ? ? ?在電子電路設(shè)計(jì)、元器件選型過(guò)程中,MOS管是最常用的開(kāi)關(guān)/放大器件之一,而N溝道(N-MOS)和P溝道(P-MOS)的選擇,直接決定電路能否穩(wěn)定工作、成本是否可控,甚至?xí)粫?huì)出現(xiàn)“燒管
    的頭像 發(fā)表于 03-18 08:47 ?1220次閱讀
    N溝道 vs P溝道MOS管,怎么選才不<b class='flag-5'>踩</b><b class='flag-5'>坑</b>?一文搞懂選型關(guān)鍵

    從零開(kāi)始做嵌入式數(shù)字時(shí)鐘,我過(guò)的三個(gè)大坑

    作為一名剛完成嵌入式數(shù)字時(shí)鐘項(xiàng)目的開(kāi)發(fā),回顧這段經(jīng)歷,真是一邊一邊成長(zhǎng)。這個(gè)項(xiàng)目看似簡(jiǎn)單——不就是顯示個(gè)時(shí)間嗎?實(shí)際動(dòng)手才發(fā)現(xiàn),從“能跑”到“準(zhǔn)時(shí)報(bào)時(shí)”,中間隔著好幾個(gè)不眠之夜。今天就把我真實(shí)
    的頭像 發(fā)表于 03-06 10:49 ?221次閱讀
    從零開(kāi)始做嵌入式數(shù)字時(shí)鐘,我<b class='flag-5'>踩</b><b class='flag-5'>過(guò)</b>的三個(gè)大坑

    到高效落地:關(guān)鍵詞搜索淘寶天貓商品列表 API 的實(shí)操心得

    到高效落地:關(guān)鍵詞搜索淘寶天貓商品列表 API 的實(shí)操心得 (適合做:選品、比價(jià)、代購(gòu)集運(yùn)、店鋪上貨、數(shù)據(jù)分析、返利工具的同學(xué)直接落地) 一、開(kāi)篇:為什么 90% 的人都會(huì)卡在「關(guān)鍵詞搜索
    的頭像 發(fā)表于 02-28 14:22 ?1536次閱讀

    K8s生產(chǎn)環(huán)境10大記錄復(fù)盤(pán)

    這篇文章記錄了我這些年在 K8s 生產(chǎn)環(huán)境過(guò)。每一個(gè)案例都是血淚教訓(xùn),有些甚至導(dǎo)致了生產(chǎn)事故。希望通過(guò)分享這些經(jīng)歷,能幫助大家避免重蹈覆轍。
    的頭像 發(fā)表于 02-05 15:51 ?735次閱讀

    記ESP32CAM解決指南,已反映商家

    中國(guó)香河英茂科工沒(méi)有一個(gè)鴨蛋是白吃的,沒(méi)有一分錢(qián)融資是百花的,都轉(zhuǎn)化為科技成果----記ESP32CAM解決指南,已反映商家 https://user.qzone.qq.com/382905282/blog/1770127464
    發(fā)表于 02-03 22:23

    智能工廠(chǎng)改造?有人物聯(lián)網(wǎng)手把手教你挑對(duì)系統(tǒng)

    中小工廠(chǎng)砸?guī)资f(wàn)搞智能改造,結(jié)果了最冤的:花 “智慧工廠(chǎng)系統(tǒng)” 的錢(qián),買(mǎi)的只是個(gè) “升級(jí)款工廠(chǎng)監(jiān)控系統(tǒng)”—— 只能看設(shè)備轉(zhuǎn)不轉(zhuǎn),沒(méi)法調(diào)生產(chǎn)、降能耗,錢(qián)直接打了水漂。智能改造選系統(tǒng),真的像開(kāi)盲盒
    的頭像 發(fā)表于 12-19 14:20 ?447次閱讀
    智能工廠(chǎng)改造<b class='flag-5'>踩</b><b class='flag-5'>坑</b>?有人物聯(lián)網(wǎng)手把手教你挑對(duì)系統(tǒng)

    STM32 5 個(gè)容易的外設(shè)使用技巧

    STM32是嵌入式開(kāi)發(fā)領(lǐng)域的熱門(mén)MCU,功能豐富到幾乎可以完成所有常見(jiàn)控制任務(wù):GPIO、ADC、UART、定時(shí)器、DMA……應(yīng)有盡有。但是,正因?yàn)楣δ軓?qiáng)大,開(kāi)發(fā)的機(jī)會(huì)也隨之增多。很多初學(xué)者
    的頭像 發(fā)表于 11-24 19:04 ?1000次閱讀
    STM32 5 個(gè)容易<b class='flag-5'>踩</b><b class='flag-5'>坑</b>的外設(shè)使用技巧

    JLink、RV Debugger及串口下載使用體驗(yàn)和

    自己搭配調(diào)試器或串口工具來(lái)進(jìn)行,雖然造成了一定麻煩,卻也是學(xué)習(xí)()的好機(jī)會(huì)。 以下將以調(diào)試器為順序,簡(jiǎn)單敘述使用感受及過(guò)程中過(guò)
    發(fā)表于 11-05 12:04

    自動(dòng)化測(cè)試如何繞過(guò)Cloudflare驗(yàn)證碼?Python + Selenium 腳本實(shí)戰(zhàn)指南!

    01什么是Cloudflare驗(yàn)證碼Cloudflare提供網(wǎng)絡(luò)工具,并提供一套全面的安全功能,以保護(hù)網(wǎng)站免受各種在線(xiàn)威脅。Cloudflare驗(yàn)證碼是一種用于區(qū)分人類(lèi)用戶(hù)和自動(dòng)化機(jī)器人的功能。它是
    的頭像 發(fā)表于 08-15 10:01 ?1675次閱讀
    自動(dòng)化測(cè)試如何繞過(guò)Cloudflare<b class='flag-5'>驗(yàn)證碼</b>?Python + Selenium 腳本實(shí)戰(zhàn)指南!

    UWB自動(dòng)跟隨技術(shù)原理、算法融合優(yōu)化和實(shí)錄

    UWB為什么是最靠譜的自動(dòng)跟隨技術(shù)?原理是什么?需要做什么算法融合、優(yōu)化?我們?cè)陂_(kāi)發(fā)過(guò)程中過(guò)。
    的頭像 發(fā)表于 08-14 17:45 ?1824次閱讀
    UWB自動(dòng)跟隨技術(shù)原理、算法融合優(yōu)化和<b class='flag-5'>踩</b><b class='flag-5'>坑</b>實(shí)錄

    HarmonyOS5云服務(wù)技術(shù)分享--手機(jī)號(hào)登錄教程

    ;requestPermissions\": [ {\"name\": \"ohos.permission.READ_SMS\"} // 如果需要自動(dòng)讀取短信驗(yàn)證碼 ]` 三、核心
    發(fā)表于 05-22 15:37
    洛宁县| 望谟县| 工布江达县| 巢湖市| 新巴尔虎右旗| 丁青县| 怀宁县| 芒康县| 新丰县| 东辽县| 曲水县| 水城县| 高唐县| 区。| 鄂托克旗| 荔波县| 仪陇县| 桐柏县| 淮滨县| 饶阳县| 方城县| 河间市| 佳木斯市| 吐鲁番市| 潞城市| 新建县| 滦南县| 滨州市| 马尔康县| 鹤庆县| 上饶市| 安岳县| 金阳县| 甘肃省| 磐石市| 贵溪市| 桓台县| 万荣县| 巨鹿县| 西畴县| 南阳市|