我的工程實踐題目是mip,即醫學影象處理,目的是設計一種基於深度學習的通用病灶識別系統,該系統可以通過檢測使用者的輸入,來得到具有對影象病灶處標註的最終影象;通常病人做好一系列臨床上的檢查後,醫生需要人為的看**,然後根據自身的知識和經驗 來對病人的疾病情況做出判斷,是比較耗時耗力的,如果可以把重點病灶標出,並給出相應的判斷是否患病,將可以大大減少醫生的診斷時間,可以提公升較大的工作效率。
該工程實踐系統架構主要分為兩部分,一部分是訓練模型,得到擬合程度較好的模型;第二部分就是將專案部署到伺服器上,利用後端前端等技術使其呈現給使用者,讓使用者更方便的使用該系統。總的來說類似於bs結構,b/s架構最大的優點是總體擁有成本低、維護方便、 分布性強、開發簡單,可以不用安裝任何專門的軟體就能 實現在任何地方進行操作,客戶端零維護,系統的擴充套件非常容易,只要有一台能上網的電腦就能使用,比較適合該專案使用。
模型方面主要採用vgg16為骨幹網路的fast-rcnn,而**開發採用django框架進行前後端開發,而django採用的是mvc模型,所以本工程實踐的設計模式是mvc模式,具體影象如下。
mvc即model(模型) + view(檢視) + controller(控制器)。
model 是指模型表示業務規則,被模型返回的資料是中立的,模型與資料格式無關,這樣乙個模型能為多個檢視提供資料,由於應用於模型的**只需寫一次就可以被多個檢視重用,所以減少了**的重複性。
在本專案中的模型就是指我們利用深度學習演算法得到的最終的網路模型:
1 對使用者輸入的資料進行處理,得到資訊
2 將資料提供給檢視。
3 與資料庫進行訪問等操作。
view是指使用者看到並與之互動的介面。在檢視中其實沒有真正的處理發生,它只是作為一種輸出資料並允許使用者操縱的方式。本專案是由html等元素組成的網頁介面。
controller是指控制器,它接受使用者的輸入並呼叫模型和檢視去完成使用者的需求,控制器本身不輸出任何東西和做任何處理。它只是接收請求並決定呼叫哪個模型構件去處理請求,然後再確定用哪個檢視來顯示返回的資料。
由於我們現在還處於訓練模型的階段,對於api介面只是有了大概的設計,只涉及最主要的api介面且忽略了具體的引數。使用者登入系統的時候,被提供的是登入介面 login();使用者想要呼叫模型進行影象處理需要呼叫提供的process_image()介面;使用者如果想得到最終的影象結果可以使用提供的get_image()介面;如果使用者想要獲得以往使用者的結果,可以使用提供的get_history_res()介面。以上只是最重要最常用的介面。
三 系統架構模型描述
軟體架構模型是通過一組關鍵檢視來描述的,同乙個軟體架構,由於選取的視角不同可以得到不同的檢視,常用的檢視有分解檢視,依賴檢視,泛化檢視,執行檢視,實現檢視,部署檢視以及工作任務分配檢視,下面通過不同的角度獲得該項目的幾種不同的檢視。
1 分解檢視
分解檢視是描述軟體架構模型的關鍵檢視,簡單的說就是將系統按功能分解,形成幾個子系統或者其他部分,每個子系統又包括了各自的功能。本系統中可以分解為登入系統,模型系統,資料庫系統,查詢系統。
2依賴檢視
依賴檢視展示的是軟體模組之間的依賴關係。
本系統中,最終結果依賴於模型的處理,模型的處理依賴於影象的預處理,影象的預處理依賴於輸入等等關係,依賴檢視如下:
3執行檢視
執行檢視展示了系統執行時的時序結構特點,比如流程圖、時序圖等。執行檢視中的每乙個執行實體,一般稱為元件(component),都是不同於其他元件的執行實體,如果有相似的執行實體,那麼把他們合併成乙個。
基於本系統的執行檢視如下:
4 實現檢視
實現檢視是描述軟體架構與原始檔之間的對映關係,一般通過目錄和原始檔的命名來對應軟體架構中的包,類等靜態結構單元。
log是登入系統,model是模型系統,program_data和results分別代表處理前的資料和處理後的資料,query代表查詢系統,下面的py檔案主要是模型系統裡面的**,其他系統的功能尚且沒有完善。
5 工作分配檢視
工作分配檢視將系統分解成可獨立完成的工作任務,以便分配給各專案團隊和成員,工作分配檢視有利於跟蹤不同專案團隊和成員的工作任務的進度,也有利於各個專案團隊和成員之間合理的分配和利用資源。
本系統的工作分配檢視如下
四 資料庫表設計
五 軟體系統執行環境和技術選型說明
開發環境:python 3.6, django 2.0.1, tensorflow 2.0
資料庫:mysql.8.0.21
ide : pycharm
技術選型: 模型採用vgg16為主幹網路的fast-rcnn網路,加入了roi用來提公升網路效能;**採用django框架設計。
六 系統概念原型的核心機制
主要是兩部分,一部分模型的訓練;另一部分是模型的部署並設計使用的**;前者採用資料集進行訓練,得到乙個模型以後,再通過調整引數獲得最優模型,然後將其部署到伺服器中;後者利用django框架,利用bs架構使得使用者即可通過web頁面便可使用伺服器上的模型為其提供功能。得到的處理後的資料將其儲存到資料庫中,以便下次使用者查詢和使用。
七 小結
通過這幾次課程,學會了進行軟體系統分析和設計,並將其實際運用在了自己的工程實踐專案上,受益匪淺;做任何乙個專案前最好都要有一定的規劃,並且嚴格按照規劃的步驟執行,不能想到一出是一出,可以達到事半功倍的效果。如何擁有在專案開發前設計好整個專案的流程,專案系統的結構的技能還需要在以後的碼農生涯中逐漸養成與提高。
工程實踐的軟體系統設計方案
一 專案介紹 題目 文字行檢測系統。內容 檢測出文件影象以及複雜場景中的所有文字行。即可以作為文字行識別任務的前端,也可以作為乙個單獨的服務提供給使用者使用。模型選擇 cvpr2019中的文章 character region awareness for text detection 二 執行環境與...
軟體工程實踐探索
為了解決軟體危機,用工程化的思想來進行軟體開發,於是出現了一門新的學科 軟體工程。說道軟體工程,就不得不說與之相關的devops,其中包括持續整合,持續交付和持續部署等 這些東西不是和某種軟體工程方法關聯的,而是軟體開發需求,是為了保證軟體質量而準備的,而軟體工程是為了解決客戶端需求和軟體實現之間的...
軟體工程實踐總結
這個作業屬於哪個課程 這個作業要求在哪 homework 10864 這個作業的目標 對這個學期軟體工程這門課程的總結 作業正文 本文其他參考文獻 對比開篇部落格你對課程目標和期待,希望通過實踐鍛鍊,增強計算機專業的能力和就業競爭力 對比目前的所學所練所得,在哪些方面達到了你的期待和目標,哪些方面還...