999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

入侵昆蟲識別微信小程序設(shè)計(jì)與實(shí)現(xiàn)

2023-02-13 04:43:02黃亦其王福寬錢萬強(qiáng)董雙玉
安徽農(nóng)業(yè)科學(xué) 2023年1期
關(guān)鍵詞:頁面程序數(shù)據(jù)庫

黃亦其,沈 豪,,王福寬,,錢萬強(qiáng),董雙玉,喬 曦,,3*

(1.廣西大學(xué)機(jī)械工程學(xué)院,廣西南寧530004;2.中國農(nóng)業(yè)科學(xué)院(深圳)農(nóng)業(yè)基因組研究所,廣東深圳 518120;3.仲愷農(nóng)業(yè)工程學(xué)院智慧農(nóng)業(yè)創(chuàng)新研究院,廣東廣州 510225)

生物多樣性在世界范圍內(nèi)嚴(yán)重衰退,外來入侵物種(IAS)已成為全球生物多樣性面臨的主要威脅之一[1-2]。近年來我國入侵生物中昆蟲入侵種類顯著增長,每年因入侵昆蟲導(dǎo)致的疫情也出現(xiàn)爆發(fā)性增長,因此在防治入侵生物中,針對入侵昆蟲的防治就顯得尤為重要[3]。

防治入侵昆蟲首先的任務(wù)就是要對其進(jìn)行識別,判斷入侵昆蟲物種。現(xiàn)在對于昆蟲的識別系統(tǒng)也已經(jīng)十分成熟,部分軟件識別準(zhǔn)確率達(dá)到98%,但識別數(shù)據(jù)庫較小,識別的昆蟲種類單一,部分軟件功能冗雜缺少針對昆蟲的查詢功能或者后端的聯(lián)系反饋[4]。相比針對入侵植物和大型入侵動(dòng)物的識別應(yīng)用程序的廣泛應(yīng)用地理信息的報(bào)告、數(shù)據(jù)集的收集和識別功能,針對入侵昆蟲的識別軟件市場至今鮮見報(bào)道。

相比于Android和iOS的移動(dòng)應(yīng)用,微信小程序設(shè)備適配性好、對系統(tǒng)要求低,具有“輕、簡、精、快”的輕量化特征,具備現(xiàn)代移動(dòng)互聯(lián)網(wǎng)的顯著特點(diǎn)[5-6]。為了完善入侵昆蟲的管理防治體系,加強(qiáng)公眾的生態(tài)防護(hù)意識,拓寬相關(guān)科研數(shù)據(jù)收集渠道,筆者基于成熟的開發(fā)平臺與設(shè)計(jì)實(shí)現(xiàn)流程,設(shè)計(jì)開發(fā)了一個(gè)針對入侵昆蟲的微信小程序,旨在提高公眾生態(tài)保護(hù)意識,有助于科研數(shù)據(jù)的收集,完善入侵昆蟲數(shù)據(jù)庫,為入侵昆蟲的防治打下良好基礎(chǔ)。

1 需求分析

1.1 需求概述外來物種已經(jīng)對世界范圍內(nèi)的生物多樣性造成嚴(yán)重影響,成功管理這些物種需要公民意識到并參與防止新物種的引入和支持控制干預(yù)措施[2]。針對入侵昆蟲的防治,幫助擴(kuò)大民眾對入侵昆蟲的了解,首先的任務(wù)就是要對其進(jìn)行識別,判斷入侵昆蟲物種種類。

雖然有效利用公民科學(xué)的優(yōu)點(diǎn)已經(jīng)在廣泛傳播,但它在農(nóng)業(yè)領(lǐng)域的應(yīng)用并不像其他行業(yè)那樣廣泛[7]。對于生物農(nóng)業(yè)領(lǐng)域,學(xué)科專業(yè)性較強(qiáng),民眾接受相關(guān)知識渠道往往受限于書籍和傳統(tǒng)媒體,對于昆蟲的鑒別也只能局限于難以科學(xué)記錄的經(jīng)驗(yàn)描述以及無法大范圍推廣的專家指導(dǎo)。與入侵植物與大型入侵動(dòng)物相比,在野外的入侵昆蟲受到季節(jié)性的影響較大,而且由于易轉(zhuǎn)移和體型小難以發(fā)現(xiàn)的特點(diǎn),非相關(guān)從業(yè)人員對于入侵昆蟲的檢測識別難度很大。

