国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于改進型YOLOv4的病死金鯧魚識別方法

2022-01-06 02:19:08俞國燕羅櫻桐梁貽察侯明鑫
漁業(yè)現(xiàn)代化 2021年6期
關鍵詞:鯧魚函數特征

俞國燕,羅櫻桐,王 林,梁貽察,侯明鑫

(1 廣東海洋大學機械與動力工程學院,廣東 湛江 524088;2 廣東省海洋裝備及制造工程技術研究中心,廣東 湛江 524088 3 南方海洋科學與工程廣東省實驗室,廣東 湛江 524013)

淺灘養(yǎng)殖是漁業(yè)養(yǎng)殖中重要分支。受溫度、水質和養(yǎng)殖密度等因素影響,金鯧魚淺灘養(yǎng)殖存在一定程度的病死率。為更好地分析病死金鯧魚因素,實現(xiàn)高質量養(yǎng)殖已成為新的研究熱點。隨著視覺檢測技術逐步成熟,簡便的相機模塊能夠實現(xiàn)病死魚的實時監(jiān)測,從而大大降低勞動力成本。

目前國內外關于病死金鯧魚研究較少,但是機器視覺在水產養(yǎng)殖領域已經有了一定的進展。在水產養(yǎng)殖中,設計多模塊網絡能夠有效實現(xiàn)養(yǎng)殖魚的自動計數,其中特征提取模塊負責增強特征的描述,注意力模塊識別圖像中關鍵信息以及密度圖模塊將統(tǒng)計魚群的分布并在以上兩個模塊下實現(xiàn)自動計數。該方法在滿足精度要求同時實現(xiàn)了魯棒性目標檢測[1]。

近幾年,深度學習逐漸興起,因其精確檢測效果與高魯棒性被廣泛利用在視覺識別場景中。俞偉沖等[2]為實現(xiàn)準確識別水下海膽、海參和扇貝3種珍品,使用MobileNet-SSD(MobileNet-Single Shot MultiBox Detector)小模型網絡對目標進行快速檢測。但是在密集目標識別中存在明顯的漏檢現(xiàn)象。王珂力等[3]提出改進的SSD(Single Shot MultiBox Detector)網絡,在一定程度上提高了小目標水產動物的識別準確度,但是該網絡在檢測重疊目標中準確度較低。

在近幾年目標檢測算法中,基于改進型YOLO算法[4-6]被廣泛應用行人檢測[7]、車輛檢測[8-9]以及水果檢測[10-12]等方面上。趙德安等[13]在水下河蟹識別中,分析水下光線衰減大、視野模糊等問題,提出了數據增強Retinex算法,并結合YOLOv3模型對河蟹識別與定位;類似的還有在水產養(yǎng)殖生物檢測中YOLO融合算法的研究[14-19],這些算法都在某特定場景中提升了目標檢測性能與魯棒性。但是受日照光線的影響,離線校準的視覺傳感器難以穩(wěn)定獲取顏色紋理信息;同時在風浪沖擊所產生的水霧也會導致圖像退化,低對比度和細節(jié)丟失的淺灘復雜環(huán)境下[20],上述方法在淺灘養(yǎng)殖場景檢測死魚中均不適用。

在復雜淺灘養(yǎng)殖環(huán)境下,為提高病死金鯧魚定位檢測精度與特征細化能力,本研究提出一種基于YOLOv4[21]的改進算法。其中YOLOv4-v2為基于損失函數與多尺度特征層模塊的創(chuàng)新,通過與YOLOv4算法對比評估該算法的可靠性以及在復雜淺灘養(yǎng)殖環(huán)境下的魯棒性能;YOLOv4-v1模塊是基于YOLOv4-v2算法基礎上加入Super模塊,對比YOLOv4-v2模型凸顯Super結構在本文場景下的特征細化與特征增強優(yōu)越性。在評估方案上選擇平均精度、精確率、召回率等指標對3種模型在第3節(jié)試驗中對比分析與探討。

1 圖像數據與開發(fā)環(huán)境

1.1 試驗環(huán)境

