建設(shè)網(wǎng)站的網(wǎng)站江蘇青島seo整站優(yōu)化
如何利用python快速開發(fā)PC端目標(biāo)檢測及數(shù)據(jù)標(biāo)注軟件
- 概述
- 開發(fā)軟件背景
- 開發(fā)第一步:功能需求分析
- 開發(fā)第二步: 前端分區(qū)設(shè)計(jì)
- 開發(fā)第三步:功能開發(fā)
- 開發(fā)第四步:程序功能的打包與檢查
- 開發(fā)第五步:程序的反饋與改善
- 一個(gè)例子的展示
PS:本文僅供學(xué)習(xí),未經(jīng)同意請勿轉(zhuǎn)載。本文仍待更新(開發(fā)及部分可開源代碼后期會(huì)有分享~),對應(yīng)的軟件已授權(quán)對應(yīng)的軟著
😝 未完待續(xù)…
注:下面三個(gè)的軟件均為本人在本科時(shí)期從頭至尾手敲代碼,未借助任何源碼進(jìn)行魔改,獨(dú)立開發(fā)完成,平均一個(gè)軟件開發(fā)周期為1周(不包括項(xiàng)目后期變動(dòng)的要求改動(dòng)時(shí)間的話)
概述
先簡單概括一下本科階段開發(fā)的標(biāo)注軟件及目標(biāo)檢測軟件主要有三個(gè):
(1)手部關(guān)鍵點(diǎn)標(biāo)注軟件: 可以對手部關(guān)鍵節(jié)點(diǎn)進(jìn)行標(biāo)注(labelme有的功能基本上都有,附帶左右手節(jié)點(diǎn)順序標(biāo)注時(shí)錯(cuò)誤的用戶提示及數(shù)據(jù)歸一化處理等操作)
(2)耳朵關(guān)鍵點(diǎn)標(biāo)注軟件:可以對耳朵進(jìn)行關(guān)鍵節(jié)點(diǎn)的標(biāo)注(labelme有的功能基本上都有,附帶輔助線標(biāo)注及節(jié)點(diǎn)相對位置錯(cuò)誤提示)
(3)細(xì)胞病理檢測分析軟件: 可以對細(xì)胞進(jìn)行檢測識別,并根據(jù)檢測結(jié)果自動(dòng)化生成病理報(bào)告(同樣,labelme有的功能基本上都有,引入自己訓(xùn)練的模型進(jìn)行自動(dòng)檢測,后期只需人工手動(dòng)調(diào)整
開發(fā)軟件背景
目前現(xiàn)有的labelme軟件和labelImg開源軟件無法滿足特殊數(shù)據(jù)集的標(biāo)注要求,而且沒有標(biāo)注順序的報(bào)錯(cuò)提示。當(dāng)然我設(shè)計(jì)的軟件就會(huì)不具有適用性了(畢竟上面開發(fā)的軟件可以明顯看出來我做的基本上是項(xiàng)目驅(qū)動(dòng)的😂)。在實(shí)際使用中,會(huì)發(fā)現(xiàn),labelme軟件在導(dǎo)入文件時(shí)的效率中的很低下,特別時(shí)標(biāo)記后的json文件,當(dāng)然也可以通過代碼來實(shí)現(xiàn),這個(gè)很多博客上面都有,這里就不贅述了。
- 使用的框架:PyQt5
開發(fā)第一步:功能需求分析
分析開發(fā)的軟件需要哪些功能:
(1)羅列基本功能:可以對標(biāo)某些同品類的產(chǎn)品,快速得到軟件開發(fā)本身需要的基本功能。這些基本功能一般都是需要的,不然為什么要自己開發(fā),直接使用該對標(biāo)軟件不就好了?
(2)思考特色功能:根據(jù)項(xiàng)目本身特色,添加新功能,這些新功能也是軟件本身區(qū)分別的軟件的點(diǎn),也就是改善對標(biāo)軟件的局限性
(3)思考多種可能的操作錯(cuò)誤:在功能需求分析的同時(shí),需要思考該功能可能存在哪些操作錯(cuò)誤導(dǎo)致程序的報(bào)錯(cuò)
(4)功能分區(qū):將上述的功能分類,有利于后期的前端的界面開發(fā)
(5)功能分級:功能分類后,對每一類的功能進(jìn)行分級,優(yōu)先開發(fā)底層及首要的功能
開發(fā)第二步: 前端分區(qū)設(shè)計(jì)
前端是利用PyQt5來構(gòu)建的,直接根據(jù)前面的功能分區(qū)安排合理的位置,并選擇合適的模塊(比如該功能是適合Tab選卡還是按鍵模塊)
上面三個(gè)軟件我都是用Qt designer來設(shè)計(jì)前端界面,生成對應(yīng)的前端結(jié)構(gòu)代碼,這樣子的快速的節(jié)省時(shí)間,并且比較清晰的了解自己軟件開發(fā)的布局。
至于怎么在pycharm或者vscode中安裝Qt designer,可以自己搜索一下,網(wǎng)上的資源很多。這里我先不講了。以后有時(shí)間再做分享吧。
開發(fā)第三步:功能開發(fā)
在前端設(shè)計(jì)之后,就直接利用pyQt5進(jìn)行事件觸發(fā)的編程(用python編程就是比較爽,哈哈哈哈)。后面再介紹一下我編程的主要流程。因?yàn)槿齻€(gè)軟件開發(fā)時(shí)間相對久遠(yuǎn),等后面再整理介紹吧。先來看看其中一個(gè)軟件的界面及對應(yīng)的功能吧。請移步至最后一步中查閱。
開發(fā)第四步:程序功能的打包與檢查
最后利用pyinstaller將開發(fā)的軟件打包成為.exe。打包程可執(zhí)行程序后,自己先使用一下,看看是否存在沒有考慮的操作失誤問題。
開發(fā)第五步:程序的反饋與改善
然后交付給其他人進(jìn)行使用。(畢竟自己的軟件開發(fā)自己比較熟悉,一般操作不會(huì)失誤,所以得讓別人用一下,才知道有哪些需要改善得地方。
一個(gè)例子的展示
這里只展示可公開項(xiàng)目的例子。也就是第三個(gè)軟件。下面是軟件運(yùn)行的主界面。
它的功能包括:
-
自動(dòng)檢索劃分功能
可自動(dòng)檢索所選擇目錄下所有滿足軟件檢測格式的圖像,并以一個(gè)子目錄為一個(gè)主體文件的方式加載顯示。 -
自動(dòng)檢測標(biāo)注功能
-
手動(dòng)標(biāo)注修改功能
提供手動(dòng)標(biāo)注的功能,在模型漏檢、誤檢的情況下,提供手動(dòng)的修改可保證模型報(bào)告的準(zhǔn)確性。在開啟該功能之后:左鍵單擊可添加對應(yīng)的邊界框,并選擇對應(yīng)的標(biāo)簽;右鍵單擊對應(yīng)邊界框可修改標(biāo)簽或刪除;右鍵單擊滑動(dòng)(非邊界框)區(qū)域可實(shí)現(xiàn)該區(qū)域的放大;左鍵雙擊可修改對應(yīng)邊界框。
-
多模態(tài)自適應(yīng)功能
-
遍歷圖像/主體(子目錄)功能
-
縮放顯示功能
-
表單自動(dòng)更新功能
會(huì)自動(dòng)更新檢測的統(tǒng)計(jì)結(jié)果 -
標(biāo)簽顯示/隱藏功能
-
文件描述備注功能
提供為當(dāng)前圖像添加備注描述,該備注描述會(huì)再模型報(bào)告中加以顯示 -
選擇示例圖功能
由于我做的是醫(yī)學(xué)圖像,所以通常需要在報(bào)告中顯示對應(yīng)的圖片及檢測結(jié)果的分析描述。 -
自動(dòng)填補(bǔ)示例圖功能
在沒有手動(dòng)選擇的情況下,我設(shè)計(jì)的軟件會(huì)根據(jù)檢測的結(jié)果進(jìn)行統(tǒng)計(jì)分析,選擇比較典型的圖像作為示例圖展示在報(bào)告中。 -
自動(dòng)填補(bǔ)基本信息功能
可利用文件名來生成基本信息的填補(bǔ) -
報(bào)告自動(dòng)生成導(dǎo)出功能
-
檢測結(jié)果統(tǒng)計(jì)圖像導(dǎo)出功能
-
獲取幫助功能
獲取幫助文檔,即為本軟件使用說明書。 -
標(biāo)簽數(shù)據(jù)導(dǎo)出功能
導(dǎo)出所有圖像的標(biāo)注及標(biāo)簽數(shù)據(jù) -
標(biāo)簽格式設(shè)置功能
還有其他功能,就不一一贅述了。