在信息化時(shí)代,大數(shù)據(jù)、云計(jì)算、人工智能的全面發(fā)展為入侵生物數(shù)據(jù)庫的建立提供了強(qiáng)有力的技術(shù)支撐,外來有害生物的數(shù)據(jù)和信息在防控外來生物進(jìn)入、定殖、擴(kuò)散成災(zāi)中均發(fā)揮著舉足輕重的作用,大量的基礎(chǔ)數(shù)據(jù)還能對入侵物種的影響進(jìn)行評估,這也是入侵科學(xué)研究的一項(xiàng)重要任務(wù),而圖像在農(nóng)業(yè)信息化過程中是十分重要的信息載體[1,8-9]。近年來,配備高質(zhì)量攝像頭的智能手機(jī)越來越多。這意味著,使用智能手機(jī)可以很容易地捕捉到大型動(dòng)植物群的高質(zhì)量圖像。此外,進(jìn)行復(fù)雜數(shù)學(xué)計(jì)算的軟件(如Matlab)也可用于高精度的圖像處理,這對開發(fā)圖片處理應(yīng)用提供了一個(gè)方便的后端計(jì)算處理平臺。

隨著目前移動(dòng)互聯(lián)網(wǎng)的高速發(fā)展,越來越多的研究者在探索將計(jì)算機(jī)系統(tǒng)與的生物農(nóng)業(yè)管理聯(lián)系起來。現(xiàn)行幾種植物識別APP應(yīng)用流行的識別網(wǎng)絡(luò)數(shù)據(jù)庫雖龐大,但由此導(dǎo)致的訓(xùn)練效果粗放,識別準(zhǔn)確率有待提高[10]。針對入侵植物和大型入侵動(dòng)物的識別應(yīng)用程序已廣泛應(yīng)用到地理信息的報(bào)告、數(shù)據(jù)集的收集和識別功能,而對于昆蟲應(yīng)用程序的開發(fā)較少,而且對于專門針對入侵昆蟲的識別應(yīng)用至今鮮見報(bào)道。

為了更好促進(jìn)知識服務(wù)的擴(kuò)大和深化,推動(dòng)學(xué)科服務(wù)繼續(xù)向用戶延伸,建立科研與用戶之間的有效鏈接[11],系統(tǒng)基于微信小程序的開發(fā)優(yōu)勢[5-6],在面向入侵昆蟲識別的問題上,應(yīng)用現(xiàn)存的技術(shù)框架、設(shè)備發(fā)展優(yōu)勢以及推廣優(yōu)勢,設(shè)計(jì)開發(fā)一個(gè)針對入侵昆蟲的微信小程序。系統(tǒng)集成圖片拍照識別,信息庫功能和報(bào)告上傳功能的綜合可提供用戶多方位的使用需求。

1.2 總體功能需求分析對于開發(fā)入侵昆蟲小程序而言,其主體功能中應(yīng)包括圖片識別、昆蟲信息庫的應(yīng)用和昆蟲信息在線報(bào)告三大模塊。對平臺用戶來說,可登錄小程序的使用界面,使用昆蟲信息庫查找功能,在線昆蟲識別查看以及對入侵昆蟲的位置圖片信息的上傳報(bào)告功能,其中具體包含七大具體的使用功能。用戶功能需求用例如圖1所示。

圖1 用戶功能需求用例圖Fig.1 Use case diagram of user functional requirements

2 系統(tǒng)設(shè)計(jì)

2.1 系統(tǒng)框架在小程序進(jìn)行需求分析的基礎(chǔ)上,對系統(tǒng)的架構(gòu)進(jìn)行設(shè)計(jì)。首先對系統(tǒng)的各個(gè)結(jié)構(gòu)組成進(jìn)行分析設(shè)計(jì)。系統(tǒng)整體結(jié)構(gòu)如圖2所示。

圖2 系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)Fig.2 System architecture design

可以看到該系統(tǒng)采用的是一個(gè)經(jīng)典的前后端交互設(shè)計(jì),移動(dòng)終端通過數(shù)據(jù)網(wǎng)絡(luò)訪問系統(tǒng)服務(wù)器,服務(wù)器進(jìn)而對數(shù)據(jù)庫和識別網(wǎng)絡(luò)文件路徑進(jìn)行訪問。通過分層設(shè)計(jì)降低系統(tǒng)各部分的耦合度,讓系統(tǒng)具有一定的獨(dú)立性和良好的擴(kuò)展性。