YOLOv4-v1目標識別算法在配置為64核數Intel W-2145 CPU 3.7GHZ與顯卡型號為GeForce RTX 2070的操作系統(tǒng)Windows10上,通過Anaconda環(huán)境管理器安裝相關工具包,在Pycharm編譯器實現(xiàn)Python代碼編輯的同時,在Pytorch架構上實現(xiàn)算法的訓練與測試。

1.2 圖像數據采集

識別對象主要為病死金鯧魚(學名卵形鯧鯵),數據集采集地點為廣東省湛江市東海島,圖像采集使用尼康(Nikon)D7500單反相機多角度且遠近尺度拍攝所得。在淺灘養(yǎng)殖中,由于潮起潮落使得一部分病死魚分布在沙灘上而另一部分漂浮在水面,試驗中通過上述光感相機搜集到的1 400張病死魚圖像作為本研究的數據集。為了增強數據集的多樣性以及模型在養(yǎng)殖場景中分類性能,設置檢測類別分別為病死態(tài)與存活態(tài)金鯧魚兩類。本研究主要分析死魚檢測結果。并統(tǒng)一為三通道416×416規(guī)格圖像。同時,在1 400幅數據集樣本中隨機篩選1 200(90%)幅圖像作為訓練集數據,其余200(10%)幅作為訓練驗證集(trianval)。利用for與if函數,對重復出現(xiàn)在訓練集與trianval中的圖像標記寫入到trianval與測試集中,否則寫入到trianval與驗證集。

1.3 標注工具與方法

本研究標簽制作采用LabelImg軟件[22],通過人工交互方式對圖像中目標進行標記,而標注的目的是生成網絡學習的目標樣本(圖1)。標注的方法是在labelImg軟件中,設定好數據集樣本與目標樣本文件目錄,在讀取每幅圖像中對病死態(tài)與存活態(tài)金鯧魚以矩形框的形式實現(xiàn)目標坐標的定位與邊界框的繪制,并給定不同對象唯一dead_fish或fish標簽。標注后目標信息保存為與圖像同名的XML文件,其內容包含當前圖像各目標的標簽信息以及繪制框左上角與右下角坐標信息等。

圖1 淺灘環(huán)境下病死金鯧魚圖像示例Fig.1 Example of an image of a dead golden pomfret in a shallow sea environment

2 方法

2.1 數據處理

為了保證網絡在訓練樣本中能夠收斂到全局最優(yōu)點或者在該平衡點附近來回震蕩。圖像在輸入網絡前通過以下3種算法對數據進行預處理:

(1)Mosaic數據增強函數。在淺灘環(huán)境會受到諸如海浪遮擋等對傳回圖像的噪聲干擾,在圖像中加入10%模糊度的馬賽克信息,用以降低網絡對離線環(huán)境特征信息的依賴,從而提高模型在實時識別中的準確度與泛化能力。

(2)余弦退火算法。在訓練初期快速跳出局部最優(yōu)點以逼近全局最優(yōu),而后逐漸降低學習率。該算法既能防止模型過擬合,同時加快了網絡的收斂效率。

(3)標簽平滑算法。該算法將網絡評估的置信度結果以一定的閾值偏離0與1。在分類任務上,Loss在迭代中不斷變小,分類標簽與真實標簽在One-Hot維度的絕對值誤差將不斷趨近于0,在極端情況下會造成模型的過擬合,因此引入適當的平滑參數值可提升模型的魯棒性與泛化能力。根據相關文獻的查找[23-26]與淺灘場景下的多次試驗,本研究平滑參數取0.005時模型具有最優(yōu)預測性能。

2.2 基于YOLOv4改進算法分析

2.2.1 Tanh-v1激活函數

在Super結構中,激活函數設計對網絡的性能至關重要。Tanh函數雖然具有良好的收斂性能,但是隨著網絡不斷加深,模型可能會出現(xiàn)梯度消失的情況;在不影響收斂速率下,本研究采用基于Tanh改進的Tanh-v1激活函數[27],為防止梯度消失,對基于分層殘差修正的權重矩陣正則化,在低層特征與高層特征通過非線性形式融合,該操作能夠更好地表達目標各邊界,輪廓特征。

