第一次迭代開發心得

基於pytorch圖像識別的enas 啥也不會還作機器學習前端

 

思考總結

 

設想和目標

 

  1. 咱們的軟件要解決什麼問題?是否認義得很清楚?是否對典型用戶和典型場景有清晰的描述?
    • 軟件功能:藉助微信平臺搭建一個圖像識別的小程序,能夠進行實時識別,返回結果,而且收集用戶評價。
      • 前端是用小程序web開發者工具。
      • 後臺要求:基於pytorch框架搭建CNN模型,其中CNN模型要求是由Google提出的enas(高效神經架構搜索)獲得的。
    • 典型用戶:微信用戶
    • 典型場景:微信小程序
  2. 咱們達到目標了麼(原計劃的功能作到了幾個? 按照原計劃交付時間交付了麼? 原計劃達到的用戶數量達到了麼?)?
    • 原計劃功能:實如今微信小程序上對手寫體阿拉伯數字的識別。
    • 實現狀況:所有完成。
    • 交付和用戶:軟件功能基本實現,但數據庫還未完成,目前CNN模型還很是基礎,會根據第二次迭代中經過enas獲得的模型結果進行更換,暫時沒法投入使用。
  3. 用戶量, 用戶對重要功能的接受程度和咱們事先的預想一致麼? 咱們離目標更近了麼?
    • 暫未投入使用,用戶實際接受成度未知
    • 離目標更近了
  4. 有什麼經驗教訓? 若是歷史重來一遍, 咱們會作什麼改進?
    • 項目的重難點是enas,先對論文作復現弄懂模型參數共享,再根據這個思想去搜索出咱們須要的CNN模型(論文中作的是RNN)。這個項目跟作普通的web,app項目差異較大,沒有那麼多頁面設計和功能需求,可是對知識深度的要求比較高,實現難度大,重點是它跟咱們平時學的知識密切程度低。若是重來一遍,應該會提議下降這個項目在圖像識別方面的難度,而後增多一些功能,多一點用戶交互之類的。(固然這些只是我的見解...)

 

計劃

 

  1. 是否有充足的時間來作計劃?
    • 有,老師讓咱們把前八週重心放在計劃需求上
  2. 團隊在計劃階段是如何解決同事們對於計劃的不一樣意見的?
    • 計劃階段主要是剛開始咱們跟指導老師討論肯定了主要方向,而後後面基本上碰到問題一塊兒討論解決,不多有不一樣意見。
  3. 你原計劃的工做是否最後都作完了? 若是有沒作完的,爲何?
    • 團隊總體項目推動很順利,alpha版本的計劃都作完了
  4. 有沒有發現你作了一些過後看來不必或沒多大價值的事?
    • 目前沒有。
  5. 是否每一項任務都有清楚定義和衡量的交付件?
    • 是的,尤爲在模塊對接時,你們會提早說明本身須要接收或者傳出什麼樣的接口或者數據。
  6. 是否項目的整個過程都按照計劃進行,項目出了什麼意外?有什麼風險是當時沒有估計到的,爲何沒有估計到?
    • 徹底按照計劃進行,可是最重的模塊在了第二次迭代,如今你們內心壓力有點大。
  7. 在計劃中有沒有留下緩衝區,緩衝區有做用麼?
  8. 未來的計劃會作什麼修改?(例如:緩衝區的定義,加班)
    • 可能加班時間會增多
  9. 咱們學到了什麼? 若是歷史重來一遍, 咱們會作什麼改進?
    • 感受學到了挺多的...深度學習方面補了不少基礎知識(eg:pytorch基礎,線性、Logistic迴歸模型,優化算法(SGD,Adam),神經網絡(CNN,RNN)搭建,訓練...),基礎的圖像處理,微信小程序也瞭解了基礎的頁面製做和API接口使用。剛開始學習具備盲目性,網上資料、視頻太多了,前兩週學得不紮實,重來一次的話,應該會先去找一本適合本身的書作指導,把書上的例子都敲敲代碼體會一下,而後結合幾個比較官方的視頻學習。

 

資源

 

  1. 咱們有足夠的資源來完成各項任務麼?
    • 咱們完成了任務,但資源明顯不夠,後面會提到
  2. 各項任務所需的時間和其餘資源是如何估計的,精度如何?
    • 時間通常按實際狀況決定(有些周其餘學習任務輕,可能效率高,有些周比較忙,效率確定有影響)
    • 精度還不錯吧...你們作事都不會拖拉,能力也挺強的
  3. 測試的時間,人力和軟件/硬件資源是否足夠? 對於那些不須要編程的資源 (美工設計/文案)是否低估難度?
    • 測試沒有詳細的安排,通常是本身作完本身的會進行測試,而後最後拼接完,再一塊兒進行測試
    • 沒有合適的數據集,目前用的都是網上公開的
    • 咱們本身買的服務器比較簡陋,應該不會用於訓練模型
    • 平時訓練模型你們都用的是本身的筆記本(性能不夠好,大部分無法安GPU,對於複雜的網絡結構計算慢,爆內存)
  4. 你有沒有感到你作的事情可讓別人來作(更有效率)?
    • 這個問題很奇怪...
  5. 有什麼經驗教訓? 若是歷史重來一遍, 咱們會作什麼改進?
    • 資源上有些尷尬,下階段可能會向老師尋求幫助,或者藉助於某些能夠進行GPU計算的平臺進行模型搜索和訓練

 