根據(jù)對系統(tǒng)的需求分析和概要設(shè)計(jì),整個(gè)識別系統(tǒng)基于C/S架構(gòu),采用前后端分離的開發(fā)模式,由2部分組成,包括用戶小程序端和服務(wù)端,其中服務(wù)端又包括數(shù)據(jù)庫模塊,識別算法模塊以及由Java語言進(jìn)行編碼的系統(tǒng)后端。該研究總體采用MVC(Model-View-Controller)軟件架構(gòu)模式,其模塊間的低耦合使得項(xiàng)目開發(fā)效率更高。考慮到后續(xù)的繼續(xù)開發(fā)研究任務(wù),后臺基于SSM(Spring-Spring MVC-MyBatis)框架進(jìn)行設(shè)計(jì),由于其也是目前主流的Java EE框架,由Spring和MyBatis開源框架組合而成(其中Spring MVC屬于Spring的部分內(nèi)容)[7-8]。Spring是一個(gè)基于J2EE環(huán)境下的輕量級開源框架,利用容器對各組件進(jìn)行選擇調(diào)用,降低了組件間的耦合,通過注入機(jī)制在運(yùn)行時(shí)為組件配置資源,實(shí)現(xiàn)組件的即插即用,此外組件無需指定數(shù)據(jù)接口,因此也可以對組件進(jìn)行分離[9]。Spring MVC屬于Spring提供的一個(gè)構(gòu)建web端的MVC框架,將模型層(Model)分為業(yè)務(wù)層(Service)和持久層(Dao),在Service層可以訪問持久層也可以訪問非數(shù)據(jù)庫層,大大提高系統(tǒng)開發(fā)效率。MyBatis作為后端的數(shù)據(jù)持久層框架,使得JDBC操作數(shù)據(jù)庫的過程更加輕量化,通過Xml或注解的方式將Java對象和Sql語句結(jié)合映射為最后要執(zhí)行的Sql語句,其中JDBC為Java提供專門用于數(shù)據(jù)庫連接的接口。整體架構(gòu)如圖3所示。

圖3 Spring MVC架構(gòu)Fig.3 Spring MVC architecture

2.2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)根據(jù)用戶的總體需求,對系統(tǒng)的總體功能分模塊進(jìn)行設(shè)計(jì)。依據(jù)模塊化和層次化的設(shè)計(jì)規(guī)范,對系統(tǒng)功能進(jìn)行模塊劃分,將總體功能模塊劃分為多個(gè)子模塊。根據(jù)需求分析,系統(tǒng)包括幾大功能模塊:登錄注冊模塊、識別模塊、信息報(bào)告模塊、信息庫功能模塊,具體如圖4所示。

圖4 系統(tǒng)總功能模塊設(shè)計(jì)Fig.4 Design diagram of the system’s general functional modules

2.3 系統(tǒng)各功能模塊設(shè)計(jì)

2.3.1識別模塊。由圖5可知,用戶在進(jìn)入識別模塊時(shí)當(dāng)前頁面會檢測是否有用戶信息登錄,沒有的話開始上傳圖片就會提示登錄,選定圖片成功后上傳會檢測是否授權(quán)位置信息,獲取位置信息后會上傳到服務(wù)器獲取后臺的識別結(jié)果。其中位置信息在每次進(jìn)入小程序均會清空,需要重新授權(quán)以保證位置信息的準(zhǔn)確性。

圖5 識別模塊流程Fig.5 Flow chart of recognition module

2.3.2信息報(bào)告模塊。由圖6可知,用戶進(jìn)入昆蟲信息上傳頁面上傳后,需要填寫完善相關(guān)信息,如昆蟲的圖片和相關(guān)地址信息,否則提交會提示將信息補(bǔ)充完整,上傳成功后會出現(xiàn)上傳成功的提示。

圖6 信息報(bào)告模塊流程圖Fig.6 Flow chart of information report module

2.3.3信息庫功能模塊。由圖7可知,信息庫功能模塊主要分為兩大功能,對后置昆蟲信息庫根據(jù)關(guān)鍵字進(jìn)行模糊查詢獲得昆蟲的名稱和常見宿主等關(guān)鍵信息,另外根據(jù)昆蟲的科對昆蟲進(jìn)行分類展示,點(diǎn)擊后獲得該昆蟲的其他詳細(xì)信息。

2.4 數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì)就是以數(shù)據(jù)庫模型的方式表現(xiàn)出系統(tǒng)整體的關(guān)系。該研究采用E-R 圖來表現(xiàn)數(shù)據(jù)庫間的邏輯關(guān)系。E-R 圖就是實(shí)體聯(lián)系圖,它提供了實(shí)體、實(shí)體屬性以及聯(lián)系的方法,是用來描述現(xiàn)實(shí)世界的概念模型。系統(tǒng)的E-R圖如圖8所示。

圖7 信息庫功能模塊流程圖Fig.7 Flow chart of database function module