(1)

2.2.2 損失函數的定義

本研究YOLOv4-v1網絡采用二元交叉熵(Binary Cross Entropy,BCE)損失函數[28]:

(2)

本研究中的總損失函數Losstotal分割為以下3種損失函數進行說明[29-30]。

目標框定位評價采用的損失函數:

(3)

(4)

目標框置信度評價采用損失函數:

(5)

dead_fish與fish的標簽分類評價采用損失函數:

(6)

式中:m′ —最大置信度先驗框;lk(m′)—通過Sigmoid選取第k個最大置信度先驗框;K—選取的先驗框個數。l′k(m′)函數表示對第k個最大置信度先驗框進行標簽平滑化。具體Sigmoid函數:

(7)

其中標簽平滑函數:

(8)

式中:n—分類數2(因分dead_fish和fish兩類)。ls—平滑系數,m′k—第k個目標的最大置信度先驗框。

最終由式(3)、式(4)、式(5)得YOLOv4-v1總的損失函數:

Ltotal=i·Losscls+j·Lossconf+k·Lossloc

(9)

式中:i、j、k分別表示對應3個置信度評價的特征系數,這里3個常數均取1。

2.2.3 YOLOv4-v1網絡設計結構圖

YOLOv4-v1網絡總結構模型見圖2,其中Conv為卷積模塊,ResBlockBoby0~4為殘差卷積塊。設計主要以3×3的卷積核進行提取,通過該小規(guī)格的卷積核一方面可以大大減少訓練時的網絡參數量,降低模型的復雜度;另一方面能夠從原始圖像中抓取目標特征信息。

圖2 YOLOv4-v1網絡結構圖Fig.2 YOLOv4-v1 Network Structure Diagram

在CSPDarkNet53網絡中并行輸出4層特征層的同時,對104×104×128特征層輸入到Super編碼結構中,采用3×3的下采樣,防止病死魚邊緣信息的丟失,生成的特征圖通過Tanh-v1函數歸一化縮放為6×6×1024。該步驟分離出了4種程度不同的特征集成圖,一方面為解碼網絡中特征信息拼接用以提取出更多病死魚輪廓與紋理信息,從而解決日照變化中光源對目標檢測干擾做準備;另一方面在主方向特征少的ResBlockBody1層輸出中,引入了Super網絡結構(圖3),其中Conv0~3為3×3卷積模塊作特征提取,Conv4為全連接卷積層,UpSample 0~3為上采樣層,Connection 0~3作卷積與上采樣層的特征整合。通過串聯(lián)多組卷積與池化處理,對該特征圖在擴張維度下深度提取信息,用以解決同一類別重疊對象的分離問題。在Super解碼中使用擴邊處理(padding=1,即圖像四周填充一圈0),利用特征拼接算法在標準歸一化和RGB通道分割下實現(xiàn)灰度化處理,從解碼結構上采樣層與編碼結構卷積層特征信息的拼接,并通過整合后的特征圖進行圖像重建。

圖3 Super網絡結構圖Fig.3 Super Network Structure Diagram

因此重建后特征圖會在很大程度上過濾因水霧造成的模糊與函數生成的模糊干擾的影響,以及解決圖像退化后對比度低,病死魚部分紋理不清晰與關鍵細節(jié)丟失等問題,使得網絡在自適應學習中得到更好的檢測效果。最后經由SPP(Spatial Pyramid Pooling)網絡卷積池化處理,輸出13×13×21,26×26×21,52×52×21,104×104×21四種不同規(guī)格特征圖,每個特征圖前兩個數值代表特征層的高與寬像素大小,第3個數值對應每一個特征小網格存在的3個可選框,每個可選框又包含7個參數類型,分別是可選框的高與寬,左上角位置坐標,是否存在檢測目標以及該目標的種類總共21個參數信息。

2.2.4 YOLOv4-v1網絡流程圖

