第八屆“中國軟件杯”大學生軟件設計大賽,為使高校人才培養和新興信息產業需求的有效銜接,加快培育更多高端、優秀軟件人才,增強產業自主創新能力,推動我國軟件和信息技術服務業又好又快發展,切實增強學生們自主創新能力和實際動手能力,大賽賽題原型全部來自全國軟件骨干企業的實際技術需求,逐步走出了一條產教互動、合作共贏的人才培養路子。
(圖片來源:中國軟件杯官網)
今年課工場作為專注于企業IT崗位的人才培養的教育機構,深度參與本屆賽事,成為賽事支持單位和出題方,有本科生和高職兩道賽題入選題庫。
在過去的一段時間里,有不少本科組同學向課工場老師咨詢問題。今天呢,課工場為了解決各位同學的問題,特整理如下:
賽題名稱:基于深度學習的銀行卡號識別系統
組類: A 本科及以上
問題1:
銀行卡號檢測部分也是要求用深度學習嗎?單純用數字圖像處理可以嗎?
回答:
檢測部分建議用深度學習,圖像處理算法也行,但是評分會比深度學習少
問題2:
GUI界面是需要開發在安卓上的還是在windows上?
回答:
都可以
問題3:
安卓只是作為一個圖像獲取并傳回,圖像處理在服務器端,處理結果在傳回安卓。這樣可以嗎?
回答:
可以的,GUI要求的目的不僅是提供友好的交互體驗,同時也是為滿足本項目一定工作量設計的。出色的GUI能得到相對高的評分,拉開與競爭對手的分數。核心在于使用深度學習技術體系實現檢測與識別功能,GUI是錦上添花的加分項。
問題4:
用java開發和Python開發這個會存在評分差異嗎?
回答:
評分標準在賽題描述中有說明,推薦使用python,這一項并沒有作為評分依據。
問題5:
數據集沒標注?
回答:
數據集有標注,文件名就是卡號,檢測部分可以去參考開源模型的做法,可以遷移學習
問題6:
要做成app嗎,要做成web項目嗎?
回答:
web與app形式均可,實現核心功能就可以,GUI涉及到評分,盡量做到用戶體驗友好。
問題7:
既然有gui,還需要做app web嗎?可以用html?
回答:
Gui是用戶圖形界面,一種展示手段,做你擅長的就行。只需要一種,不需要都實現一遍,WEB做也沒問題
問題8:
最后核心功能評分的標準是什么,識別速度還是正確率?
回答:
此次比賽是綜合的比試,各方面都會綜合考慮,準確率影響比重最大。
問題9:
此次比賽的重點強調內容是?
回答:
深度學習技術體系
問題10:
我想問下智能手機算不算嵌入式硬件設備?
回答:
從用戶角度看,智能手機不能算嵌入式系統,但從開發工程師角度看,智能手機仍然是嵌入式系統。
用戶角度
如今的智能手機已經覆蓋了個人電腦大部分的功能,甚至有些功能是個人電腦沒有而智能手機才有的,所以智能手機可以認為是一個通用計算機設備,而嵌入式系統的定義就明確了嵌入式系統是專用的計算機設備。因此,從用戶角度看,智能手機已經不能算嵌入式系統了,應該將智能手機歸于通用計算機一類。
工程師角度
至少在當前,沒有辦法在智能手機上開發手機App,仍然需要在個人電腦上開發好App,然后將App下載到手機中運行。手機App的開發環境和運行環境是不一樣的,有一個交叉編譯的過程,這是典型的嵌入式軟件開發套路。所以,從開發工程師的角度看,智能手機仍然是個嵌入式系統。
問題11:
什么時候提交作品?
回答:
2019年6月15日之前。
問題12:
數據集中的圖片名稱,如 “382_b_0.png” 中的 b 有什么含義嗎?是否成品也要標注字母?
回答:
①、前四位是數字,四位中沒有數字的就是“_”下劃線,后面緊跟的就是同樣數字的不同類別,這里是用字母區分的,方便用腳本做批量處理;
②、做來的功能就是說,拍一張銀行卡照片,放到系統里,系統把卡號位置標出來,并把卡號輸出出來來即可;
問題13:
是否需要按四位四位摳出來?
回答:
最后輸出的結果,如果按銀行卡號的格式(包含空格)輸出出來,那么識別和檢測部分你肯定是高分,輸出一串數字也可以,分數會稍低于第一種情況。
問題14:
最后結果是否需要得出是哪個銀行的卡?
回答:
不需要得出是哪個銀行卡。
問題15:
是否一定要用官方提供的數據集?
回答:
不需要,但使用數據增強,有評分。
文本檢測的訓練能提供數據集嗎?
回答:
不提供數據集,文本檢測有開源的算法可以參考
問題17:
深度學習建議使用指定軟件么?
回答:
建議使用python,tensorflow,keras,opencv等,不局限特定軟件,我提的是現在比較流行的框架與庫。符合深度學習的技術體系即可。
問題18:
關于數據增強 可以使用keras.preprocessing.image嗎?
回答:
如果這個api處理的圖像有效,你可以參考他的做法,這個模塊有評分,最好自己寫。按照評分標準去做。
問題19:
開源庫和開源框架可以使用嗎?
回答:可以用,但是核心部分涉及到評分,盡量體現出自己的編程思路,盡量去避免拿一個現成api實現一個功能。
問題20:
選用開源神經網絡影響評分嗎?
回答:算法思想可以參考,直接用現成的分數肯定不如自己做的分數高,這需要自己衡量,實現難度,競爭對手能不能自己實現;你要覺得別人都實現不了,你可以拿開源模型去做,但是要注明。本題本著促進參賽選手學習深度學習技術的精神去設計的。
問題21:
在銀行卡卡號定位檢測中,需要完整的銀行卡圖片,但是比賽所給的完整的銀行卡圖片只有幾張,不夠模型的訓練,所以請問是否可以自己加入一部分圖片進行訓練。
回答:
不一定需要完整的銀行卡,開拓下思路,可以使用自己的數據集
問題22:
需要什么設備來掃描銀行卡,還是一個上傳照片,用圖片呢?
回答:拍照上傳即可,不要求嵌入式。
問題23:
既然要盡量自己實現算法,為什么還推薦使用TensorFlow實現模型訓練
回答:
tf只是框架,模型的卷積層結構需要自己設計
問題24:
可以使用在線API是說比如KNN,CNN不能用機器學習框架自帶函數嗎
回答:
可以使用自帶函數,不要用現成的功能性接口,就是說避免一句代碼,實現了文本檢測功能
問題25:
圖像預處理可以使用opencv嗎?
回答:
可以啊,盡量體現自己的編程思路,要評分的,如果按這個理論,那就要自己寫求導方法了,建議不要使用那種開源幫你封裝好的,然后一句話就掉用
問題26:
訓練好之后的模型,可不可以部署在服務器,然后本地程序通過api調用。
回答:
可以,講解文檔中需證明服務器調用的是自己訓練的模型.
問題27:
怎么衡量題目的非功能性需求“3.使用GPU(圖形處理器)加速計算?!笔遣皇沁_到要求?
回答:
訓練過程需要使用gpu加速??梢允褂迷品?,代碼可以體現出來。
問題28:
可以推薦幾個相關云服務嗎?
回答:
aws
問題29:
請問開源工具包括開源ocr工具么?
回答:
包含,但是不要跑偏,涉及評分標準的慎重選擇,開源的資源請注明出處。
問題30:
識別模塊機器學習不提倡?只推薦深度學習嗎?
回答:
這個題是針對深度學習體系的,不是不提倡,評分肯定以深度學習為主線。
問題31:
“根據本賽題提供的數據集(共1084張卡號截圖及標簽)實現數據增強模塊,將數據集中的每一張圖片使用數據增強方式擴展為80張圖片”,中“將數據集中的每一張圖片使用數據增強方式擴展為80張圖片”是什么意思?
回答:
做數據增強為了拓展數據集,可以拓展更多張,80張為參考值
問題32:
請問需要考慮圖片的旋轉嘛?
回答:
可以考慮,能提高識別模型的泛化能力。
"問題33:
數據集里下標都是什么意思?例如:0000x_0.png每個字符都代表什么意思?
回答:
前四位代表卡號,其中前四位里的下劃線代表空格。后面的字符代表對卡不同樣式,類型,卡號的區分,沒有別的意義。"
"問題34:
我看訓練集圖片的標簽,對于空格,使用下劃線表示的,是否意味著空格的標簽就是下劃線?那最終測試集的圖片,一整串銀行卡號中出現空格的時候,識別出來的結果也要用下劃線表示,還是不顯示空格,只顯示一整串數字?
回答:
訓練集前四位中的下劃線代表空格,后面的字符只是為區分卡號的不同樣式與種類,最終識別的時候,出現空格能識別出空格最好,用空格表示就行,識別不了空格那就輸出一串數字,評分具體按照評委意見,可以預見的是能識別空格的分數肯定不會比識別不了空格的分數低。"
"問題35:
請問空格識別出來是用下斜杠表示嗎我看官方數據是這樣,可以自己改變命名合適嗎?
回答:
可以修改"
"問題36:
只要求識別卡號嘛 如果我們自己寫的模型 識別率沒有套用現成的模型高。那么給分怎么給???
回答:
自己寫的占優勢,但是識別率要跟已經有的模型識別率相當,太低識別率縱是自己寫的,那么意義不大。"
"問題37:
目前比賽的基本要求內容我已經基本完成,也具有一定的識別率,但是我希望進一步進行識別率的提高,于是我對比了支付寶的銀行卡識別功能。
要想更加提高銀行卡號碼的識別率,最好將整張銀行卡橫平豎直完整的平鋪滿整個圖片,支付寶也就是這么做的。如果該比賽是為了將項目實用化,那大可借鑒支付寶的做法,拍照時讓銀行卡圖片鋪滿,識別準確率可以有良好的提升空間。但是如果該比賽的目的并非實用化,目的就是訓練具有偏斜以及有背景干擾的圖片(給的測試集數據的圖片銀行卡四周有背景邊緣,銀行卡還存在傾斜情況),只是作為一個比賽,那我就繼續當前方法想辦法提升準確率,但恐怕不會有質的飛躍。
特在此向您提問,想了解一下比賽的目的是生活實用性還是這只是作為比賽的固定需求,如果是實用性,測試數據可否用平鋪滿銀行卡的圖片!
回答:
本賽題的主要目的,其一肯定是比賽競技本身,其二是通過賽題的引導促使參賽選手使用深度學習技術,學習深度學習技術。
同時本賽題的生活背景是您提到的實用性,那么后面的測試數據跟您的附件效果圖類似,銀行卡的擺放不會嚴格水平,略微傾斜是很正常的情況。
建議您考慮一下提升準確率,因為同臺競技選手可能會考慮到,從而避免模型的短板。 當然,最終結果以評委老師為準。"
"問題38:
在對作品進行測試時會使用和數據集形式相同的圖片還是使用整張銀行卡圖片?
回答:
使用整張銀行卡圖片進行測試
問題39:
對于準確率的計算是“識別準確的數字數/總數字數“還是”全部識別成功的圖片數/總圖片數“?
回答:
在你訓練時候評估模型的準確率是根據你的算法有不同的計算方式,如果您是基于切割字符然后通過預處理后處理技術連接起來的,那么準確率是按字符識別正確的數目去計算;如果你是基于端到端,一起識別一串字符的,那么準確率的計算是根據你的圖片數據進行計算的,本賽題比較偏向后一種。
問題40:
測試用圖片是否會存在傾斜等情況?
回答:
測試用圖會有輕微傾斜,基本保持水平
問題45:
有沒有整張銀行卡圖片的數據集可以提供?
回答:
銀行卡數據有個人隱私性質,出題方不會提供整張銀行卡圖片的數據集"
"問題46:
除了使用本題目給出的數據進行訓練之外,是否允許使用網絡上獲取到的其他數據集一同訓練?我們會在最終提交的文檔中說明所使用的數據及內容。
回答:
可以使用其他的數據集進行訓練,注明來源即可。"
"問題47:
請問做銀行卡定位(基于CTPN的文本檢測模型)的時候,因為賽題沒有提供數據集,網上的開源模型針對銀行卡凸起的字體效果不好,我也找不到大量的銀行卡圖片自己訓練,現在陷入了瓶頸。請問老師可以提供一點建議嗎?
回答:
可以自己收集小部分銀行卡照片,然后通過labelimg工具標注一下數據,將這些數據與開源的字符數據混合在一起去訓練。"
"問題48:
不同語言寫的銀行卡定位與識別,應該如何提交?:定位是用darknet實現的,darknet是用C語言實現的。識別是用python語言實現的。這兩種語言寫的程序需要的編譯環境不一樣,運行的方式不同。您發出的提交文檔中是要求將定位和檢測放在一個demo.py里面執行的,那對于不同的語言,可不可以分開提交,分開執行。
回答:
cython是一個python與c/c++的雙向接口,你可以嘗試把c文件編譯為python可調用的pyd(win)或so(linux)文件。項目本身演示可以使用視頻錄制的方式提交,但是我們需要一個額外測試的程序入口,建議使用python去寫。這個程序入口主要是批量測試銀行卡識別的。
問題49:
可不可以提交APP類型的執行文件。如果提交app類型的文件,服務器在本地,可不可以用視頻的形式展示識別結果。還是生成.exe執行提交給您。
回答:盡量按照提交文檔細則的約定去寫,這樣無論哪個評審老師去測試,問題都不會太大"
"問題50:
我通過在開源文字定位模型的數據集里添加一些自己的銀行卡數據進行訓練后,現在成功在照片上分割出銀行卡卡號部位,同時也通過官方給定的數據集訓練得到了識別模型。但是我發現這個模型只在識別4位左右的數字時效果較好。由于卡號部位是很長一段數字,數字格式、間隙也不定。如果直接訓練可以分割這串數字的模型,由于銀行卡的特殊性,我無法找到足量的數據集;如果使用投影分割,凸起的字體效果很差。我目前沒有想到什么辦法可以較為準確地分割這串數字。
回答:
建議去看一下CTC損失函數的資料。這個主要是在OCR里解決不定長度文本的識別。"
"問題51:
在對作品進行測試時會使用和數據集形式相同的圖片還是使用整張銀行卡圖片?
回答:
測試會使用整張銀行卡
問題52:
對于準確率的計算是“識別準確的數字數/總數字數“還是”全部識別成功的圖片數/總圖片數“?
回答:
準去率的計算是以全部識別成功的圖片數/總圖片數。
問題53:
測試用圖片是否會存在傾斜等情況?
回答:
測試用圖會有輕微傾斜,不會嚴格平行
問題54:
有沒有整張銀行卡圖片的數據集可以提供?
回答:
我們不能提供有私密性質的數據集"
"問題55:
批量檢測銀行卡的結果文檔resulst.txt中,存放識別的銀行卡號,現在識別出的銀行卡號中由于使用下劃線“_”代替空格,對于大多數銀行卡能將卡號之間的空格識別為下劃線""_"",當然通過處理可以將下劃線""_""替換為空格,這樣更能體現銀行卡號原貌,也可以將空格去掉,只顯示銀行卡號數字,那么在寫入resulst.txt文件中,有3種方式:
1、寫入帶下劃線的銀行卡號。
2、寫入帶空格的銀行卡號。
3、去掉空格或下劃線""_"",只寫入銀行卡號數字。
result.txt示例文件只有銀行卡號數字,這三種方式使用哪種方式存儲result.txt文件?
回答:
如果你的算法識別空格的準確率很高,那么建議采用你說的第一種做法,如果比較低,那么建議采用第三種。"
"問題56:
老師文檔是提交到源碼那欄還是 演示視頻那欄
回答:
演示視頻那欄,readme在源碼, 其余文檔都在視頻那欄"
"問題57:
交文檔的那個文件可以只寫分析視頻代碼嗎
回答:
主要體現分析過程,操作實踐過程寫明白就好,不要太展開講,表如果太多,可以簡單做個表格描述一下各個表的作用。"
"問題58:
構建技能詞典的過程用不用錄視頻,還是直接拿來用就行
回答:
可以寫在文檔里"
"問題59:
老師可視化有什么要求嗎 我用java寫的程序 讀取表中的內容 顯示出來算可視化嗎
回答:
可視化沒有具體要求
問題60:
必須實時以hbase作為后臺是吧
回答:
”是的,"
"問題61:
作品安裝 可執行文件 還用交嗎
回答:
可執行文件有的話,需要提交"
以上就是課工場為各位同學整理的基于深度學習的銀行卡號識別系統相關問題,希望能夠幫助到大家!