2.5 識別算法隨著DL在其他領(lǐng)域的快速發(fā)展和大量成功應(yīng)用,特別是國家的重視和企業(yè)巨頭的加入,DL在現(xiàn)代農(nóng)業(yè)中獲得越來越廣泛的應(yīng)用[10]。現(xiàn)如今,卷積神經(jīng)網(wǎng)絡(luò)在圖像識別領(lǐng)域已經(jīng)得到了充分的應(yīng)用與研究,特別是在農(nóng)業(yè)信息化的應(yīng)用中對生物農(nóng)業(yè)動(dòng)植物的檢測識別[11]。

該研究用到訓(xùn)練后的GoogLeNet神經(jīng)網(wǎng)絡(luò),該網(wǎng)絡(luò)于2014年提出,近年來應(yīng)用在許多實(shí)際領(lǐng)域的分類任務(wù)中,并且都具有優(yōu)良的表現(xiàn)。GoogLeNet網(wǎng)絡(luò)共有22層,利用Inception結(jié)構(gòu)模型堆積作為GoogLeNet網(wǎng)絡(luò)的主體架構(gòu),在保持網(wǎng)絡(luò)的稀疏性的同時(shí)提高了識別性能[12-14]。

該研究采用的Inception模塊作為GoogLeNet網(wǎng)絡(luò)模型的實(shí)現(xiàn)如圖9所示。與傳統(tǒng)的多通道卷積不同的是,Inception模塊使用多個(gè)卷積(1×1,3×3,5×5)結(jié)合max-pooling層,然后將卷積和pooling結(jié)果關(guān)聯(lián)起來[15-16],這樣使得網(wǎng)絡(luò)的層數(shù)更深,網(wǎng)絡(luò)性能及精度提高的同時(shí)節(jié)省了計(jì)算資源。

3 系統(tǒng)實(shí)現(xiàn)

系統(tǒng)前端以微信小程序的開發(fā)工具為基礎(chǔ),后端項(xiàng)目通過eclipse進(jìn)行開發(fā),根據(jù)各功能模塊的設(shè)計(jì)思路在開發(fā)工具上進(jìn)行實(shí)現(xiàn),主要通過小程序的開發(fā)工具進(jìn)行系統(tǒng)的效果展示。

3.1 開發(fā)工具及技術(shù)準(zhǔn)備微信小程序前端基于微信開發(fā)者工具進(jìn)行開發(fā),后端基于經(jīng)典Java代碼編譯工具eclipse配置SSM框架,通過Java提供的JDBC服務(wù)對數(shù)據(jù)庫進(jìn)行配置連接,其次對tomcat服務(wù)器進(jìn)行配置。考慮到該項(xiàng)目的開發(fā)成本、數(shù)據(jù)庫之間的相關(guān)交互功能實(shí)現(xiàn)的完整性和接口的通用性,選擇已經(jīng)非常成熟的分布式數(shù)據(jù)庫MySQL數(shù)據(jù)庫管理系統(tǒng)[17]。通過數(shù)據(jù)庫可視化管理工具navicat對數(shù)據(jù)庫進(jìn)行簡單增刪查改等管理。識別算法以python語言架構(gòu)實(shí)現(xiàn),并對運(yùn)行基礎(chǔ)環(huán)境有較高要求,pycharm以其全面性和操作適變性能夠完全滿足該要求。

3.2 通信方法實(shí)現(xiàn)微信小程序與后臺的實(shí)現(xiàn)方式為:用戶在微信小程序前端對后臺發(fā)起Ajax請求,通過微信小程序自帶的request函數(shù)對后臺發(fā)起Https網(wǎng)絡(luò)請求,請求包括post和get共2種方式,傳入服務(wù)器數(shù)據(jù)會轉(zhuǎn)化為String格式,返回Json格式數(shù)據(jù)后通過前端頁面對返回?cái)?shù)據(jù)進(jìn)行調(diào)用展示。

Ajax是“異步Javascript和XML”的縮寫,是一種用于創(chuàng)建交互式的應(yīng)用程序的開發(fā)技術(shù),核心技術(shù)為XMLHttpRequest,主要處理對服務(wù)器或腳本的請求和來自服務(wù)器的返回?cái)?shù)據(jù)[18-19]。相比經(jīng)典的應(yīng)用程序模型響應(yīng)時(shí)間更短,避免了頻繁訪問服務(wù)器導(dǎo)致用戶等待時(shí)間過長,無需刷新頁面即可提供動(dòng)態(tài)異步的交互方式[20]。

JSON是一種基于JavaScript語言的網(wǎng)絡(luò)中用來交換的數(shù)據(jù)格式,在Ajax應(yīng)用中便于服務(wù)器傳送數(shù)據(jù)至服務(wù)端,此外客戶端可以更方便地對數(shù)據(jù)進(jìn)行使用,而不需要額外的解析工作[21]。相比于傳統(tǒng)的XML文檔、HTML片段,JSON數(shù)據(jù)格式調(diào)用更靈活高效,在Ajax應(yīng)用程序中應(yīng)用廣泛,但在非Ajax程序中傳輸相比于String字符串不夠安全穩(wěn)定[22]。