為了更清晰表達本文網絡模型在創(chuàng)新Super結構上的特征處理過程,具體的流程圖如圖4所示。其中當圖像經過圖像增強輸入到CSPDarkNet53結構塊中,特征的提取以遞歸的形式,在Resblockbody1到Resblockbody4的過程通過殘差內嵌的形式,將特征信息依次壓縮與細化,即將目標的主成分信息盡可能地保留。在PaNet模塊中,一方面,輸入104×104×128特征塊以不同數目的卷積與上采樣多模態(tài)處理,通過規(guī)范化通道數后依次輸出四層多尺度特征圖。另一方面,輸入104×104×21特征塊經由Super中編碼解碼處理,在第一部分對輸入權重矩陣與3×3過濾器卷積運算,輸出的64通道特征參數信息以Tanh-v1的形式進行激活,并在對應通道上實現(xiàn)2×2的最大池化,依次類推,最后在編碼器中得到的13×13×1024的特征模塊。在解碼器中利用下采樣與拼接算法,將將對應尺度的特征圖進行拼接,最終輸出為104×104×21特征信息。

圖4 圖像處理過程和Super網絡流程圖Fig 4 Image processing process and Super network flow chart

2.2.5 YOLOv4-v2網絡模型

YOLOv4-v2模型區(qū)別于YOLOv4模型,使用Tanh-v1代替Relu激活,并且新增Resblockbody1特征層信息并行到PaNet模塊中,該層中包含的邊界信息因為池化程度最小,因此在特征整合后模型對于目標的識別有更多的邊界特征信息可提供參照。此外,該模型與YOLOv4-v1的唯一區(qū)別在于沒有引入Super結構模塊。

3 試驗與分析

3.1 試驗方案設計

3.2 評價函數

3種算法的實現(xiàn)均基于死魚數據集,在YOLOv4官網預訓練權重參數模型上訓練10 000次均耗時3 h,從圖5可知在采用余弦退火學習率下,訓練損失值在8 500次左右已基本穩(wěn)定。每10次訓練輸出一次的驗證損失在830次左右已基本穩(wěn)定。為保證模型在最優(yōu)值附近震蕩,設置每執(zhí)行完236次(1個Epoch)則學習率變?yōu)樵瓉淼?2%,從而使訓練能夠進一步收斂。

圖5 YOLOv4-v1訓練與驗證損失Fig.5 Training and validation loss of YOLOv4-v1

(10)

(11)

(12)

(13)

(14)

式中:tp(True Precsion)—正確識別死魚的目標數;fp(False Precsion)—誤測死魚數;fn(False Negative)—正確識別活魚數;C為標記類別;m—某類別檢測目標數量。p(Precsion)—某類別精確率;aj(Averge Precsion)—第j類目標的檢測平均精確率。l—檢測到的目標個數;pi—第i個目標檢測精確率;ri—第i個目標檢測召回率。

在死魚驗證集中,3種模型對死魚檢測結果見表1。由表1中tp和fp值比較可得本研究中YOLOv4-v1算法在同等數量目標框中所能識別正確的目標最多以及誤判數目最少,在淺灘復雜環(huán)境中對死魚能夠達到有效識別要求。

表1 死魚檢測正確數與誤檢數Tab.1 Dead fish detection correct number and false detection number

3.3 試驗圖像對比分析

為了驗證Super結構和ResBlockBody1網絡塊的復用對提高死魚識別檢測精度的有效性,試驗分別采用YOLOv4模型,引用ResBlockBody1網絡塊的YOLOv4-v2模型以及同時引用Super和ResBlockBody1網絡結構的YOLOv4-v1模型進行對比試驗分析,對死魚類別進行迭代分析。在復雜淺灘環(huán)境中金鯧魚檢測可視化結果如圖6所示,其中紅色方框為病死態(tài)金鯧魚類別的檢測精度結果,而藍色方框為存活態(tài)金鯧魚類別的檢測精度結果。

圖6 金鯧魚檢測可視化結果Fig.6 Visualized results of golden pomfret detection

3.4 模型檢測結果對比