變動管理

 

  1. 每一個相關的員工都及時知道了變動的消息?
    • 是的,通常有變更都會在羣裏或者開會的時候說
  2. 咱們採用了什麼辦法決定「推遲」和「必須實現」的功能?
    • 一開始就決定了主體功能,主體功能必須實現,目前沒有推遲什麼功能,都按照計劃實行
  3. 項目的出口條件(Exit Criteria – 什麼叫「作好了」)有清晰的定義麼?
    • 能識別用戶圖片,而且識別準確率較高,用戶可接受範圍
    • 實現方法是基於項目需求
    • (我的理解)
  4. 對於可能的變動是否能制定應急計劃?
    • 沒有提早制定應急計劃,但有變動時會及時作出反應和調整
  5. 員工是否可以有效地處理意料以外的工做請求?
    • 你們的及時調整都很好,對於意外狀況能較快找出緣由,找到解決方案
  6. 咱們學到了什麼? 若是歷史重來一遍, 咱們會作什麼改進?
    • 項目的團體協做比較重要,作模塊以前要溝通好,中途發現困難相互幫助,測試時發現問題應該與組員商議後再作出調整

 

設計/實現

 

  1. 設計工做在何時,由誰來完成的?是合適的時間,合適的人麼?
    • 整個模式的設計是在項目初期,全組人員和老師溝通商定的
  2. 設計工做有沒有碰到模棱兩可的狀況,團隊是如何解決的?
    • 沒有
  3. 團隊是否運用單元測試(unit test),測試驅動的開發(TDD)、UML, 或者其餘工具來幫助設計和實現?這些工具備效麼?
    • 有UML圖來幫助設計
  4. 比較項目開始的 UML 文檔和如今的狀態有什麼區別?這些區別如何產生的?是否要更新 UML 文檔?
    • 目前沒有進行需求調整,
  5. 什麼功能產生的Bug最多,爲何?在發佈以後發現了什麼重要的bug? 爲何咱們在設計/開發的時候沒有想到這些狀況?
    • 目前好像沒bug,瑕疵的話會有一點,實際圖片上傳後,會在後臺壓縮成28*28的大小,這樣圖片精度會有損失,這個受限於數據集
  6. 代碼複審(Code Review)是如何進行的,是否嚴格執行了代碼規範?
    • 代碼比較規範,可是跟老師文檔中提出的要求會有些出入

 

測試/發佈

 

  1. 團隊是否有一個測試計劃?爲何沒有?
    • 沒有詳細的測試計劃
    • 緣由:項目的功能模塊較少,你們在作本身模塊時,都會邊作邊測試,最後模塊對接好,會一塊兒進行測試
  2. 是否進行了正式的驗收測試?
    • 第一次迭代驗收完成
  3. 團隊是否有測試工具來幫助測試?
    • 暫未考慮,通常是先看該模型在數據集中的準確率,在比較滿意狀況下,你們再進行手寫數字上傳進行測試
  4. 團隊是如何測量並跟蹤軟件的效能的?從軟件實際運行的結果來看,這些測試工做有用麼?應該有哪些改進?
    • 暫未考慮
  5. 在發佈的過程當中發現了哪些意外問題?
    • 還未發佈
  6. 咱們學到了什麼? 若是歷史重來一遍, 咱們會作什麼改進?
    • 項目作的過程當中就會有不少次測試,若是第二次迭代開發有剩餘時間,你們可能會制定比較詳細的測試方案

 

團隊的角色,管理,合做

 

  1. 團隊的每一個角色是如何肯定的,是否是人盡其才?
    • 你們都挺努力地在學,項目功能模塊少,難度大,分工可能有點尬,有沒有人盡其才不清楚...
  2. 團隊成員之間有互相幫助麼?
    • 固然,你們一塊兒幫忙解決的問題還挺多的
  3. 當出現項目管理、合做方面的問題時,團隊成員如何解決問題?
    • 不多出現這些問題,你們都頗有合做精神,作事效率也不錯,遇到困難都會相互幫忙解決

總結

 1.你以爲團隊目前的狀態屬於 CMM/CMMI 中的哪一個檔次?web

  • 屬於CMMI一級,完成級

  2. 你以爲團隊目前處於 萌芽/磨合/規範/創造 階段的哪個階段?算法

  • 規範

  3.你以爲團隊在這個里程碑相比前一個里程碑有什麼改進? 數據庫

  • 相互配合的效率會更高

  4.你以爲目前最須要改進的一個方面是什麼?編程

  • 編碼規範

  5.對照敏捷開發的原則, 你以爲大家小組作得最好的是哪幾個原則? 請列出具體的事例。 小程序

  • 每週都會進行例會,進行總結和發佈新任務
  • 消息傳遞及時,遇到問題或者須要改動的部分,都會面對面溝通或者QQ交流
相關文章
相關標籤/搜索