3.3 信息庫功能實(shí)現(xiàn)

3.3.1查詢功能實(shí)現(xiàn)。對用戶搜索框內(nèi)的值先進(jìn)行變量定義,之后將輸入字符對變量賦值,將該帶值變量在請求中傳入后臺,在控制層中分發(fā)啟動(dòng)Dao層,應(yīng)用Sql語言中的模糊搜索關(guān)鍵字對指定數(shù)據(jù)庫表進(jìn)行搜索,將得到的list數(shù)據(jù)傳入后端并利用fastjson包對數(shù)據(jù)進(jìn)行Json序列化,之后將結(jié)果傳至用戶端并進(jìn)行分行展示。

3.3.2分類查看功能實(shí)現(xiàn)。用戶打開分類界面后,微信小程序立即向后臺發(fā)送一個(gè)請求對指定數(shù)據(jù)庫表的指定字段進(jìn)行分類,并將分類結(jié)果傳回后臺處理后再發(fā)送至前端并展示。之后在上一請求里再對分類的第一類進(jìn)行請求,將上述類別下的所有具體信息傳回前端并展示在當(dāng)前頁面,之后用戶每點(diǎn)擊一大類按鈕即對后臺發(fā)送此類似請求。

3.4 上傳功能實(shí)現(xiàn)上傳信息包括文字信息以及多圖片信息,利用小程序前端的表單功能先信息進(jìn)行統(tǒng)一的打包上傳,此外2類信息分別儲存在不同的數(shù)據(jù)庫表中,文字信息表與圖片信息表建立一對多的關(guān)系。先將文字信息進(jìn)行上傳保存,同時(shí)將保存id傳回,與多圖片一起上傳至圖片表,微信小程序還無法實(shí)現(xiàn)多圖片上傳,因此對其建立1個(gè)for循環(huán),以支持多張圖片進(jìn)行依次上傳。

圖8 數(shù)據(jù)庫邏輯設(shè)計(jì)圖(E-R圖)Fig.8 Database logic design diagram(E-R diagram)

圖9 Inception v3模型Fig.9 Inception v3 model

3.5 識別功能實(shí)現(xiàn)

3.5.1識別路線設(shè)計(jì)。由圖10可知,小程序前端上傳待識別圖片包括圖片文件和位置以及用戶等文字信息,文字信息和圖片文件以及圖片識別結(jié)果都需要存至數(shù)據(jù)庫,因此需要在后端將2類文件進(jìn)行區(qū)分。首先在后端將圖片文件傳至識別算法讀取的文件夾路徑,算法運(yùn)行后傳出識別結(jié)果并將圖片轉(zhuǎn)移至存儲圖片的最終文件夾,在后端將該文件夾路徑名后加上圖片名保存為圖片的最終絕對路徑。最后再將以上的識別結(jié)果、圖片路徑及文字信息傳回前端展示給用戶,圖片以文件路徑的形式與相關(guān)文字信息保存在數(shù)據(jù)庫以便之后的調(diào)用與編輯。

3.5.2算法環(huán)境搭建。系統(tǒng)利用后端編程語言python來構(gòu)建GoogLeNet識別算法,通過谷歌公司提供的深度學(xué)習(xí)網(wǎng)絡(luò)框架tensorflow 1.4來作為網(wǎng)絡(luò)的運(yùn)行環(huán)境,工作平臺為pycharm,python 3.6環(huán)境和此版本tensorflow配套插件均在其上進(jìn)行安裝配置。

3.5.3待識別圖片上傳。待識別圖片從前端上傳到返回識別信息到前端經(jīng)歷如下過程:微信小程序前端通過內(nèi)置uploadFile函數(shù)發(fā)起一個(gè)HTTPS POST請求,將本地圖片資源上傳到服務(wù)器,客戶端的服務(wù)器后端對圖片資源進(jìn)行重命名,接收至臨時(shí)文件夾,之后圖片經(jīng)過識別算法識別處理后轉(zhuǎn)入儲存文件夾。

圖10 識別路線圖Fig.10 Identification map

