離線手寫中文簽名檢索 軟體設計方案

2022-07-10 14:33:13 字數 3712 閱讀 7357

離線手寫中文簽名檢索——軟體設計方案

一、專案背景

我的工程實踐是離線/離線手寫中文簽名的智慧型檢索系統,首先通過人工智慧和深入學習技術,搭建乙個深度學習網路,再利用資料庫對網路進行訓練,最後通過自製框架整合到網頁端,搭建乙個簽名檢測系統,實現乙個在web端根據輸入的簽名從簽名資料庫中根據每個簽名的相似度選取出所有正確簽名的系統。本文我將用我這個工程實踐的專案作為例子,來學習軟體設計方案。從設計模式,軟體架構,各類檢視,以及api介面,軟體開發目錄的角度進行分析,最終實現軟體系統概念原型。

我專案用的網路模型為resnet,18層包括全連線層和卷積層,不包括池化層和bn層。

軟體架構

常見的軟體架構有:三層架構,mvc架構,mvvm架構。本專案採用mvc架構,mvc即為model-view-controller(模型-檢視-控制器),mvc開始是存在於桌面程式中的,mvc中m、v和c所代表的含義如下:model(模型)代表乙個訪問資料的物件及其資料模型。view(檢視)代表模型包含的資料的表達方式,一般表達為視覺化的介面介面。controller(控制器)作用於模型和檢視上,控制資料流向模型物件,並在資料變化時更新檢視。控制器可以使檢視與模型分離開解耦合,使用mvc的目的是將m和v的實現**分離,從而使同乙個程式可以使用不同的表現形式。

在我的這個系統中,可以分為三個部分:

第乙個部分是前端網頁介面將使用者上傳的簽名傳輸給伺服器中的模型,讓伺服器對進行分析處理。

主伺服器:對傳輸進來的通過深度學習模型對其進行分析處理,將資料庫中的相似度排名前列的進行輸出。

3.1分解檢視

分解是構建軟體架構模型的關鍵步驟,分解檢視也是描述軟體架構模型的關鍵檢視,一般分解檢視呈現為較為明晰的分解結構特點。分解檢視用軟體模組勾劃出系統結構,往往會通過不同抽象層級的軟體模組形成層次化的結構。

3.2依賴檢視

依賴檢視展現了軟體模組之間的依賴關係。比如乙個軟體模組a呼叫了另乙個軟體模組b,那麼我們說軟體模組a直接依賴軟體模組b。如果乙個軟體模組依賴另乙個軟體模組產生的資料,那麼這兩個軟體模組也具有一定的依賴關係。 依賴檢視在專案計畫中有比較典型的應用。比如它能幫助我們找到沒有依賴關係的軟體模組或子系統,以便獨立開發和測試,同時進一步根據依賴關係確定開發和測試軟體模組的先後次序。 依賴檢視在專案的變更和維護中也很有價值。比如它能有效幫助我們理清乙個軟體模組的變更對其他軟體模組帶來影響範圍。

3.3執行檢視

泛化檢視展現了軟體模組之間的一般化或具體化的關係,典型的例子就是物件導向分析和設計方法中類之間的繼承關係。值得注意的是,採用物件組合替代繼承關係,並不會改變類之間的泛化特徵。因此泛化是指軟體模組之間的一般化或具體化的關係,不能侷限於繼承概念的應用。 泛化檢視有助於描述軟體的抽象層次,從而便於軟體的擴充套件和維護。比如通過物件組合或繼承很容易形成新的軟體模組與原有的軟體架構相容。

3.4 執行檢視

執行檢視展示了系統執行時的時序結構特點,比如流程圖、時序圖等。執行檢視中的每乙個執行實體,一般稱為元件(component),都是不同於其他元件的執行實體。如果有相同或相似的執行實體那麼就把它們合併成乙個。 執行實體可以最終分解到軟體的基本元素和軟體的基本結構,因而與軟體**具有比較直接的對映關係。在設計與實現過程中,我們一般將執行檢視轉換為偽**之後,再進一步轉換為實現**。

3.5實現檢視

實現檢視是描述軟體架構與原始檔之間的對映關係。比如軟體架構的靜態結構以包圖或設計類圖的方式來描述,但是這些包和類都是在哪些目錄的哪些原始檔中具體實現的呢?一般我們通過目錄和原始檔的命名來對應軟體架構中的包、類等靜態結構單元,這樣典型的實現檢視就可以由軟體專案的源檔案目錄樹來呈現。

模型:class resnet18(nn.module):

前向傳播:def forward(self, x)

模型搭建 :create_model(input_shape, anchors, num_classes, load_pretrained,freeze_body,weights_path)

影象預處理 :class utils

影象生成 :cv2.imshow("show", img)

損失函式:val_acc = evalute(model, val_loader)

3.7工作分配檢視

工作分配檢視將系統分解成可獨立完成的工作任務,以便分配給各專案團隊和成員。工作分配檢視有利於跟蹤不同專案團隊和成員的工作任務的進度,也有利於在各專案團隊和成員之間合理地分配和調整專案資源,甚至在專案計畫階段工作分配檢視對於進度規劃、專案評估和經費預算都能起到有益的作用。

離線手寫中文簽名

成員a模型的搭建和優化 

成員b**前後臺的搭建

成員c的預處理和模型優化

四、資料庫設計

1.使用者:

序號

字段

描述

型別

1user_id

使用者id

string

2user_name

使用者名稱string

3account_num

賬號int

4user_class

使用者類別

string

5others

其他資訊

string

2 模型:

序號屬性

資料型別描述1

pictureid

int訓練用

2addr

string位置3

tagint

標籤值4

boxfloat

標註框3.:

序號

字段

描述

型別

1picture_id

idstring

2label_id

標籤id

string

五  軟體系統執行環境和技術選型說明

開發環境:python 3.6,tensorflow 2.0,pytorch,opencv-python4.4.0

資料庫:mysql.8.0.21

ide : pycharm

本專案是b/s架構,專案概念原型的核心工作機制可以從下面兩方面闡述:

感知機手寫

參考文獻 1.2.應用多元統計分析,高惠璇.北京大學出版社 3.統計學習方法第二版,李航 import numpy as np class model def init self,w 0 0 b 0,alpha 0.2,max counts 5000 self.w np.array w,dtype ...

RedHat Linux 下離線手動安裝gcc

1.聯網條件下正常安裝gcc g 直接在 命令視窗中以root身份輸入 root localhost awp 01 yum install gcc root localhost awp 01 yum install g 2.離線條件下手動安裝gcc g ppl 0.10.2 11.el6.x86 6...

OculusQuest系統韌體離線手動更新公升級

一 開啟開發者 1.登記開發者 2.安裝驅動 3.啟用開發者 4.開啟usb除錯 二 手動更新韌體adb工具 2.開啟cmd連線裝置 3.離線公升級系統韌體 追記 因oculus頻繁進行小版本更新,官方也並不主動提供完整韌體包。一 開啟開發者 在社群公告網盤,搜尋adb也可找到檢視社群交 流群 二 ...