




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于GAN的人臉圖像生成系統前言近年來,隨著計算機技術的快速發展,計算機計算能力的逐步提高等原因,讓人工智能技術得到了非常高速的發展。在過去的十多年間,由于深度學習技術在許多領域取得了十分巨大的成果,使得有關于神經網絡的研究能夠再次崛起。在現如今關于人工智能的相關研究異常火熱的環境下,Goodfellow等人提出的GAN作為一種嶄新的深度學習模型,它的提出不僅滿足了許多領域的需求,同時也為這些領域增添了新的活力,它可以說是近年來在無監督學習領域相當具有前景的方法之一。GAN目前在計算機視覺以及圖像方面的研究與應用最為廣泛,現在已經能夠通過GAN生成諸如人臉以及數字等物體圖像,能夠實現對室內外場景的構建,給黑白的圖像上色等等。不僅如此,在諸如語言處理、棋類比賽相關的程序當中以及許多問題的研究中也能看到GAN活躍的身影。現如今在人工智能領域中,對于數據是十分重視的,但如何能夠獲得大量的高質量的數據一直以來都是一個重大難題,在某些領域,一些現有的圖像信息根本不足以滿足得了我們的需求。通過對抗學習的方式進行訓練是GAN的一大特點,它能夠使生成的數據樣本基本與真實的數據分布一致。通過使用GAN來進行人臉圖像的生成,可以有助于我們更好的獲取圖像數據,生成細節更加豐富的圖像,還可以用來解決標注數據不足時的學習問題。為了實現基于GAN的人臉圖像生成系統,本次主要有兩個部分,第一部分通過使用CelebA數據集進行訓練,從而生成人臉面部圖像,第二部分通過使用StarGan模型,實現通過指定人臉圖像生成變化后的特定人臉圖像,比如說發色的變化,性別的變化等。GAN生成人臉圖像部分的主要內容如下:1.對數據集中的人臉圖像進行預處理,去除多余的像素,并實現數據的輸入。需要下載并從中提取數據,將圖片保存,以及實現對數據集的一些基本操作。在數據輸入方面,需要分別創建用于鑒別器以及生成器的輸入。2.鑒別器網絡和生成器網絡的建立。建立的這兩個網絡就是GAN的核心,它使鑒別器網絡和生成器網絡兩者間進行競爭。生成器將偽造的數據傳給鑒別器,而鑒別器則主要判斷預測自己收到的數據是真實的還是錯誤的。生成器被訓練來欺騙鑒別器,它想要輸出看起來盡可能接近真實數據的數據,鑒別器則需要經過訓練以確定數據的真實與否。通過相互競爭,使兩者各自不斷提高自己的生成能力和鑒別能力,使兩個網絡更加的強大有效。3.計算鑒別器網絡和生成器網絡的損失并將結果顯示輸出,還要實現對兩個網絡的優化。使用StarGan生成特定人臉圖像部分的實現主要是通過調用StarGan模型,StarGan是一種用一個框架就能實現多領域轉換的這么一個算法,多個圖像翻譯任務同一個模型就能一起運行。通過運用StarGan來實現生成指定特征的人臉面部圖像,并且能夠通過使用pyqt5來實現操作界面,方便使用。通過以上這些實現的內容,將自己所學的專業基礎知識到高級專業課程中的人工智能、軟件工程等課程,以及自學的深度學習方面的相關知識進行了一次匯總,也是對這些知識的實際使用。
1問題定義問題定義主要是為了說明主要解決的問題的內容、問題性質的確認、項目目標的確認、工程的規模等軟件總體上的一些約束和限制,并且要對用戶所要求的軟件的主要功能有一個具體的理解。1.1系統名稱系統名稱:基于GAN的人臉圖像生成系統作用:本系統的主要功能大體可以分為兩部分,第一部分主要是通過訓練GAN來實現,生成并展示生成的人臉面部圖像,預處理數據、生成器網絡和鑒別器網絡的實現以及各自的輸入、兩個網絡損失的計算和優化。通過展示生成人臉面部的圖像,直觀的體現訓練的效果。第二部分的運用StarGan模型的部分,用戶可以自主選擇要變換的圖像,指定圖像要進行的變換,例如發色、性別等,來生成特定的人臉圖像。該系統除了能夠單獨使用,其他的圖像生成系統還可以將其作為自己的一部分。1.2可行性研究階段經費估算 本系統神經網絡部分的訓練需要支持cuda的顯卡,還需要開發環境支持Python3.6、TensorFlow1.8等,訓練部分可以選擇使用網上云端機器來進行。在訓練完成后,運行時則對GPU沒有過多的要求。訓練部分的機器的使用需要必要的經費支持。
2可行性研究 可行性研究它作為軟件開發之前的一個必不可少的階段,主要是為了確認上一個階段所確定的一系列問題是否有可行的解決方法,這也是為了避免盲目的就對軟件進行開發,相關人員需要進行一次簡化的設計以及系統分析過程,研究項目的可行性,結合諸多方面的限制,探索研究這個軟件產品是否有可行的方案,能否解決軟件存在的問題,可行性分析主要的目的就在于它能夠用最小的代價以一段相對理想的時間確定這個問題是否能夠解決。 在本階段的描述當中,通過運用系統的流程圖,對現行系統的目標、系統的相關業務等進行了細致的描寫,并從技術、經濟等多個方面對本系統的可行性進行研究與分析。2.1系統目標 使用生成式對抗網絡實現對于人臉面部圖像的生成,并可以在一定程度上對人臉的特定部分進行修改,例如發色、性別等。本系統主要是為了實踐生成式對抗網絡模型,生成式對抗網絡的獨特的博弈對抗的思想相信將會對現有的深度學習模型的各個方面產生重要的影響。2.2可行性分析2.2.1可行性分析的目的 得到解決問題的具體解決方案并不是可行性分析的目的,它的主要目是研究與分析問題的解決是否可行以及是否有其必要性。因為在實際的開發過程中,會有許多的因素導致不能夠在預期的資源限制和時間限制范圍內解決問題,像是開發人員或者是用戶對市場需求的不了解不充分、對需要技術把握的不夠成熟、對進行開發的各種風險的預估計不夠等等都可能導致這一結果。但是假如開發人員能夠提前預知問題是否有一個合理的解決方案的話,那么就能提前終止對于項目的開發,盡可能的在一定程度上避免對人力資源、物力資源的過度浪費。2.2.2技術可行性 深度學習當中的有關神經網絡方面的知識是本系統最主要運用的知識,得益于計算機現如今的計算能力的飛速提高和現有數據量的急劇增大,在很大程度上解決了神經網絡本身的參數過多、訓練難度過大等問題,從而使之能夠被廣泛應用在各個方面。GAN使用博弈對抗的思想運用神經網絡進行訓練,使其能夠生成人臉的面部圖像。實現本系統的主要編程語言為python,pycharm2018.2.2是主要的開發平臺,在其中使用了許多python相關的數字處理的庫,同時還需要使用TensorFlow1.8來進行神經網絡部分內容的編程以及還使用了pyqt5來進行界面的設計。由于本系統的開發者已學習了與系統開發相關的基礎知識,可以通過使用這些知識來對系統進行開發,因此,從系統的技術方面來看該系統的實現是可行的。2.2.3經濟可行性 本系統的開發人員主要是為實踐生成式對抗網絡模型,為了訓練神經網絡,對使用計算機的性能有一定程度的要求,也可以通過租用云端服務器來進行解決,相關資料可以通過互聯網來獲取,因此,從實現本系統的經濟方面的角度上來看是可行的。2.2.4操作可行性 本系統開發主要是用于學習研究,用戶需求比較明確,對于使用本系統的開發人員來說,調研方便,可以查閱相關書籍也可請教老師以及相關人員。基于GAN實現的人臉生成系統的規模并不是很大,復雜程度也不是很高,StarGan雖然比較復雜但本系統是直接調用這個模型,所以在開發過程中遇到困難能夠解決。開發本系統所用的算法現如今都比較成熟,也易于開發和維護。而對于使用本系統的用戶來說,由于本系統的人機交互界面簡潔,操作簡單,并且對使用者沒有任何相關專業的要求,所以容易使用。因此可以得出本系統在操作上的可行性。2.2.5法律可行性 人臉圖像生成系統的設計與開發并不設計任何商業牟利,也不涉及版權以及合同相關的內容。開發過程中所有需要的技術資料以及開發環境全是開源公開的,不涉及任何的法律行為。本系統主要是用于個人學習,同時提高個人的綜合開發能力,因此可以得出本系統在法律上的可行性。2.2.6可行性研究結論 通過以上對系統的各個可行性方面的研究,說明基于GAN的人臉圖像生成系統在技術、經濟、法律、操作等方面均可行,開發成本較為低廉,具有較為成熟的技術保障以及還有較為完善的設計的思路,因此,本系統的設計和開發是可行的。
3人臉圖像生成系統需求分析 得到用戶對最終系統的期望是軟件需求分析方面的主要內容,通過對這些問題及環境進行理解與分析,需求分析為其設計相關功能,系統通過這些就能夠建立對應的模型,從而對用戶的需求進行完善,最終形成對需求規格的相關說明,以上這些活動就構成了需求分析階段。 本階段的最主要的任務就是需要對系統的一系列功能進行詳細的描述和分析,并且能夠對系統的各個模塊的實現能有一個詳細的設計。主要使用用例圖以及與用例圖相應的用例描述來對系統進行建模。通過用例圖表現參與者和用例相關的關系,用戶對于系統的需求也可以通過用例說明得到,從而能夠對項目進行控制以及規劃。需求分析階段的首要的工作之一就是用例的獲取。3.1人臉圖像生成系統系統需求3.1.1功能需求 人臉圖像生成系統的主要功能為:1.用戶對本系統進行登錄并選擇相應的功能2.用戶可查看通過GAN生成的人臉圖像,也可以選擇是否運用數據集重新進行訓練,并查看訓練結果 3.用戶可選擇想要通過StarGan處理的圖片,并自行選擇想要實現的相關變換,系統能將結果顯示3.1.2環境需求 通過對人臉圖像生成系統的相關功能進行的相關模擬以及技術分析,得到了如下的系統環境需求,以下提供的一些技術指標僅僅是作為基礎的參考,具體的環境需求要以最終的系統使用為準。硬件環境:處理器:Pentium600MHz以上主頻 內存:512MB以上 顯存:32MB以上軟件環境:操作系統::MicrosoftWindows7及以上 開發環境:Python3.6以及TensorFlow1.83.1.3可靠性需求 人臉圖像生成系統因為需要對圖像進行相應的處理、還需要對GAN進行訓練等,所以需要系統能夠保證在這一系列的操作過程中能夠保持系統工作的正常穩定。同時由于系統內擁有一些操作選項,所以需要開發人員在開發的過程中能夠注意人機交互界面的可靠性,若系統在運行過程中出現不可抗的一些意外,比如操作界面的崩潰等需要關閉系統,系統要能夠具備一定程度的恢復能力。3.1.4安全保密性需求 人臉圖像生成系統理論上進行開源,只要能夠承諾不用于任何商業行為,任何用戶都可以使用本系統,也可對本系統的代碼等內容進行修改優化,因此,本系統無任何特殊的安全保密需求。3.1.5系統界面需求 人臉圖像生成系統應當具有一個較為完整可靠的界面,系統的相關操作選擇、結果顯示燈人機交互行為能在界面上實現,方面用戶的操作。 登錄界面主要為了安全考慮,用戶需要再登錄界面上輸入賬號、密碼以保證安全性,同時密碼的顯示形式需要以密文來顯示,界面上還需要具有登錄按鈕。 功能選擇界面需要有兩個按鈕能實現兩種功能界面的跳轉。 GAN生成人臉功能界面,需要能顯示生成的圖像,以及能夠自行選擇設置超參數,并且能夠點擊訓練按鈕進行訓練。 StarGan生成特定人臉功能界面,需要能夠自行選擇從本地獲取圖片并顯示,能夠選擇特征,以及能夠生成圖像。3.2人臉圖像生成系統需求分析 本節對人臉圖像生成系統進行相關的需求分析,主要使用面向對象的思想,將用例模型與用例描述相結合的方式對系統進行表現。3.2.1人臉圖像生成系統用例模型 用例圖的主要組成就是參與者和用例,以及邊界和三者之間的關系,用例圖可以被用于描述系統的相關功能,它向我們展現了參與者、用例以及他們之間的關系。人臉圖像生成系統需求分析中使用的一些圖符說明見表3-1。表3-1用例圖圖符Table3-1usecaseSymbols圖符名稱圖符含義參與者參與參與者主要為了完成一個事件而與系統進行交互的主體,它并非特定的人或物,是用戶相對于系統所扮演的角色。用例用例實例主要用例實例主要是指能夠生成使特定參與者可見結果的一系列行為,通常使用一個用例來定義一組用例實例。包含包含包含關系主要指的是在系統內部的某個位置顯式地合并了另一個用例的基用例的行為。擴展擴展擴展關系主要指的是基用例在某位置上隱式地合并了另一用例的行為。圖3-1人臉圖像生成系統用例圖Figure3-1Usecasediagramoffaceimagegenerationsystem3.2.2人臉圖像生成系統用例描述 本小節主要是通過對人臉圖像生成系統中各用例進行詳細說明,達到能夠針對系統的功能對客戶進行一定程度的溝通與交流,是開發者能夠加深對目標系統的了解,同時也是為了在進行系統測試的時候能夠對系統的功能指標進行考核。 本節通過運用用例描述對用例模型中的用例進行相應的文字說明,用例描述實際上也可以被認為是參與者與系統兩者之間交互行為的說明。界面登錄的用例描述用例編號:001用例名稱:界面登錄用例描述:用戶對系統進行登錄前置條件:系統運行正常后置條件:進入功能選擇界面活動步驟:(1)運行本系統(2)輸入賬號以及密碼(3)點擊登錄按鈕進行登錄圖3-2界面登錄的用例描述圖Figure3-2Descriptionoftheusecaseoftheinterfacelogin功能選擇的用例描述用例編號:002用例名稱:功能選擇用例描述:用戶對系統功能進行選擇前置條件:(1)系統運行正常(2)系統登錄成功后置條件:進入相對應的功能界面活動步驟:點擊相應的按鈕進入不同功能的界面圖3-3功能選擇的用例描述圖Figure3-3UsecasedescriptionoffunctionselectionGAN生成人臉的用例描述用例編號:003用例名稱:GAN生成人臉用例描述:顯示由GAN訓練生成的人臉面部圖像前置條件:(1)系統正常登錄(2)功能選擇正確后置條件:顯示由GAN訓練生成的人臉面部圖像活動步驟:登錄顯示圖像圖3-4GAN生成人臉的用例描述圖Figure3-4DescriptionoftheusecaseofGANgeneratingafaceGAN訓練的用例描述用例編號:004用例名稱:GAN訓練用例描述:使用GAN對網絡進行訓練前置條件:進入GAN生成人臉的功能的界面后置條件:對網絡進行訓練活動步驟:點擊訓練按鈕圖3-5GAN訓練的用例描述圖Figure3-5DescriptionoftheusecaseofGANtraining顯示生成圖像的用例用例編號:005用例名稱:顯示生成的圖像用例描述:獲取生成測的圖像信息并顯示前置條件:GAN訓練已完成后置條件:顯示圖像信息活動步驟:點擊顯示圖像的按鈕圖3-6顯示生成圖像的用例描述圖Figure3-6showsausecasedescriptionofthegeneratedimageStarGan生成人臉的用例描述用例編號:006用例名稱:StarGan生成人臉用例描述:使用StarGan模型生成特定人臉圖像前置條件:(1)系統運行正常(2)選擇StarGan生成人臉的功能后置條件:在相應的區域顯示生成的圖像活動步驟:(1)運行此功能(2)用例005包含用例006、用例007圖3-7StarGan生成人臉的用例描述Figure3-7UsecasedescriptionofStarGangeneratedface獲取圖像的用例描述用例編號:007用例名稱:獲取圖像用例描述:從本地選擇需要進行變化的圖像前置條件:進入StarGan生成人臉的功能界面后置條件:在相應區域顯示獲得圖像活動步驟:點擊獲取圖像的按鈕圖3-8獲取圖像的用例描述圖Figure3-8Usecasedescriptionimageforobtainingimages選定相關特征的用例描述用例編號:008用例名稱:選定相關特征用例描述:選取想要變化的相關特征前置條件:(1)使用StarGan生成人臉圖像功能界面正常(2)已獲取圖像后置條件:顯示所選取的特征活動步驟:選取與特征相關的按鈕圖3-9選定相關特征的用例描述圖Figure3-9Usecasedescriptionofselectedrelatedfeatures生成特定人臉圖像的用例描述用例編號:009用例名稱:生成特定人臉圖像用例描述:根據選取特征生成特定人臉圖像前置條件:(1)使用StarGan生成人臉圖像功能界面正常(2)已獲取圖像(3)已選取相應特征后置條件:生成特定的人臉圖像活動步驟:點擊生成按鈕圖3-10生成特定人臉圖像的用例描述圖Figure3-10Usecasedescriptionforgeneratingaspecificfaceimage3.3系統活動圖設計 將系統的動態方面作為系統建模時的參考,這就是活動圖的主要形式之一,它主要強調了活動間控制流的流動,即使是并行的行為它也能夠支持。活動圖甚至在整個系統建模的過程中都能夠被添加到任何建模元素中,以此來描述元素。 在本節中,將會從用戶的角度對人臉生成系統的狀態的變化進行詳細的說明,方面用戶明白本系統的活動切換流程。活動圖圖符如表3-2。表3-2活動圖圖符Table3-2Activitydiagramicon圖符名稱圖符含義初始節點初始節點使用實心圓來進行表示,一般在一個子圖中初始節點只能擁有一個。初始節點使用實心圓來進行表示,一般在一個子圖中初始節點只能擁有一個。活動節點活動節點主要用來表示一個活動,它可以是原子的活動,也可以是進一步分解的一系列操作,需要將活動的名稱寫在圓角矩形的內部。活動節點主要用來表示一個活動,它可以是原子的活動,也可以是進一步分解的一系列操作,需要將活動的名稱寫在圓角矩形的內部。活動終點活動終點使用圓圈內再加實心圓來進行表示,在一個活動圖中有可能存在多個活動終點。活動終點使用圓圈內再加實心圓來進行表示,在一個活動圖中有可能存在多個活動終點。分叉節點分叉節點主要有一個轉換用于進入,以及兩個或多個轉換用于離開,每個轉換都可以被看作是一個獨立的工作流。分叉節點主要有一個轉換用于進入,以及兩個或多個轉換用于離開,每個轉換都可以被看作是一個獨立的工作流。匯合節點匯合節點是有一個轉換用于離開以及兩個或多個轉換用于離開,只有當控制流都到達匯合節點后才可以進入下一個活動節點。匯合節點是有一個轉換用于離開以及兩個或多個轉換用于離開,只有當控制流都到達匯合節點后才可以進入下一個活動節點。分支分支使用菱形來表示。在每個離開轉換上都要有一個條件來表示進行轉換滿足的條件。分支使用菱形來表示。在每個離開轉換上都要有一個條件來表示進行轉換滿足的條件。(1)界面登錄用例的活動圖用戶在進入人臉生成系統后,需要首先對系統輸入賬號密碼來進行登錄以保證安全性,在點擊登錄按鈕后,系統會檢查賬號密碼正確與否。如果正確,則表明系統登錄成功,如若錯誤,則說明登錄失敗,需要對賬號或密碼重新進行輸入。圖3-11界面登錄用例的活動圖Figure3-11Activitydiagramoftheinterfaceloginusecase(2)功能選擇的活動圖 用戶在成功登陸系統之后,由于本系統功能主要分為兩部分,所以需要對使用的功能進行選擇,系統會根據點擊按鈕的的不同,進入不同的界面。圖3-12功能選擇用例的活動圖Figure3-12Activitydiagramofthefunctionselectionusecase(3)GAN生成人臉用例的活動圖 進入GAN生成人臉功能的界面后,可以對先前已經過訓練生成的圖像進行顯示。圖3-13GAN生成人臉用例的活動圖Figure3-13ActivitydiagramoftheGANgeneratedfaceusecaseGAN訓練用例的活動圖進入該系統之后,可以選擇是否重新訓練網絡,系統將會對GAN重新進行訓練,并將訓練的效果實時顯示出來。圖3-14GAN訓練用例的活動圖Figure3-14ActivitydiagramoftheGANtrainingusecase顯示生成圖像用例的活動圖圖3-15顯示生成圖像信息用例的活動圖Figure3-15showstheactivitydiagramofthegeneratedimageinformationusecase(4)StarGan生成特定人臉用例的活動圖 在選擇由StarGan生成特定人臉的功能時,首先需要用戶先選求要變換的圖片,之后系統會根據用戶所選取的特征運用StarGan對圖像進行變化,最后生成用戶所需要的圖像。圖3-16StarGan生成特定人臉用例的活動圖Figure3-16ActivitydiagramofStarGantogenerateaspecificfaceusecase獲取圖像用例的活動圖用戶首先需要從本地選取想要變化的圖像,若獲取成功,獲取圖像用例會將其顯示出來,失敗則彈出錯誤提示信息。圖3-17獲取圖像用例的活動圖Figure3-17Gettheactivitydiagramoftheimageusecase選定相關特征的用例的活動圖系統會根據用戶的選擇對圖像進行處理,用戶需要選擇想要實現的特征變化圖3-18選取相關特征用例的活動圖Figure3-18Activitydiagramforselectingrelatedfeatureusecases生成特定人臉圖像用例的活動圖 在用戶選定圖像以及變化的特征之后,系統將會調用StarGan對圖像進行處理圖3-19生成特定人臉圖像用例的活動圖Figure3-19Activitydiagramforgeneratingaspecificfaceimageusecase
4系統分析 系統分析主要目的是為了在需求分析的基礎之上能夠對現行的系統進行進一步的詳細調查,能夠對現行系統具體的信息處理環節以及系統的業務內在邏輯進行一個細致的分析。 本章通過使用面向對象的分析方法,將人臉圖像生成系統的對象、動態以及功能模型分別采用類圖及其關聯以及使用時序圖、用例圖等來進行相應的描述,也是為了能夠為系統的設計與開發提供進一步的參考與指導。4.1人臉生成系統對象模型設計根據對本系統進行的分析,主要總結得出了以下對象模型:操作界面類:主要為了顯示系統界面,方面使用操作;圖像文件類:用于存儲圖像圖像處理類:對圖片進行讀取、預處理等操作;數據集類:用于存儲數據集;數據集處理類:主要對數據集進行操作,實現抽取數據等功能;人臉生成類:通過從指定位置的數據集中選取圖像來對Gan進行訓練,生成人臉面部圖像;StarGan模型接口類:系統通過StarGan的接口實現對StarGan的調用,將選取的好的希望變化的圖片導入StarGan,進行生成特定人臉的面部圖像;圖4-1人臉生成系統對象模型Figure4-1FaceGenerationSystemObjectModel4.4.1實體類分析實體對象的抽象就是實體類,描述具體的實體就是它的主要用途。它還被用來對相關的信息進行保存和更新,因此使實體類一直存在通常是非常需要的,可能在系統的整個生存期中實體類都存在。因此,實體類設計的是否完善對系統能否正確的完成預定目標具有十分重要的作用。 在人臉生成系統中,實體類主要有圖像文件類、數據集類,用于存儲相關實體信息,分別用于存儲圖像文件以及數據集文件,以便于系統在需要的時候進行快速的調用,獲取需要的數據進行業務邏輯處理。圖像文件類圖像文件類的主要作用是存儲從系統中讀取的圖片文件、從數據集中選取的圖像,設計如下成員變量完成相應的任務。表4-1圖像文件類成員變量Table4-1Imagefileclassmembervariables成員變量類型說明data_pathstring圖像路徑load_sizeint圖像大小channelsint圖像通道selected_attrsstring選取的特征train_datasetlist訓練的圖像train_dataset_labellist訓練圖像的標簽test_datasetlist測試的圖像test_dataset_labellist測試圖像的標簽數據集類這個數據集類主要用于GAN生成人臉功能模塊,由于這個功能并不需要圖像的的特征信息,故提取出來方便這個功能使用表4-2數據集成員變量Table4-2Datasetmembervariables成員變量類型說明database_namestring數據集名稱data_fileslist數據集中的文件列表4.1.2邊界類分析 對邊界對象的抽象就是邊界類,它的主要功能就是為了能夠完成系統與參與者間的相互交互,對邊界類進行相應的分析建模可以更加有效的幫助開發者識別出用戶對界面的需求。操作界面類分析操作界面的主要作用是為了集成系統各個功能的操作選項以及顯示,能夠為用戶提供一個更加方面的交互界面,能幫助用戶更加準確、便捷的了解使用系統,有效的提高了系統的使用價值,本次主要設計了如下的成員變量以及相應的成員函數來完成對應的功能。表4-3操作界面類成員變量Table4-3Operationinterfaceclassmembervariables成員變量類型說明btnOkQPushButton確認鍵btnCancelQPushButton取消鍵btnGanQPushButton選擇GAN功能鍵btnStarGanQPushButton選擇StarGan功能鍵btnTrainQPushButton訓練鍵btnDisplayQPushButton顯示鍵btnReadImageQPushButton獲取圖像鍵btnprocessingQPushButton生成圖像鍵textEditTextEdit顯示損失信息graphQLabel顯示圖像控件line_batchsizeLineEdit批次line_zdimLineEdit噪聲zline_lrLineEdit學習率line_betalLineEditAdam的動量項line_datasetLineEdit數據集位置表4-4操作界面類成員函數Table4-4Operationinterfaceclassmemberfunctions成員變量類型說明login()void登錄clear()void清空賬號密碼gan_fun()void進入GAN功能界面stargan_fun()void進入StarGan功能界面btnTrain_clicked()voidGAN訓練btnDisplay_clicked()void顯示圖像btnReadImage_clicked()void獲取圖像btnprocessing_clicked()void顯示生成圖像4.1.3控制類分析 控制類主要是對用例關于業務邏輯方面的實現方式進行相應的描述,經常能夠被用來對用例的控制行為進行相應的建模設計,用例與控制類對象可能是一對多的關系,又或者是控制類的實體對象又與多個用例相對應,并沒有一種固定的對應關系,要視情況而定。實體類和邊界類控制下的業務邏輯可以被控制類有效的脫離,從而主要集中于業務邏輯的處理,高效的完成系統功能。在本系統中,控制類主要由數據集處理類、圖像處理類、StarGan模型接口類、人臉生成類組成。圖像處理類本系統圖像處理類的作用主要將對圖像進行的處理操作進行封裝,使之能夠方面的對圖像進行操作,現設計如下的成員變量與成員函數。1)成員變量表4-5圖像處理類成員變量Table4-5ImageProcessingClassMemberVariables成員變量類型說明data_pathstring圖像路徑load_sizeint圖像大小channelsint圖像通道selected_attrsstring選取的特征train_datasetlist訓練的圖像train_dataset_labellist訓練圖像的標簽test_datasetlist測試的圖像test_dataset_labellist測試圖像的標簽2)成員函數表4-6圖像處理類成員函數Table4-6Imageprocessingclassmemberfunctions成員函數類型說明get_image()array從圖像地址讀取圖像images_square_grid()Image將圖像保存為方形網格preprocess()void對圖像進行預處理save_images()void將圖像存入指定位置(2)數據集處理類主要是針對訓練GAN生成人臉來使用,用于對數據集的管理以及一些基礎操作。成員變量表4-7數據集處理類成員變量Table4-7DatasetProcessingClassMemberVariables成員變量類型說明database_namestring數據集名稱data_fileslist數據集中的文件列表成員函數表4-8數據集處理類成員函數Table4-8DataSetProcessingClassMemberFunctions成員變量類型說明download_extract()void下載并提取數據集get_batches()void從數據集中獲取批量大小的數據(3)人臉生成類通過訓練GAN網絡生成相似的人臉面部圖像,該部分主要是通過從訓練集不斷的抽取圖像來進行訓練鑒別器網絡與生成器網絡,最后能夠生成相似的圖像。成員變量表4-9人臉生成類成員函數Table4-9FaceGenerationClassMemberFunctions成員變量類型說明data_dirstring數據集地址batch_sizeint批量大小z_dimint噪聲z的維度learning_ratefloat學習率betalfloatAdan的動量項epochsint批次celeba_datasetDateset數據集成員函數表4-10人臉生成類成員函數Table4-10FaceGenerationClassMemberFunctions成員變量類型說明model_input()tuple創造模型輸入discriminator()tuple鑒別器網絡generatoer()Tensor生成器網絡model_loss()tuple獲得鑒別器和生成器的網絡model_opt()tuple獲得優化操作show_generaor_output()void顯示圖像輸出train()void訓練GAN(4)StarGan模型接口類 StarGan是運用TensorFlow構成的模型,通過設立接口對其進行調用,可以更為高效的使用這個模型,通過StarGan可以使用戶自行選擇想要實現的特征,生成特定的人臉面部圖像。成員變量表4-11StarGan模型接口類成員函數Table4-11StarGanModelInterfaceClassMemberFunctions成員變量類型說明sesssessionTensorFlow會話checkpoint_dirstringcheckpoint文件地址sample_dirstring樣本地址result_dirstring結果地址dataset_namestring數據集名稱dataset_pathstring數據集地址epochint要運行的批數iterationint訓練的迭代次數batch_sizeint批量大小selected_attrsstringCelebA數據集的選定屬性adv_weightfloatGAN的權重ldfloat梯度懲罰lrfloat學習率custom_labelint關于所選屬性的自定義標簽n_disint鑒別器層數img_sizeint圖像大小img_chint圖像通道2)成員函數表4-12StarGan模型接口類成員函數Table4-12StarGanModelInterfaceClassMemberFunctions成員變量類型說明generator()tensor生成器網絡discriminator()tuple鑒別器網絡gradient_penalty()tensor梯度懲罰build_model()void建立模型train()void網絡訓練save()voidcheckpoint文件保存load()boolcheckpoint文件加載test()void模型測試4.2人臉生成圖像系統動態模型設計時序圖主要是為了將對象之間的信息傳遞以及交互行為進行直觀的顯示。本節主要采用時序圖來描述系統隨著時間變化的行為,時序圖圖符如表4-11所示。表4-11時序圖圖符Table4-11Timingdiagramicons圖符名稱圖符含義參與者生命線參與者生命線用于表示在時序圖中參與交互操作的對象,下方的生命線表明在該時間內的用戶會使存在的。參與者生命線用于表示在時序圖中參與交互操作的對象,下方的生命線表明在該時間內的用戶會使存在的。對象生命線對象生命線表示時序圖中參于交互的對象,它不僅可能是某個原型化事物也可能是具體的某個事物,下方的生命線說明該對象在該時間內是存在的。對象生命線表示時序圖中參于交互的對象,它不僅可能是某個原型化事物也可能是具體的某個事物,下方的生命線說明該對象在該時間內是存在的。激活激活用于說明對象正在進行某一活動,在不同對象的生命線間進行消息傳遞同時激活對象。激活用于說明對象正在進行某一活動,在不同對象的生命線間進行消息傳遞同時激活對象。消息消息主要是對象的行為,一個對象如果調用了其他對象,那就將這個行為稱為消息的傳遞。消息主要是對象的行為,一個對象如果調用了其他對象,那就將這個行為稱為消息的傳遞。返回信息返回信息表示從消息處接收信息并將其反饋給調用的對象。返回信息表示從消息處接收信息并將其反饋給調用的對象。條件判斷指出了一種互斥行為主要在兩個或以上消息序列之間的。(1)界面登錄時序圖圖4-2界面登錄時序圖Figure4-2Interfacelogintimingdiagram(2)功能選擇時序圖圖4-3功能選擇時序圖Figure4-3Functionselectiontimingdiagram(3)GAN生成人臉時序圖圖4-4GAN生成人臉時序圖Figure4-4GANgeneratedfacetimingdiagram(4)StarGan生成特定人臉圖像時序圖圖4-5StarGan生成特定人臉圖像時序圖Figure4-5StarGangeneratesaspecificfaceimagetimingchart4.3人臉生成系統功能模型設計 功能模型可以被直觀的用來描述系統功能,它能夠使得用戶非常清晰的了解到系統的主要功能。本節主要針對系統功能進行相關的設計,通過展示人臉生成系統所有的功能,方便用戶能夠進一步了解本系統。 根據本系統的功能分析,人臉生成系統可以主要細分出以下部分。登錄界面:通過此功能對系統進行登錄;選擇功能:通過此功能進行功能的選擇;顯示生成圖像:通過此功能獲取生成的圖像信息并顯示;GAN訓練,通過此功能對GAN進行訓練;獲取圖像:通過此功能獲得需要的本地圖像;選定相關特征:通過此功能選擇想要變化的特征生成特定人臉圖像:通過此功能經由StarGan人臉面部圖像圖4-6人臉生成系統功能模型Figure4-6Humanfacegenerationsystemfunctionmodel
5系統設計 將系統分析得到的結果與系統科學相關的思想方法進行結合,盡可能的實現能滿足要求的目標系統,這個過程就叫做系統設計。在進行系統設計的時候,需要將內部設計與外部設計一起結合起來進行思考,需要從系統的輸入、輸出、功能、程序、環境等因素綜合起來加以考慮,從而才能設計出整體最優的系統。5.1邊界類設計 用戶通過窗口上的各個控件和鼠標與人臉生成系統進行交互,系統窗口目前主要分為四個部分。圖5-1登錄界面Figure5-1Logininterface圖5-2功能選擇界面Figure5-2Functionselectioninterface圖5-3GAN生成人臉功能Figure5-3GANgeneratesfacefunction圖5-4StarGan生成人臉功能界面Figure5-4StarGangeneratedfacefunctioninterface5.2控制類設計(1)圖像處理類 當用戶在GAN生成人臉部分點擊“顯示圖像”按鈕時,圖像處理類會從數據集中獲取已通過GAN訓練生成的圖片信息并進行展示。在GAN訓練部分時,圖像處理類需要處理從數據集中選取的圖像,只有在對圖像進行預處理之后圖像才會被運用于訓練當中。圖5-5圖像處理類流程圖Figure5-5ImageProcessingClassFlowchart數據集處理類數據集處理類主要是對使用的數據集進行處理,它將被應用于GAN的訓練。首先需要先從網上下載所要使用的數據集,之后在GAN訓練時,需要對數據集中的圖像進行隨機批次提取,數據集處理類主要被用于返回批量的數據,以方便GAN訓練使用。圖5-6數據集處理類流程圖Figure56-DataSetProcessingClassFlowchart(3)人臉生成類 人臉生成類是通過對GAN網絡進行訓練,從而得到人臉面部圖像,用戶通過進入GAN生成人臉功能界面,對GAN進行訓練從而得到人臉面部圖像。之后,為了使圖像能夠在相應的控件上進行顯示,圖像處理類就要對圖像進行相應的處理操作。圖5-7人臉生成類流程圖Figure5-7FaceGenerationClassFlowchart(4)StarGan模型接口類 當用戶選擇StarGan模型生成特定圖像功能時,首先需要點擊“獲取圖片”按鈕選取想要變化的圖像,之后再依次選取想要實現的特征變化,最后點擊“生成圖像”按鈕實現圖像的生成。圖5-8StarGan模型接口類流程圖Figure5-8StarGanModelInterfaceClassFlowchart5.3GAN生成人臉功能部分的結構設計5.3.1數據預處理數據預處理部分主要是對使用的圖像進行處理。首先需要對使用的數據集進行下載,之后還要使用數據集處理類中的批處理函數來獲取圖像,并根據之后要設置的批大小為我們提供一個圖像數組。為了結果能夠更加符合預期,需要對圖像進行適當的裁剪,去掉無用的像素,以便只顯示人臉。還需要對圖像進行標準化,使它們的值在-0.5到+0.5之間。最后,我們將圖像縮小到28x28。圖5-9圖像預處理結果Figure5-9Imagepreprocessingresults5.3.2網絡的輸入 在開始定義兩個網絡之前,首先需要定義輸入。這樣做的目的是為了不使程序在訓練時看起來很混亂。為此,使用TensorFlow占位符對真假輸入以及學習率進行定義。輸入的參數需要有圖像的寬度、高度、通道數、以及噪聲z的維度5.3.4鑒別器網絡和生成器網絡 鑒別器和生成器主要都采用的是卷積神經網絡。卷積神經網絡是現如今深度學習中的一個代表算法之一,它的深度學習架構是仿造生物的視知覺機制所構建的。卷積神經網絡自提出以來,就擁有非常優秀的表現,目前已被廣泛應用于各個領域當中。它的最大的特點就在于能夠將網絡的權值數量有效降低,網絡模型的訓練難度以及復雜度也同樣減少,使它的權值共享和局部連接部分能夠更加類似生物的視知覺神經網絡。(1)鑒別器網絡鑒別器網絡試圖區分真實和虛假的圖像,也就是用于圖像分類的卷積神經網絡。鑒別器網絡由四個卷積層組成。對于網絡的每一層,首先將執行卷積,然后將執行batchnormalization調整激活值的分布,它能夠使激活值擁有適當的廣度,從而使得網絡學習更快更準確,最后,將執行激活函數LeakyReLu。鑒別器網絡采用的激活函數主要是LeakyReLu,函數式如下,f其中α只是個控制尺度的參數,通常很小。它的整體效果要比ReLu要好,收斂速度必sigmoid快,計算十分簡單有效,且不會產生過擬合。鑒別器的整體與部分網絡結構如下:圖5-10鑒別器網絡結構Figure5-10Networkdiagramofthediscriminator圖5-11鑒別器卷積層的第一層結構示意圖Figure5-11Schematicdiagramofthefirstlayerstructureofthediscriminatorconvolutionlayer 在第一層卷積層中采用了64個5*5*3大小的卷積核,使用步長為2對28*28*3大小的圖像進行卷積計算,使用激活函數LeakyReLu,最后得到14*14*64的特征圖。圖5-12鑒別器卷積層的第二層結構示意圖Figure5-12Schematicdiagramofthesecondlayerstructureofthediscriminatorconvolutionlayer 在第二層卷積層中采用了128個5*5*64大小的卷積核,使用步長為2對第一次卷積計算得到的14*14*64大小的特征圖進行卷積計算,得到7*7*128的特征圖,之后使用batchnormalization調整激活值,接著使用激活函數LeakyReLu,最后得到7*7*128的特征圖。圖5-13鑒別器卷積層的第三層結構示意圖Figure5-13Schematicdiagramofthethirdlayerstructureofthediscriminatorconvolutionlayer 在第三層卷積層中采用了256個5*5*64大小的卷積核,使用步長為1對第二次卷積計算得到的7*7*128大小的特征圖進行卷積計算,得到4*4*256的特征圖,之后使用batchnormalization調整激活值,接著使用激活函數LeakyReLu,最后得到4*4*256的特征圖。圖5-14鑒別器的輸出Figure5-14Outputofthediscriminator 在第三層的卷積層中進行卷積計算后,將4*4*256的特征圖進行reshape,即對其進行一維化,之后在連接全連接層,輸出后使用激活函數sigmoid,得到鑒別器的輸出結果(2)生成器網絡生成器網絡的方式與鑒別器正好不同,它試圖去愚弄鑒別器。該網絡由四個反卷積層組成。首先,我們需要先將輸入通過全連接層變換維度,然后reshape,之后,將其輸入到去卷積層。每個反卷積層執行反卷積,然后執行batchnormalization調整激活值和使用激活函數LeakyReLu。最后,我們返回tanh激活函數。生成器網絡整體和部分網絡結構如下:圖5-15生成器網絡結構圖Figure5-15Generatornetworkstructure圖5-16生成器輸入層Figure5-16Generatorinputlayer 生成器網絡在第一層輸入層采用全連接層,生成7*7*512units圖5-17生成器卷積層輸入Figure5-17GeneratorConvolutionInput 將全連接層得到的數據reshape,之后,執行batchnormalization調整激活值和使用激活函數LeakyReLu,得到7*7*512的特征圖。圖5-18生成器反卷積層的第一層結構Figure5-18Thefirstlayerstructureofthegeneratordeconvolutionlayer在第一層反卷積層中采用了256個5*5*256大小的卷積核,使用步長為2對反卷積輸入得到的7*7*512大小的特征圖進行反卷積計算,得到14*14*256的特征圖,之后使用batchnormalization調整激活值,接著使用激活函數LeakyReLu,最后得到14*14*256的特征圖。圖5-19生成器反卷積層的第二層結構Figure5-19Layer2structureofthegeneratordeconvolutionlayer在第二層反卷積層中采用了128個5*5*128大小的卷積核,使用步長為2對反卷積輸入得到的14*14*512大小的特征圖進行反卷積計算,得到28*28*256的特征圖,之后使用batchnormalization調整激活值,接著使用激活函數LeakyReLu,最后得到28*28*128的特征圖。圖5-20生成器反卷積層的第三層結構Figure5-20Layer3structureofthegeneratordeconvolutionlayer在第三層反卷積層中采用了3個5*5*3大小的卷積核,使用步長為2對反卷積輸入得到的28*28*128大小的特征圖進行反卷積計算,得到28*28*3的特征圖,之后使用激活函數tanh,最后輸出得到28*28*3的圖像。5.3.5損失函數需要主要定義三個損失:生成器的損失,使用真實圖像時鑒別器的損失以及使用假圖像時鑒別器的損失,鑒別器的損失不僅僅是單一的損失,對于鑒別器來說,總損失是假圖像和實際圖像損失的總和。損失將tf.nn.sigmoid_cross_entropy_with_logits取得,它是TensorFlow中與sigmoid搭配使用交叉熵損失函數,再將其封裝在tf.reduce_mean以獲得批處理中所有圖像的均值。特別對于鑒別器的損失來說,需要使用標簽平滑來更好的計算。因為對于鑒別器,損失由兩部分,同時又希望能夠在其鑒別出真圖像時輸出1,假圖像時輸出0,所以在計算損失時,將假圖像的logit與全零標簽一起使用,真圖像則與全一標簽一起使用。5.3.6優化 對于模型的優化,主要使用Adam算法,使用了TensorFlow中的AdamOptimizer優化器。首先,需要得到所有可訓練的變量,由于在之前已經對變量以命名方式進行區分,例如生成器以“generator”開頭,鑒別器以“discriminator”開頭。之后,將獲取的變量列表分為兩部分,一個用于生成器變量,另一個則用于鑒別器變量。之后傳遞給minimize方法中的var_list,從而使得優化器只對var_list中的變量進行更新。最后,使用AdamOptimizer單獨創建網絡創建優化器。5.4StarGan模型 StarGan實現了多領域轉換的問題,它能夠十分有效的對圖像進行訓練。它的網絡結構主要是星型結構,從圖5-20可以清楚的看出,通常情況下,多對多的結構是十分復雜的,而StarGan只需要使用一個G就可以學習所有領域的轉換。((a)Cross-domainmodels2143G21G12G41G14G32G23G34G4321543b)(StarGAN圖5-21StarGan模型框架Figure5-21StarGanModelFramework 為了讓生成網絡能夠擁有多個領域轉換的能力,需要對通常的網絡進行變換。例如,需要在生成器網絡中加入目標領域的有關信息;鑒別器網絡不僅需要具有原先判斷圖像真實性的功能,還需要能夠對圖像的類別給出判斷等等。以下是生成器和鑒別器的訓練圖。圖5-22StarGan訓練Figure5-22StarGanTraining關于StarGan模型,更詳細的部分見附錄B。
6編碼 編碼是將軟件設計得到的一系列成果編譯成能夠使用某種程序設計語言來進行書寫的程序,它作為軟件工程中的一個重要階段,編碼本身也是使系統設計進一步具體的一種方法,所以說,軟件設計的質量很大程度上能夠影響程序的質量。同時,程序本身也會受到程序設計語言以及編碼風格采用的不同而產生很大的影響。6.1編碼工具的選擇(1)人臉生成系統開發工具選擇 本系統主要使用PyCharm2018來進行開發,人機交互界面主要是采用PyQt5框架,同時在對圖像進行操作時主要使用的是python的圖形處理庫PIL(PythonImagingLibrary),系統開發環境如下: PyCharm是一款由JetBrains開發的PythonIDE,它具有許多能夠幫助開發者在使用Python開發過程中有效提升效率的系列工具,像是單元測試、語法的高亮、程序調試等許多內容。不僅如此,PyCharm還提供了許多高級功能能夠支持專業Web開發,用來專門針對Django框架。 PyQt5作為一個GUI擴展,它是專門面向Python提供的,Qt本身是目前所使用的最為強大的GUI庫之一,它還將Python與Qt庫進行了一次完美的融合,它跨平臺的特性也讓它的應用范圍更加的廣泛。PyQt作為擁有高性能的GUI控件集,能夠運用Qt成熟的IDE進行操作界面的設計,同時提供了多種多樣的窗口控件。不僅如此,它還提供了一套完整的應用程序接口專門為了開發者,這就使得開發者可以輕松利用Python實現所有Qt能做的事。 PIL(PythonImagingLibrary)作為圖像處理庫,它支持許多文件格式的特性能夠對開發人員產生非常大的幫助;同時,它強大的圖像和圖形處理能力也能為開發人員提供方便。(2)人臉生成模型訓練工具選擇 本次的人臉生成模型的開發與設計主要是基于深度學習,采用TensorFlow作為深度學習框架,采用PyCharm2018作為模型訓練部分的開發環境。 TensorFlow是谷歌公司開發的一款深度學習工具,它能夠很好的支持深度學習的各種各樣的算法,而且并不僅僅局限于深度學習方面。TensorFlow目前已經被廣泛應用于谷歌的各類產品當中,語音搜索、翻譯、YouTube、圖片等等。TensorFlow的廣泛應用已經受到了學術界、工業界的大量關注,同時也有大量的科技公司加入其中。6.2變量及函數命名規則 本系統主要使用的命名規則是“駝峰命名法”,混合大小寫字母來構成相應的變量和函數名,盡可能的使命名做到簡潔明了,使人易懂。類名的首字母使用大寫,類名如果由多個單詞組成,則將之后單詞的首字母全都使用大寫。變量名的首字母則采用小寫字母,若有多個單詞則運用下劃線來劃分。函數的命名規則也與類名類似,盡可能的使函數直接易懂,方便后續開發人員的使用。6.3人臉生成模型的訓練(1)數據集的獲取 本系統的數據集主要采用的是香港中文大學的開放數據集CelebA。在這個數據集當中包含了10177個名人身份的202599張圖片,這些圖像對于本系統的訓練來說十分的有幫助。在GAN生成人臉圖像的功能當中,由于只需利用人臉的圖像來進行訓練,所以還需要對圖像進行一些處理。利用PIL對圖片進行裁剪,刪除大多數不屬于人臉部分的像素,之后再利用雙線性差值對圖像進行縮放,方便訓練。由于本系統還使用了StarGan模型,所以在訓練的過程中還需要圖像相關的屬性信息,下面便是圖像的屬性信息列表。圖6-1圖像屬性列表Figure6-1Imageattributelist(2)TensorFlow網絡的構建根據已設計好的人臉生成模型的網絡結構,利用Python導入TensorFlow函數庫,利用TensorFlow自帶的卷積、全連接、歸一化等函數編寫GAN網絡。具體網絡的如何構建可以查看本文5.3人臉生成模型網絡結構設計這部分的內容。(3)參數配置 ①GAN生成人臉功能部分的超參數如下:batch_size=32 #批量大小z_dim=100 #噪聲z的維度learning_rate=0.0002 #學習率betal=0.5 #Adam的動量項 ②StarGan生成人臉功能部分的超參數如下: batch_size=16 #批量大小 lr=0.0001 #學習率 ld=10.0 #梯度懲罰項lambda adv_weight=1 #GAN的權重 n_res=6 #殘差塊數量 n_dis=6 #鑒別器層數 6.4程序清單 主要程序代碼見附錄C
7測試設計 測試并不是為了說明程序的正確與否,而是為了發現程序在執行過程中產生的錯誤。從開發人員的角度上來說,就是為了證明軟件不存在錯誤,軟件能夠正常的運行,實現用戶的要求。7.1系統測試的基本原則 為了能夠對系統更加有效的進行測試,以及為了能夠使用有效的測試方法,本系統采用了如下的測試準則: (1)用戶的需求必須要被測試滿足,程序無法滿足用戶的需求對用戶來說就是最為嚴重的錯誤。 (2)測試計劃在測試開始之前就應該要被設計提出。 (3)Pareto原理在軟件測試中能夠進行相應的應用。它主要表達了這么一個觀點,程序中80%的錯誤有可能由程序中20%的模塊所產生。這個原理的主要目的就在于對其中可疑的模塊進行完整的測試。 (4)測試的規模要逐漸變大。首先由小模塊開始,先對單個程序模塊進行測試;之后模塊逐漸變大,重點進行轉移,最后,就是在整個系統中進行查找。 (5)窮舉測試是無法實現的。因為它需要對所有的運行的路徑都進行檢查,由此可以得出,即使是一個規模很小的程序,但若將所有運行路徑進行排列,需要運行的路徑也會變得非常的多。并且在測試過程中難免會受到各種資源的束縛,不可能對所有可能的路徑都進行測試。所以,使用軟件測試無法說明程序沒有錯誤。可是,可以通過提高程序的可靠性,對測試方案進行詳細的相關設計,以及使程序的邏輯能夠被全面的覆蓋來實現。 (6)為了能夠使測試達到令人滿意的最優結果,程序的測試最好由獨立的人員來進行。 (7)對測試的程度要拿捏得當,要選取一個平衡點,無論是充分還是不充分都對資源進行了浪費,同樣都是不負責任的表現。7.2系統測試的基本方法 測試的基本方法主要分為兩種,一種首先需要測試者先對產品具有的功能進行了解,之后通過測試來對各個功能進行檢驗,檢查是否能正常使用各個功能;另一種則需要首先了解產品的內部工作過程,之后通過規則說明書的相關規定來對產品的內部動作進行檢驗。前者被稱為黑盒測試,后者則是白盒測試。 在軟件測試中,所謂的黑盒測試就是把程序看作是一個黑盒子,絲毫不關心對程序的內部結構以及程序的處理過程。這就說明,對程序的接口進行的測試就是黑盒測試測試的主要部分,它檢查程序是否能夠正確的接收以及輸出數據,在程序運行時對外部信息的完整性能否保持。 白盒測試則與黑盒測試完全不同,它相當于把整個程序放在透明的白盒子中,這就要求測試人員不僅僅只是對程序的結構熟悉還要對處理算法十分了解。在進行測試的過程中,依照軟件設計說明書中的相關說明嚴格檢查程序內部細節,專門設計測試用例給特定的條件使用,還要使測試軟件的邏輯路徑得到充分的覆蓋,從而才能夠得出最后的測試結果。7.3人臉生成系統測試方案 黑盒測試是本測試單元主要采用的測試方式。通過使用它來檢查程序是否正確的對數據進行輸入輸出、是否能夠正常的使用功能、并且使外部信息的完整性在運行時能夠否得到保持。登錄功能測試表7-1登錄功能測試Table7-1Loginfunctiontest測試功能:登錄功能測試目的:測試系統是否能夠正常的登錄測試設計:(1)在登錄界面輸入賬號密碼(2)點擊登錄按鈕預期結果:成功登錄人臉生成系統,界面跳轉到功能選擇界面;登錄失敗則需要彈出錯誤信息進行提示測試結論:功能正常圖7-1登錄功能測試Figure7-1Loginfunctiontest(2)功能選擇功能測試表7-2功能選擇功能測試Table7-2Functionselectionfunctiontest測試功能:功能選擇功能測試目的:測試系統是否能夠正常執行功能選擇測試設計:(1)選擇GAN生成人臉功能(2)選擇StarGan生成特定人臉圖像功能預期結果:界面正常跳轉到選擇的功能界面測試結論:功能正常圖7-2功能選擇功能測試Figure7-2Functionselectionfunctiontest(3)GAN訓練功能測試表7-3GAN訓練功能測試Table7-3GANTrainingFunctionTest測試功能:GAN訓練功能測試目的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- HY/T 0460.6-2024海岸帶生態系統現狀調查與評估技術導則第6部分:海草床
- NB/T 11628-2024煤礦用道岔控制裝置通用技術條件
- 2025年危機管理與應急處理考試題及答案
- 幼數學試試題及答案
- 青海省申論試題及答案
- 西方政府的應急響應能力試題及答案
- 軟考網絡工程師模擬復習試題及答案
- 如何提升公共政策的實施效率試題及答案
- 網絡架構規劃細節試題及答案
- 機電工程考試案例分析及試題與答案分享
- 廣東省佛山市2023-2024學年高二下學期7月期末考試地理試題
- 2024年江西省中考生物·地理合卷試卷真題(含答案)
- JBT 14449-2024 起重機械焊接工藝評定(正式版)
- 網店視覺營銷智慧樹知到期末考試答案章節答案2024年四川商務職業學院
- 訴訟與非訴訟銜接機制探討
- 道路交通事故當事人陳述材料(模板)
- MOOC 網球技術與戰術-華東師范大學 中國大學慕課答案
- 2024年中考物理復習課件 第12講 杠桿
- 危化品運輸安全責任劃分與追究的標準與程序
- 2024年江蘇省事業單位和國有企業招聘筆試參考題庫含答案解析
- 銷售團隊管理課件
評論
0/150
提交評論