3.5.4識別算法的調(diào)用。對python環(huán)境和tensorflow框架配置好,在識別算法的py文件經(jīng)過cmd運(yùn)行測試成功后,可以通過Java內(nèi)置的Runtime.getRuntime().exec()函數(shù)運(yùn)行外部的程序或命令。Runtime.getRuntime().exec()的使用基于電腦系統(tǒng)的命令,通過調(diào)用服務(wù)器命令腳本執(zhí)行命令。在Java程序即后端的業(yè)務(wù)層中通過該函數(shù),指定運(yùn)行環(huán)境對指定目錄下的識別算法進(jìn)行啟動(dòng),進(jìn)而在識別算法即python文件中對指定目錄下的圖片文件進(jìn)行加載識別,得到結(jié)果之后將臨時(shí)文件夾里的圖片資源轉(zhuǎn)移到存儲文件夾以便后續(xù)的圖片識別。

3.5.5Socket通信。由于服務(wù)器上的項(xiàng)目后端與識別算法采取不同語言的編碼方式,在不同的代碼運(yùn)行平臺上運(yùn)行,因此在代碼層面很難對二者進(jìn)行數(shù)據(jù)交互。對于在python文件處理圖片資源的識別結(jié)果,利用Runtime.getRuntime().exec()創(chuàng)建一個(gè)啟動(dòng)python文件的進(jìn)程,再利用getInputStream()函數(shù)得到這個(gè)進(jìn)程的結(jié)果,即圖片的識別結(jié)果。但該方法不能保證大量數(shù)據(jù)的輸出穩(wěn)定,所以應(yīng)當(dāng)架設(shè)一個(gè)穩(wěn)定的數(shù)據(jù)通道,可以在Java后端與python文件中起到穩(wěn)定的數(shù)據(jù)傳輸?shù)淖饔茫苡行Э刂仆ǖ赖拈_放關(guān)閉,因此采用Socket通信方法(圖11)。

圖11 Socket實(shí)現(xiàn)原理圖Fig.11 Socket implementation schematic diagram

Socket俗稱套接字,是在涉及網(wǎng)絡(luò)的Java開發(fā)中,使用TCP/IP或者UDP協(xié)議在服務(wù)器與客戶端之間進(jìn)行傳輸?shù)募夹g(shù),是網(wǎng)絡(luò)編程的基礎(chǔ)[23]。Socket類可以跨語言跨平臺,僅通過套接字和端口將網(wǎng)絡(luò)中的2臺主機(jī)進(jìn)行數(shù)據(jù)交互[24]。將Java端作為客戶端,python端作為服務(wù)端,首先客戶端將圖片資源發(fā)送至臨時(shí)文件夾,創(chuàng)建套接字并綁定到特定的IP/端口上,新建BufferedInputStream對象來接受Socket對象接受的數(shù)據(jù)。同時(shí)注意,為方便識別結(jié)果數(shù)據(jù)成功響應(yīng)至小程序端的Ajax請求接收,在python端將識別結(jié)果轉(zhuǎn)化成JSON相關(guān)格式向Java客戶端進(jìn)行輸出。

3.6 前端界面實(shí)現(xiàn)前端微信小程序采用規(guī)范的weui小程序官方框架,主要頁面分為4種編碼語言:wxml與wxss用作頁面的排版與渲染,js文件用作頁面事件的編寫,json文件進(jìn)行當(dāng)前頁面全局的聲明與補(bǔ)充。由于前端開發(fā)已經(jīng)非常成熟,對于開發(fā)簡單功能界面,開發(fā)者已經(jīng)無須對頁面組件細(xì)節(jié)進(jìn)行編輯,可以省下更多時(shí)間在界面設(shè)計(jì)上,市面上也已經(jīng)有了功能完備的小程序開發(fā)框架,如iView、tina等前端框架。考慮到小程序在不同設(shè)備上的適容性以及配套的開發(fā)文檔的學(xué)習(xí)難度,前端框架選用微信官方開發(fā)的weui前端框架。經(jīng)過多方對比圖標(biāo)質(zhì)量,應(yīng)用方式的簡易度以及相關(guān)版權(quán)的問題,該項(xiàng)目的圖標(biāo)選用阿里的iconfont圖標(biāo)庫和部分flaticon圖標(biāo)。

3.6.1實(shí)現(xiàn)登錄注冊。用戶首次登錄后在個(gè)人頁面點(diǎn)擊登錄注冊按鈕進(jìn)行登錄注冊,通過微信小程序自帶的請求身份的事件函數(shù)授予用戶微信的身份信息,在全局中聲明授權(quán)信息后之后可不用再繼續(xù)請求信息授權(quán),防止出現(xiàn)過多的無效請求浪費(fèi)操作(圖12)。

