第12章 里程碑
「陳陽!「
沈清雪從教學樓另一側跑過來,手裡抱著書。
「你怎麼在這兒?「陳陽問。
「剛下課啊。「
沈清雪說,「看到你跟姚教授在聊天,就沒打擾。聊得怎麼樣?「
「還不錯。「陳陽笑道,「姚教授對我的項目挺感興趣的。「
「那當然,你做的東西這麼厲害。「沈清雪說,「對了,你今晚去工作室嗎?我也過去,幫你測試。「
「去。「陳陽說,「周末要把身份證識別做完,你來正好。「
「好!「沈清雪眼睛亮了,「我先回宿舍放書,晚飯後就過去。「
周五晚上七點,華清嘉園工作室。
陳陽坐在電腦前,手指在鍵盤上飛快地敲擊。
屏幕上是密密麻麻的代碼,都是他這幾天寫的身份證識別系統,以及驗證數據增強技術。
因為獲取不到大量的身份證原件,陳陽只能寫了一整套數據增強的腳本來模擬,各種實際情況下出現的場景,比如:
隨機旋轉:-30度到30度隨機縮放:0.8倍到1.2倍
隨機裁剪:模擬不同的拍照距離光照變化:模擬不同的光線條件
添加噪點:模擬圖像質量差的情況
模糊處理:模擬對焦不清晰的情況
透視變換:模擬不同的拍照角度
用這些方法,他把手裡的幾張原始身份證圖片,擴充到了20000張訓練樣本。
這種數據增強的技術,用少量真實數據,生成大量多樣化的訓練樣本,讓模型見過各種極端情況。
「陳陽,我來了!「
門開了,沈清雪提著一個大袋子走進來。
「買了什麼?「陳陽轉過頭。
「吃的!「
沈清雪把袋子放在桌上,「我估計今晚又要熬夜,所以買了一堆零食。還有紅牛,提神的。「
她從袋子裡掏出一大堆東西:薯片、巧克力、餅乾、瓜子、紅牛、咖啡。
「你這是搬超市了嗎?「陳陽笑道。
「嘿嘿,有備無患嘛。「沈清雪拉了把椅子坐在他旁邊,「現在進度怎麼樣了?「
「模型訓練剛跑完第一輪。「陳陽指著另一台電腦的屏幕,上面顯示著訓練過程的曲線圖。
「準確率多少?「
「92%。「陳陽說,「還不夠,我的目標是99%以上。「
「99%?「沈清雪有些驚訝,「這麼高?「
「必須高。「陳陽解釋道,「身份證識別用在實名認證的場景,容錯率很低。如果準確率只有90%,意味著每100張身份證就有10張識別錯誤,這在實際應用中是不可接受的。「
「那怎麼提高準確率?「
「繼續訓練,優化參數,增加數據。「陳陽說,「另外,我準備加一個後處理模塊,用規則約束來糾正一些明顯的錯誤。比如身份證號必須是18位,出生日期必須是合理的日期格式等等。「
「明白了。「沈清雪點點頭,「我能幫什麼忙?「
「幫我準備測試數據。「陳陽把一個U盤遞給她,「這裡面有500張身份證圖片,你幫我把每張的正確信息都錄入到Excel表格里。等模型訓練完,我們用這些數據來測試準確率。「
「好!「沈清雪接過U盤,打開自己的電腦,開始工作。
兩人就這樣並肩坐著,各自忙各自的。
工作室里很安靜,只有鍵盤的敲擊聲和電腦風扇的嗡鳴聲。
偶爾沈清雪會問一句「這個字是什麼「,陳陽就湊過去看一眼,然後告訴她。
時間一點點流逝。
晚上九點,模型訓練完第二輪,準確率提升到95%。
晚上十一點,第三輪完成,準確率96.5%。
「累不累?「陳陽問沈清雪。
「還好。「沈清雪伸了個懶腰,「就是眼睛有點酸。「
「休息一下吧。「陳陽說,「出去走走。「
兩人走出工作室,來到樓下的小區花園。
秋天的夜晚有些涼,風吹過來,樹葉沙沙作響。
小區里很安靜,只有幾盞路燈還亮著。
「陳陽,「沈清雪忽然說,「我覺得一起做一件事情,一起努力,一起看著它慢慢成長。這種感覺,比上課有意思多了。「
陳陽看著她,月光下,她的臉上帶著認真的表情。
「辛苦你了。「陳陽說,「明明可以在宿舍休息,卻跟著我熬夜。「
「我願意啊。「沈清雪笑道,「而且我也學到了很多東西。以前只是寫寫作業,現在才知道真正的項目是什麼樣的。「
兩人在花園裡走了一圈,然後回到工作室繼續工作。
凌晨兩點,陳陽完成了後處理模塊的開發。
這個模塊會對識別結果進行多重驗證:
身份證號碼必須是18位,前17位是數字,最後一位是數字或X身份證號碼的前6位是地區碼,必須是有效的行政區劃代碼身份證號碼的7-14位是出生日期,必須是合理的日期(比如月份不能超過12)身份證號碼的最後一位是校驗碼,可以根據前17位計算出來性別信息必須與身份證號碼的第17位對應(奇數為男,偶數為女)
這些規則可以過濾掉大部分識別錯誤。
「清雪,測試數據整理好了嗎?「陳陽問。
「好了。「沈清雪揉了揉眼睛,把Excel文件發給他,「500張都錄完了。「
「辛苦了。「陳陽接收文件,「現在開始測試。「
他寫了一個批量測試腳本,把500張測試圖片全部跑一遍。
測試程序開始運行,進度條慢慢前進。
沈清雪坐在旁邊,緊張地看著屏幕。
十分鐘後,測試完成。
陳陽打開結果報告:
總測試樣本:500張
成功識別:497張
識別錯誤:2張
識別失敗:1張
綜合準確率:99.4%
平均識別時間:0.9秒
「99.4%!「沈清雪驚呼,「真的做到了!「
陳陽看著屏幕上的數字,嘴角露出笑容。
他點開那3張失敗的案例:
第一張,是一張嚴重磨損的一代身份證,上面的文字已經模糊到肉眼都很難辨認。
第二張,拍照時光線極差,整張照片幾乎是黑的。
第三張,身份證被嚴重摺疊過,文字完全變形。
「這三種情況確實很難處理。「陳陽說,「但99.4%的準確率,已經超過人眼的識別水平了。「
「超過人眼?「沈清雪不太理解。
「對。「陳陽解釋道,「人工錄入身份證信息,出錯率大概在1%-2%。因為數字和字母容易看錯,比如0和O,1和I,8和B。我們的系統準確率99.4%,錯誤率只有0.6%,已經比人工更準確了。「
「太厲害了!「沈清雪興奮地握拳。
陳陽又測試了幾遍,確認系統穩定後,開始寫部署腳本。
他要把這個系統部署到伺服器上,做成Web API的形式,這樣任何人都可以通過上傳圖片來調用識別服務。
凌晨四點,部署完成。
陳陽打開瀏覽器,輸入伺服器地址,一個簡潔的頁面出現在屏幕上。
中間是一個上傳框,下方有一行字:「支持JPG、PNG、BMP格式,最大5MB「。
「試試看。「陳陽說。
沈清雪用手機拍了一張自己的身份證,然後上傳。
不到一秒鐘,識別結果就顯示出來了:
姓名:沈清雪
性別:女
民族:漢
出生日期:1994年08月12日
住址:湘南省星城市XX號
身份證號碼:3xxxxxx
簽發機關:星城市公安局
有效期限:2012.05.10-2022.05.10
「完全正確!「沈清雪看著屏幕,「而且真的好快!「
陳陽又測試了幾張不同情況的照片:傾斜的、模糊的、反光的,都能準確識別。
「搞定。「陳陽保存了代碼,「身份證識別系統,正式完成。「
他看了看時間,凌晨四點半。
窗外天還是黑的,但已經能聽到遠處傳來清晨的鳥叫聲。
「我們成功了!「沈清雪興奮地轉過椅子,眼睛亮晶晶的。
「嗯,第一個里程碑。「陳陽笑道。
兩人對視了幾秒,然後沈清雪忽然意識到什麼,臉微微一紅,轉過頭去。
「那、那現在怎麼辦?「她問。
「先睡一覺。「
陳陽站起身,活動了一下僵硬的脖子,
「下午再更新官網,發帖推廣。「
沈清雪從教學樓另一側跑過來,手裡抱著書。
「你怎麼在這兒?「陳陽問。
「剛下課啊。「
沈清雪說,「看到你跟姚教授在聊天,就沒打擾。聊得怎麼樣?「
「還不錯。「陳陽笑道,「姚教授對我的項目挺感興趣的。「
「那當然,你做的東西這麼厲害。「沈清雪說,「對了,你今晚去工作室嗎?我也過去,幫你測試。「
「去。「陳陽說,「周末要把身份證識別做完,你來正好。「
「好!「沈清雪眼睛亮了,「我先回宿舍放書,晚飯後就過去。「
周五晚上七點,華清嘉園工作室。
陳陽坐在電腦前,手指在鍵盤上飛快地敲擊。
屏幕上是密密麻麻的代碼,都是他這幾天寫的身份證識別系統,以及驗證數據增強技術。
因為獲取不到大量的身份證原件,陳陽只能寫了一整套數據增強的腳本來模擬,各種實際情況下出現的場景,比如:
隨機旋轉:-30度到30度隨機縮放:0.8倍到1.2倍
隨機裁剪:模擬不同的拍照距離光照變化:模擬不同的光線條件
添加噪點:模擬圖像質量差的情況
模糊處理:模擬對焦不清晰的情況
透視變換:模擬不同的拍照角度
用這些方法,他把手裡的幾張原始身份證圖片,擴充到了20000張訓練樣本。
這種數據增強的技術,用少量真實數據,生成大量多樣化的訓練樣本,讓模型見過各種極端情況。
「陳陽,我來了!「
門開了,沈清雪提著一個大袋子走進來。
「買了什麼?「陳陽轉過頭。
「吃的!「
沈清雪把袋子放在桌上,「我估計今晚又要熬夜,所以買了一堆零食。還有紅牛,提神的。「
她從袋子裡掏出一大堆東西:薯片、巧克力、餅乾、瓜子、紅牛、咖啡。
「你這是搬超市了嗎?「陳陽笑道。
「嘿嘿,有備無患嘛。「沈清雪拉了把椅子坐在他旁邊,「現在進度怎麼樣了?「
「模型訓練剛跑完第一輪。「陳陽指著另一台電腦的屏幕,上面顯示著訓練過程的曲線圖。
「準確率多少?「
「92%。「陳陽說,「還不夠,我的目標是99%以上。「
「99%?「沈清雪有些驚訝,「這麼高?「
「必須高。「陳陽解釋道,「身份證識別用在實名認證的場景,容錯率很低。如果準確率只有90%,意味著每100張身份證就有10張識別錯誤,這在實際應用中是不可接受的。「
「那怎麼提高準確率?「
「繼續訓練,優化參數,增加數據。「陳陽說,「另外,我準備加一個後處理模塊,用規則約束來糾正一些明顯的錯誤。比如身份證號必須是18位,出生日期必須是合理的日期格式等等。「
「明白了。「沈清雪點點頭,「我能幫什麼忙?「
「幫我準備測試數據。「陳陽把一個U盤遞給她,「這裡面有500張身份證圖片,你幫我把每張的正確信息都錄入到Excel表格里。等模型訓練完,我們用這些數據來測試準確率。「
「好!「沈清雪接過U盤,打開自己的電腦,開始工作。
兩人就這樣並肩坐著,各自忙各自的。
工作室里很安靜,只有鍵盤的敲擊聲和電腦風扇的嗡鳴聲。
偶爾沈清雪會問一句「這個字是什麼「,陳陽就湊過去看一眼,然後告訴她。
時間一點點流逝。
晚上九點,模型訓練完第二輪,準確率提升到95%。
晚上十一點,第三輪完成,準確率96.5%。
「累不累?「陳陽問沈清雪。
「還好。「沈清雪伸了個懶腰,「就是眼睛有點酸。「
「休息一下吧。「陳陽說,「出去走走。「
兩人走出工作室,來到樓下的小區花園。
秋天的夜晚有些涼,風吹過來,樹葉沙沙作響。
小區里很安靜,只有幾盞路燈還亮著。
「陳陽,「沈清雪忽然說,「我覺得一起做一件事情,一起努力,一起看著它慢慢成長。這種感覺,比上課有意思多了。「
陳陽看著她,月光下,她的臉上帶著認真的表情。
「辛苦你了。「陳陽說,「明明可以在宿舍休息,卻跟著我熬夜。「
「我願意啊。「沈清雪笑道,「而且我也學到了很多東西。以前只是寫寫作業,現在才知道真正的項目是什麼樣的。「
兩人在花園裡走了一圈,然後回到工作室繼續工作。
凌晨兩點,陳陽完成了後處理模塊的開發。
這個模塊會對識別結果進行多重驗證:
身份證號碼必須是18位,前17位是數字,最後一位是數字或X身份證號碼的前6位是地區碼,必須是有效的行政區劃代碼身份證號碼的7-14位是出生日期,必須是合理的日期(比如月份不能超過12)身份證號碼的最後一位是校驗碼,可以根據前17位計算出來性別信息必須與身份證號碼的第17位對應(奇數為男,偶數為女)
這些規則可以過濾掉大部分識別錯誤。
「清雪,測試數據整理好了嗎?「陳陽問。
「好了。「沈清雪揉了揉眼睛,把Excel文件發給他,「500張都錄完了。「
「辛苦了。「陳陽接收文件,「現在開始測試。「
他寫了一個批量測試腳本,把500張測試圖片全部跑一遍。
測試程序開始運行,進度條慢慢前進。
沈清雪坐在旁邊,緊張地看著屏幕。
十分鐘後,測試完成。
陳陽打開結果報告:
總測試樣本:500張
成功識別:497張
識別錯誤:2張
識別失敗:1張
綜合準確率:99.4%
平均識別時間:0.9秒
「99.4%!「沈清雪驚呼,「真的做到了!「
陳陽看著屏幕上的數字,嘴角露出笑容。
他點開那3張失敗的案例:
第一張,是一張嚴重磨損的一代身份證,上面的文字已經模糊到肉眼都很難辨認。
第二張,拍照時光線極差,整張照片幾乎是黑的。
第三張,身份證被嚴重摺疊過,文字完全變形。
「這三種情況確實很難處理。「陳陽說,「但99.4%的準確率,已經超過人眼的識別水平了。「
「超過人眼?「沈清雪不太理解。
「對。「陳陽解釋道,「人工錄入身份證信息,出錯率大概在1%-2%。因為數字和字母容易看錯,比如0和O,1和I,8和B。我們的系統準確率99.4%,錯誤率只有0.6%,已經比人工更準確了。「
「太厲害了!「沈清雪興奮地握拳。
陳陽又測試了幾遍,確認系統穩定後,開始寫部署腳本。
他要把這個系統部署到伺服器上,做成Web API的形式,這樣任何人都可以通過上傳圖片來調用識別服務。
凌晨四點,部署完成。
陳陽打開瀏覽器,輸入伺服器地址,一個簡潔的頁面出現在屏幕上。
中間是一個上傳框,下方有一行字:「支持JPG、PNG、BMP格式,最大5MB「。
「試試看。「陳陽說。
沈清雪用手機拍了一張自己的身份證,然後上傳。
不到一秒鐘,識別結果就顯示出來了:
姓名:沈清雪
性別:女
民族:漢
出生日期:1994年08月12日
住址:湘南省星城市XX號
身份證號碼:3xxxxxx
簽發機關:星城市公安局
有效期限:2012.05.10-2022.05.10
「完全正確!「沈清雪看著屏幕,「而且真的好快!「
陳陽又測試了幾張不同情況的照片:傾斜的、模糊的、反光的,都能準確識別。
「搞定。「陳陽保存了代碼,「身份證識別系統,正式完成。「
他看了看時間,凌晨四點半。
窗外天還是黑的,但已經能聽到遠處傳來清晨的鳥叫聲。
「我們成功了!「沈清雪興奮地轉過椅子,眼睛亮晶晶的。
「嗯,第一個里程碑。「陳陽笑道。
兩人對視了幾秒,然後沈清雪忽然意識到什麼,臉微微一紅,轉過頭去。
「那、那現在怎麼辦?「她問。
「先睡一覺。「
陳陽站起身,活動了一下僵硬的脖子,
「下午再更新官網,發帖推廣。「