根據訓練驗證集中最優(yōu)模型,在YOLOv4,YOLOv4-v1,YOLOv4-v2模型中分別選取訓練損失和驗證損失分別為3.34、3.65;1.95、3.40;1.92、3.65作為檢測模型權重文件。在未參與訓練的驗證集中選取的117幅416×416圖像的模型檢測對比結果(表2)。在本研究中選擇F1值,召回率以及漏檢率等評價指標衡量模型的識別性能。YOLOv4-v1模型在mP值上相較于YOLOv4模型提升了3.36%,在召回率上提升了2.54%,F(xiàn)1值提升了0.56個百分點,同時檢測速度也基本與之持平,通過該對比試驗驗證表明,在復雜的淺灘環(huán)境中,YOLOV4-v1網絡能夠更好地提取細化特征,增強模型的魯棒性,在實際檢測病死態(tài)金鯧魚時能夠達到實時與精準檢測的效果;相比于YOLOv4-v2模型,Super模塊的引入大大降低了漏檢率,mP值提升了約1.00%,F(xiàn)1值上提升了0.46%的分數;同時在檢驗精度以及抗干擾能力上都有相應的提升;從另一角度分析,各指標的提升也證明了該模塊在檢測目標與提取目標的邊緣特征上更具敏感性。通過YOLOv4-v2與YOLOv4的對比試驗表明,改進的損失函數與多尺度特征圖在一定程度上提升了檢測精度,但是卻犧牲了檢測目標的穩(wěn)定性,而Super模塊能夠很好地解決這個問題。綜上所述,YOLOv4-v1模型在淺灘試驗場景中具有實用性。

表2 各網絡的損失與平均精度值Tab.2 The loss of each network and

3.5 評價指標結果對比

在病死魚類別下,分別在YOLOv4,YOLOv4-v1,YOLOv4-v2模型下訓練出來的精確率-召回率(P-R)曲線(圖7)。從圖7a,圖7b,圖7c對比可知YOLOv4-v1訓練可得模型P-R曲線圖最佳,即其所檢測的識別框與標簽繪制框重疊度最高。

圖7 各模型P-R曲線圖Fig.7 P-R Curve Diagram of Each Model

3.6 討論分析

對比口罩佩戴的檢測[35],本研究檢測的難度在于風浪與雨霧造成的圖像退化與低對比度,因此在邊界與輪廓上定義相對模糊;對比小龍蝦的檢測[36],本研究檢測難度在于金鯧魚的顏色與輪廓與背景相融,因此增加了識別的準確性;同時,對比農業(yè)上的視覺檢測[37-39],在淺灘環(huán)境下需要的實時性更高,金鯧魚的位置會隨浪潮的流動而發(fā)生變化,同時還會產生噪聲影響。針對上述種種難題,YOLOv4-v1算法能夠通過Super結構與多尺度方法優(yōu)化圖像特征從而獲得高精度檢測與高魯棒性。最終取得98.31%的平均檢測精度。對比更前沿的YOLOv5算法[40-41],本研究提出的YOLOv4-v1模型在檢測速度與漏檢率上有待優(yōu)化。

4 結論

猜你喜歡
鯧魚函數特征
二次函數
第3講 “函數”復習精講
二次函數
函數備考精講
4個月整體規(guī)格超8兩/尾!“魚瘟”影響下,這一金鯧魚養(yǎng)殖戶為何能逆襲?
當代水產(2020年10期)2020-03-17 07:02:42
如何表達“特征”
不忠誠的四個特征
當代陜西(2019年10期)2019-06-03 10:12:04
比竇娥還冤的鯧魚
杭州(2018年11期)2018-04-13 01:30:51
抓住特征巧觀察
上湯斗鯧
餐飲世界(2015年1期)2015-12-22 08:41:00
教育| 永胜县| 呈贡县| 富蕴县| 宾阳县| 韶关市| 黄大仙区| 桂阳县| 宝鸡市| 瑞安市| 信阳市| 仙桃市| 措勤县| 沙雅县| 广安市| 清丰县| 莆田市| 平泉县| 沧源| 新乡市| 灵石县| 巫山县| 昂仁县| 乐安县| 安西县| 临高县| 车险| 康定县| 菏泽市| 保亭| 安达市| 陆丰市| 岚皋县| 开化县| 德州市| 汝城县| 莱西市| 会东县| 柘荣县| 万全县| 长寿区|