3.6.2實(shí)現(xiàn)昆蟲圖片識別。昆蟲圖片識別功能作為微信小程序的主要功能,考慮到用戶的使用習(xí)慣,應(yīng)放在系統(tǒng)醒目位置。將該功能按鈕放在進(jìn)入小程序的主頁頁面。上傳圖片應(yīng)保證頁面跳轉(zhuǎn)不過多,按鈕醒目且作用易于理解。此外為方便不同的應(yīng)用場景,圖片同時(shí)支持拍照上傳和手機(jī)相冊上傳。微信小程序自帶選擇二者來源圖片的函數(shù),但由于考慮到物體的照片效果,需要在相機(jī)中間加上取景框方便用戶對準(zhǔn)待識別的物體,于是用一個(gè)底部彈起的操作按鈕組件對2個(gè)來源的圖片進(jìn)行分別選擇(圖13)。

在個(gè)人中心頁面可查看上傳識別的圖片相冊,點(diǎn)擊圖片后便得到當(dāng)時(shí)反饋的識別結(jié)果,可在相冊頁面對圖片信息進(jìn)行編輯刪除操作。

3.6.3實(shí)現(xiàn)信息報(bào)告功能。信息報(bào)告功能頁面有2個(gè)進(jìn)入方式:一是直接從下方導(dǎo)航欄直接進(jìn)入;另外如果用戶對上傳圖片識別結(jié)果不滿意可在識別結(jié)果頁面點(diǎn)擊進(jìn)入信息報(bào)告頁。用戶報(bào)告昆蟲信息時(shí)也需要獲得身份授權(quán)和位置信息,并根據(jù)提示完善相關(guān)提交表。通過對昆蟲的信息報(bào)告完善后臺的昆蟲庫,提高算法識別的昆蟲種類和識別準(zhǔn)確度。此外在信息報(bào)告的主頁面還可查看信息上傳歷史(圖14)。

圖12 個(gè)人中心頁面Fig.12 Personal Center page

圖13 圖片上傳主頁面Fig.13 Photos uploaded to the main page

3.6.4實(shí)現(xiàn)信息庫相關(guān)功能。針對昆蟲數(shù)據(jù)庫設(shè)置了2個(gè)功能,包括昆蟲的庫內(nèi)模糊搜索和昆蟲按科名進(jìn)行分類展示,主要在后端mapper層里利用SQL語言的相關(guān)功能實(shí)現(xiàn)對數(shù)據(jù)庫的模糊搜索和對全庫物種進(jìn)行分類,再根據(jù)不同類別進(jìn)行查找并展示(圖15)。

3.7 識別結(jié)果實(shí)現(xiàn)返回識別結(jié)果如圖16所示。對單一圖片識別展示3種識別結(jié)果,分別以準(zhǔn)確率的高低由大到小以表格形式進(jìn)行展示,下方展示上傳的時(shí)間和位置信息。此外如果用戶對展示結(jié)果有疑問,可以對該結(jié)果信息進(jìn)行質(zhì)詢報(bào)告,頁面會跳轉(zhuǎn)至信息報(bào)告頁面,將相關(guān)數(shù)據(jù)傳至后臺服務(wù)器。

4 測試

系統(tǒng)測試主要為上機(jī)測試,包括系統(tǒng)的功能測試和性能測試,對系統(tǒng)的各模塊進(jìn)行測試,確保系統(tǒng)的可靠性和穩(wěn)定性。

4.1 測試環(huán)境及測試準(zhǔn)備該系統(tǒng)主要由微信小程序客戶端和后端組成,為方便進(jìn)行調(diào)試觀測準(zhǔn)確測試數(shù)據(jù),測試前端為微信開發(fā)者工具,版本為1.05,模擬機(jī)型號為iPhone 5,IOS版本號為8。后端運(yùn)行工具為eclipse 4.6,服務(wù)器為tomcat服務(wù)器,版本號為9.0.38,系統(tǒng)為Windows 10.0.17763,Java版本為Java 1.8,MySQL版本為MySQL 8.0.17。

4.2 系統(tǒng)功能測試對微信小程序進(jìn)行功能測試,測試用例包含主要功能模塊,包括識別功能模塊、注冊登錄模塊、信息報(bào)告模塊、數(shù)據(jù)庫功能模塊,測試情況如表1所示。

4.3 系統(tǒng)性能測試性能測試主要利用微信開發(fā)者工具測試觀察網(wǎng)絡(luò)請求并返回?cái)?shù)據(jù)的時(shí)間,測試情況如表2所示。

圖14 信息報(bào)告頁面Fig.14 Information report page

圖15 數(shù)據(jù)庫功能頁面Fig.15 Database function page

圖16 識別結(jié)果頁面Fig.16 Recognition result page

5 結(jié)論

