現在人們的生活已經離不開手機,除了通信娛樂,手機還能夠幫助人們工做和學習。本產品名爲「PLook」,是一款爲給學生羣體打造的知識分享載體,其呈現方式爲移動互聯網應用軟件,重點利用線下學生課本知識結合PLook線上聚集打造或分享本身的知識內容。性能優化
學生時代的咱們都喜歡使用熒光筆塗抹書本中的重點內容,當須要屢次複習不一樣書本中的一部份內容時不得不帶着一本一本又一本厚重的書籍;當獨自一人在複習重點內容時,想要把本身梳理的一系列重點內容完整的分享給其它同窗怎麼辦?app
不想由於幾個重點知識點而帶上一本厚厚的書?不想把本身努力梳理出來的重點知識束之高閣?很想跟同窗們打造一本屬於本身的知識小冊?咱們來了!PLook
打造了獨特的內容識別引擎,無論你是使用了熒光筆仍是中性筆進行重點內容區域的塗抹和繪製,PLook都可以較好的識別,幫助你快速記錄重點知識!框架
市面上任何一種熒光筆(主要是紅和藍)均可以透過PLook
來將課本中的劃線部分傳送到手機中顯示,如此一來無論學生身處何地,均可以使用手機來複習書上的重點,對於碎片時間的利用率會更高。經過PLook自研的內容識別引擎,可以較好的減輕初高中的同窗們可以在平常的學習生活中對重點知識記錄和記憶的負擔,而且咱們還了打造一個完整知識分享平臺,同窗們可以把本身收集起來的重點知識內容進行歸檔保存,聚集成冊,分享給本身的好友,也能夠瀏覽到好友目前正在收集的知識小冊內容,從而達到流量閉環,縮減同窗們進行知識交流所耗費的精力。ide
PLook自研的內容識別引擎結合了Core ML
、Visio
、OpenCV
三大成熟框架,站在巨人的肩膀上,從新調整,可以對初高中同窗們的平常知識內容識別率達60%,固然咱們開發團隊也在持續不斷的努力攻關當中。性能
這能夠說是目前互聯網+教育
僅存很少的藍海之一了,市場上保有量很是高的教育類產品基本上都是「解題」、「刷題」、「搜題」、「網課」等等內容,基本上都是站在了引導性學習的一面,可是尚未一個產品是站在學生的角度,讓學生自發的組建本身的知識集,利用學生的零散時間去回顧本身的所作下的重點知識,沒有一個比較好的方式去聚集、去分享本身的課本中的知識內容。學習
PLook主要面向的人羣爲初高中學生,目標人羣較爲明確,受衆羣體基數龐大,特別適合在學生過程當中須要大量學習資料、整理大量學習資料的同窗們。測試
咱們使用 OpenCV
做爲圖像識別及處理核心,結合 Core ML
和 Visio
框架管理相關模型和輸出內容模型,在三者的相互協做下打造出了PLook獨特的內容識別引擎。優化
引擎支持紅色熒光筆、藍色熒光筆、OCR掃描識別三大主要功能,因時間因素引擎只完成了紅色熒光筆和藍色熒光筆兩種識別模式。紅色熒光筆起名爲—— 「遮罩模式」,藍色熒光筆起名爲—— 「切割模式」,這兩個模式互不干擾,紅色沒法識別藍色,藍色沒法識別紅色,可是能夠在PLook自帶獨特的相機模塊中連續拍攝不一樣模式下的照片。操作系統
PLook的內容識別引擎可以較好的處理用戶所拍攝照片中核心識別對象由於所處環境的光線明暗、雜物干擾、主體差別等問題干擾,從而較爲完整的輸出用戶想要識別的核心內容。而且用戶還能夠進行選擇是否將識別出的內容轉文字,目前PLook的內容識別引擎支持英文和中文兩種文字的識別。設計
在該模塊中咱們充分發揮了iOS操做系統的優越性,基於Quartz 2D
框架開發了一套獨特的內容輔助標記模塊。總體使用了Core Graphic
進行繪製,而且進行了必定量的性能調優,在必定量程度上緩解了傳統方法直接重載使用drawRect:
方法進行繪製致使的內存暴漲,同時也避免了直接生產寄宿圖,渲染快速,使用了硬件加速,而且高效使用內存。由於避免了建立一個寄宿圖形,因此不管有用戶進行繪製的圖像有多大,都不會佔用太多的內存,不會被圖層邊界剪裁掉也不會出現像素化。
PLook的靈魂基本上就在用戶所拍攝一張張的卡片,因此卡片在某種程度上就成爲了決定用戶留存的關鍵因素。卡片模態匹配主要呈如今PLook的內容識別引擎把用戶的關鍵內容識別出來後以及在內容輔助標記模塊中處理完後的關鍵階段發揮做用,在該階段中,卡片模態匹配模塊須要精準定位對應模態的z-index
參數,並根據該參數開放模態匹配模式,根據事件傳遞響應鏈的層級關係映射到對應z-index
參數對應的卡片上,從而達到完整的匹配閉環。
咱們根據PLook的業務操做邏輯開發了一套姿態轉移識別模型,在該模型中可以較爲精準的識別出用戶姿態的變化,從而讓PLook作出提早的判斷,預先加載業務資源,提早load
上對應的資源文件,稍微用一些空間上的資源浪費來換取時間是的資源減小,較大的拓展iPhone設備的硬件資源能力。
PLook通過一系列模塊生成的最終卡片實際上三態圖像的疊態狀態,三態圖像中各自都具有各自須要渲染的圖像內容,而如何處理好三態圖像的疊加渲染流程就是「圖像疊態處理模塊」要解決的核心問題,再加上咱們要將引入3D-Touch
技術,配合該技術可以讓用戶直達一重態渲染的原始圖像,提高用戶體驗的同時也能充分的發揮出該模塊的核心功能。
PLook中預製了三種幀態處理模式,分別爲「遮罩」、「切割」、「連通」三種模式。三種幀態都依賴於同一環境,對環境要求較爲苛刻,須要對同一環境下的單一幀態進行環境隔離和清洗,稍一不慎就會致使共用內存區域泄露,該模型可以較好的轉換在同一環境下的不一樣幀態所要求的初始化環境,可以保證每次切換幀態時環境的完整性和獨立性。
PLook除了基礎框架外達到了核心模塊的100%自研,存在必定的技術壁壘,可以較好的解決初高中學生使用零散時間溫習重點知識的需求,而且咱們會持續完善PLook的內容識別引擎,使其支持多種顏色熒光筆的識別和提高現有顏色熒光筆識別的準確度。
開發團隊來來回回修改了好幾回核心業務操做流程,大大縮短了面向的目標人羣使用產品的多餘時間。從時間訴求上看,PLook並無花費學生們多餘的時間,學生們在使用PLook的過程當中,排除一些必須操做幾乎都是自動化流程,一張卡片從拍攝到歸檔,最短只須要不到10秒的時間;從精力上看,學生們只須要肯定好本身要手機知識內容,掏出手機,打開PLook,上滑開啓相機,拍攝,歸檔,這一系列流程下來,很是的順滑,一鼓作氣。
在使用PLook製做製做卡片的過程當中,咱們十分推薦用戶一旦發現PLook內置的內容識別引擎作出的識別效果只要有一些稍微的不滿意,在條件容許的狀況下最好直接丟棄或者重拍,由於這樣會讓你手中的PLook越用越聰明,越用越符合學生們各自的習慣。
在PLook的首頁設計中,咱們開發團隊迭代了十幾回,從最初的Peek到如今最新的PLook,一邊是內容識別引擎的升級一邊是首頁的迭代,這兩塊重擔在比賽要求時間這麼緊的狀況下壓力十分巨大。咱們都知道,一個App最重要的地方就在首頁,由於首頁是用戶對這個App第一印象最直接的判斷,好很差用、想不想用,極可能就在這短短的十幾秒中,就在這個App的兩三個頁面滑滑看看,點點這點點那。
因此咱們開發團隊閱讀了一些關於心理學的書,好比《認知心理學基礎》、《行爲心理學》等等資料,而且仔細攻關拿下最終的首頁的定稿——擬物化書本設計。這不是簡單意義上的UI出幾張圖就能應付得過去挑剔用戶的視覺感官體驗的,開發團隊最後在PLook的代碼中把首頁的「擬物化書本設計」進行了二次封裝,跟隨外部設備尺寸變化而進行擬物化書本設計的擴縮,較爲充分的把擬物化書本的設計進行了2D平面上的延伸。以下所示:
內容識別引擎是咱們開發團隊重點攻關和技術沉澱,而且花費了大量時間的基礎模塊,其中最大的難點就在幾大框架的協同合做上,尤爲是OpenCV
的識別模式嫁接,數據流的導向和在上下流層級的格式轉換是一塊很是難啃的硬骨頭,屢次把開發團隊的小夥伴搞得十分的鬱悶和無奈。一直在截止提交做品的前一天晚上,開發團隊的小夥伴都一直還在接着對內容識別模塊進行調優。
你們好!咱們是PJYF!PJ和YF都來自北京信息科技大學計算機學院,軟件工程專業,大三。
PJ是一個陽光積極的小夥子,從大一入學開始就被學長帶入iOS開發中,整個大一不但要熟悉大學生活,還要快馬加鞭的跟進課程的學習,因此留給本身喜歡的iOS開發中時間並很少,直到暑假才能靜下心來好好的梳理一遍iOS開發中須要掌握的知識內容。這一路走來也磕磕碰碰的掌握了一些iOS開發的要點,也算是踏入了iOS開發的大門。PJ主要負責PLook的開發、測試、部署和。
YF是本來也很是的喜歡計算機,可是在接下來的計算機專業學習過程當中,YF發現其實本身仍是喜歡畫畫,遂萌生往設計方向發展,造成了一套本身設計語言,並持續的輸出本身的設計思想。YF主要負責PLook的調研、設計和產品。
在參加比賽開發PLook的這段時間裏,中途還得兼顧這期末考試,給團隊的同窗都增長了很多壓力,在加上PLook的核心模塊——內容識別引擎的最終識別效果實際上只能達到60%左右,性能優化問題一直困擾着開發團隊,雖說可讓用戶在平常使用PLook的過程當中對其進行持續的調教,可是須要的時間過長,按照PLook的內容識別引擎目前的狀況來看,若是隻是依靠用戶自身的調教,要把準確度提高到90%的穩定輸出狀態,須要有效樣本至少是一千張,轉換到平常使用狀況上來看,天天拍至少十張卡片的用戶也須要一直持續的拍100天,成本仍是很大,引擎部分咱們開發團隊仍是會繼續努力優化,突破難點。
在這一段時間中,咱們逐漸的對技術充滿了敬畏之心,曾經一些咱們看起來實在是很高深的技術點在咱們的不懈努力下也都慢慢的完善了出來,也感覺到了自身的知識水平和技術實力的侷限性,致使一些功能的實現上走了很多彎路。
咱們開發團隊認爲,PLook最值得稱讚的地方也是它最危險的地方,若是不能很好處理內容識別引擎的上下流層級的對接關係和提高識別準確度,勢必會流失大量用戶,甚至還會直接致使PLook的消失。所以下一步咱們的作法將把內容識別引擎上雲,在雲端進行處理,雖然把內容識別引擎掛載在雲端,從總體的使用感覺上用戶會以爲速度上慢一些,可是依託雲服務強大的硬件能力,PLook作出的內容識別準確度會更高。
很遺憾,這個項目沒進決賽,能夠說是很是很是遺憾了,看到名單後心都涼了,由於付出的汗水不少不少了。總結了一下,其實問題就出在視頻上,視頻在這,由於最後幾天搞得我十分的煩躁,因此作視頻的時候內心想着這麼付出了這麼多汗水應該是穩了,視頻就沒怎麼好好作,直接錄屏而後配點音就完了(這視頻作的徹底不是我本來水準),徹底沒有當時大一作「大學+」時的那種感受,總之就是很遺憾了吧,無論怎麼說,我都沒有處理好不少細節,覺得扣了不少細節其它事情就無論了,由於當時作「大學+」的時候,決賽去答辯時慌得不行,由於根本沒有任何亮點,就是作的平臺,可是無論是從文檔仍是視頻上看,都作的比如今好太多了,有可能就是那種「老子有技術,天下不怕」的感受吧,哈哈哈哈。
也算是給了本身不小的一個教訓吧,無論之後要作什麼,每一步都要穩紮穩打,不要由於某一塊作的好了,就放棄了另一塊,恰好其實評委可以看到的就只有文檔和視頻,尤爲是視頻,這是抓住評委第一印象的東西,可是我在這狠狠的摔了,忽然想起來去年年底幫一個同窗就作了一個視頻,而後就靠着這個視頻進了決賽,當時我也只負責作視頻,參加比賽的做品是一個VR家居展現,其實我以爲這玩意就是在 Scene 中拖出來了幾個牆和地,添加上紋理,再把櫃子啊牀啊都拖上去,再給這些 Sprite 添加上點擊事件,點了就換 model,最後再添加幾個 button 去選擇去哪一個房間,沒了。任何人只要學了 Unity 都能作的出來,不,應該說是拖的出來。當時這個同窗託我作了初賽視頻,反正我也只負責視頻,就這麼作了,其實我到如今想起來都以爲很難以想象,這玩意怎麼就拿了銀獎。
最初是去年上半年的一次課堂中,我看到了一個 app 的宣傳視頻,我以爲作的東西很是神奇,視頻找不到了,找到了個連接,當時就想着必定要把它作出來,去年下半年的時候就磕磕碰碰的作出了核心 demo ,也是由於這個比賽的緣由才