該研究的項(xiàng)目利用當(dāng)前移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展趨勢,考慮微信小程序相比于其他移動(dòng)應(yīng)用的優(yōu)點(diǎn),基于入侵昆蟲學(xué)以及相關(guān)生態(tài)知識,根據(jù)應(yīng)用成熟的開發(fā)框架與技術(shù)路線,開發(fā)設(shè)計(jì)了一款針對入侵昆蟲的識別微信小程序。經(jīng)測試,該系統(tǒng)能滿足系統(tǒng)設(shè)計(jì)需求,擁有完善的功能與性能,彌補(bǔ)了市面上入侵昆蟲識別軟件缺陷,推廣前景巨大。與其他動(dòng)植物識別軟件相比,準(zhǔn)確率表現(xiàn)優(yōu)秀,能夠較好滿足用戶的相關(guān)需求,極大方便針對入侵昆蟲的識別與防治,并且對田間害蟲的防治有相當(dāng)幫助,在應(yīng)用推廣、知識科普以及科研數(shù)據(jù)收集方面具有巨大潛力。

接下來會對該系統(tǒng)后端設(shè)計(jì)搭建,對前端上傳信息進(jìn)行可視化展示,對關(guān)鍵數(shù)據(jù)進(jìn)行分析,提供調(diào)整數(shù)據(jù)庫的可視化頁面,并考慮綜合性強(qiáng)的應(yīng)用場景應(yīng)用監(jiān)控檢測系統(tǒng),實(shí)時(shí)識別傳回?cái)?shù)據(jù)。另外基于用戶上傳的有效昆蟲信息,考慮繼續(xù)應(yīng)用tensorflow平臺對識別算法繼續(xù)進(jìn)行訓(xùn)練,以提高識別準(zhǔn)確率和識別效率,完善用戶的使用體驗(yàn)。

表1 系統(tǒng)功能測試結(jié)果Table 1 System function test results

表2 系統(tǒng)性能測試結(jié)果Table 2 System performance test results

猜你喜歡
頁面程序數(shù)據(jù)庫
大狗熊在睡覺
刷新生活的頁面
試論我國未決羈押程序的立法完善
“程序猿”的生活什么樣
英國與歐盟正式啟動(dòng)“離婚”程序程序
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
主站蜘蛛池模板: 久久综合九色综合97网| 最新无码专区超级碰碰碰| 亚洲黄色成人| 久久视精品| 免费看av在线网站网址| 97在线国产视频| 国产乱子伦无码精品小说| 国产欧美日韩综合在线第一| 久久网欧美| 免费无遮挡AV| 国产极品美女在线| 久久96热在精品国产高清| 99热国产这里只有精品无卡顿"| 色婷婷亚洲综合五月| 国产对白刺激真实精品91| 亚洲视频免| 亚洲毛片在线看| 99资源在线| 日本爱爱精品一区二区| 视频一区视频二区中文精品| 谁有在线观看日韩亚洲最新视频| 国产欧美一区二区三区视频在线观看| 精品国产美女福到在线不卡f| 国产日本一线在线观看免费| 国产99在线观看| 麻豆国产在线观看一区二区| 一本大道无码高清| 国产a在视频线精品视频下载| 色亚洲成人| 婷婷综合色| 国产成人精品免费av| 亚欧成人无码AV在线播放| 国产在线观看91精品亚瑟| 欧美激情,国产精品| 一区二区三区四区在线| 国产特级毛片aaaaaaa高清| 99热这里只有精品在线观看| 亚洲 欧美 日韩综合一区| 国产乱视频网站| 无码啪啪精品天堂浪潮av| 真实国产乱子伦视频| 久久黄色小视频| 日本草草视频在线观看| 精品国产电影久久九九| 午夜福利视频一区| 中文字幕人成人乱码亚洲电影| 欧美成一级| 亚洲91精品视频| 亚洲女同一区二区| 亚洲视频在线观看免费视频| 日韩成人在线网站| 国产精品午夜电影| 日韩在线1| 麻豆精品在线播放| 99在线免费播放| 日本免费一区视频| 一级毛片视频免费| 自拍偷拍欧美日韩| 国产亚洲成AⅤ人片在线观看| 一边摸一边做爽的视频17国产 | 91精品啪在线观看国产91| 国产精品女同一区三区五区| 狠狠操夜夜爽| 欧美亚洲欧美| 99视频精品全国免费品| av无码久久精品| 成人日韩视频| 国产第一页免费浮力影院| 国产在线一二三区| 91九色最新地址| 国产va视频| 免费国产高清视频| 亚洲va精品中文字幕| 午夜视频www| 欧美色视频日本| 国产小视频免费| 日韩免费视频播播| 国产99欧美精品久久精品久久| 免费看久久精品99| 亚洲欧美日韩高清综合678| 9啪在线视频| 99视频全部免费|