论文阅读:超高分辨率图像中快速、准确的条码检测
摘要
由于目標對象的尺度不同,超高分辨率 (UHR) 圖像中的對象檢測長期以來一直是計算機視覺中的一個具有挑戰性的問題。在條碼檢測方面,將 UHR 輸入圖像調整為更小的尺寸通常會導致相關信息的丟失,而直接處理它們的效率很高且計算成本很高。在本文中,我們建議使用語義分割來快速準確地檢測 UHR 圖像中各種尺度的條形碼。我們的管道涉及大小大于 10k×10k 的圖像上的修改后的區域提議網絡 (RPN) 和新提出的 Y-Net 分割網絡,然后是用于在每個分割的條形碼掩碼周圍擬合邊界框的后處理工作流程。端到端系統的延遲為 16 毫秒,比 YOLOv4 快 2.5 倍,比 Mask R-CNN 快 5.9 倍。在準確度方面,我們的方法在合成數據集上分別以 5.5% 和 47.1% 的 mAP 優于 YOLOv4 和 Mask R-CNN。 我們在 http://www.github.com/viplabB/SBD/ 提供了生成的合成條形碼數據集及其代碼。
關鍵詞: 使用深度神經網絡檢測條碼、條碼分割、超高分辨率圖像。
作者的網址為:http://www-video.eecs.berkeley.edu/~avz/
論文的地址為:https://www.researchgate.net/publication/349336332_Fast_Accurate_Barcode_Detection_in_Ultra_High-Resolution_Images
1 引言
條形碼是數字標志,通常由相鄰和交替的黑白小矩形組成,已成為人類社會的固有部分。 例如,在管理中,它們用于編碼、保存和檢索各種用戶的信息。 在雜貨店,它們被用來跟蹤銷售和庫存。 在電子商務中更有趣的是,它們用于跟蹤和加快倉庫和履行中心的處理時間。
在經典信號處理中,用于檢測的濾波器是特定于圖像的,因為輸入圖像不一定都是使用相同的照明、亮度、角度或相機獲取的。 因此,需要自適應圖像處理算法,這會影響檢測精度 [1]。 此外,由于經典信號處理方法通常在中央處理單元上運行,因此與在圖形處理單元 (GPU) 上輕松優化的深度學習實現相比,它們往往要慢得多。
多年來,已經提出了許多使用經典信號處理檢測條形碼的方法 [1, 2, 3, 4, 5],但幾乎所有方法都需要很長時間來處理超高分辨率 (UHR) 圖像 . 更具體地說,[5] 使用平行線段檢測器,該檢測器改進了他們之前的工作 [6],在霍夫空間中尋找具有最大穩定極值區域的假想垂直線來檢測條形碼。 卡托納等人 [3] 使用形態學操作進行條碼檢測,但由于不同的條碼類型具有不同的檢測性能,因此該方法不能很好地概括。 類似地,[7] 提出使用 x 和 y 導數差異,但不同的輸入圖像會產生不同的輸出,并且在 UHR 圖像上使用這種操作通常會變得非常低效。
使用神經網絡,雖然條形碼檢測任務有了很大改進,但很少有人解決 UHR 圖像中快速準確的檢測問題。贊貝萊蒂等 [8] 為使用神經網絡通過研究霍夫空間來檢測條形碼鋪平了道路。隨后是 [9],它采用了 You Only Looked Once (YOLO) 檢測器來查找低分辨率 (LR) 圖像中的條形碼,但眾所周知,YOLO 算法在處理長形物體(例如代碼 39 條形碼)時表現不佳。 Mask R-CNN [10] 等實例分割方法在 1024 × 1024 像素大小的圖像上表現更好,但在較小尺寸的圖像上,輸出的興趣區域 (RoI) 與長的一維條碼結構不能很好地對齊。這是因為無論對象大小如何,它通常都會預測 28×28 像素上的掩碼,從而在某些條碼預測上產生“擺動”偽影,從而失去空間分辨率。以同樣的方式,專用對象檢測管道,例如 YOLOv4 [11],雖然它們在較低的聯合 (IoU) 閾值上表現良好,但在較高的 IoU 閾值下會受到準確性的影響。在使用 LR 圖像分割作為檢測手段的那些中,[12] 在更高的 IoU 閾值下也往往表現不佳。
在本文中,我們提出了一種使用深度神經網絡檢測條形碼的管道,如圖 1 所示,它由分別訓練的兩個階段組成。與經典的信號處理方法相比,神經網絡不僅提供了更快的推理時間,而且產生了更高的準確度,因為它們學習了有意義的過濾器以進行最佳特征提取。如圖 1 所示,在第一階段,我們擴展了 Faster R-CNN [13] 中引入的區域提議網絡 (RPN),以提取可能存在條形碼的潛在位置的高清區域。這個階段允許我們顯著減少在第二階段本來需要的推理計算時間。在第二階段,我們引入 Y-Net,這是一種語義分割網絡,可檢測給定輸出 RoI 圖像 (400 × 400) 中的所有條碼實例。然后我們對預測的掩碼應用形態學操作來分離和提取相應的邊界框,如圖 2 所示。
圖 1. 提議的方法,修改后的 RPN 后面是 Y-Net 和邊界框提取器
圖 2. 我們管道的示例輸出; 黃色 - 分段條碼像素; 紫色 - 分割的背景像素; 框 - 提取的邊界框; (a) 合成條碼圖像; (b) 真實的條碼圖像;? (a) 的預測結果; (d) (b) 的預測結果。
現有條碼檢測工作的局限性之一是訓練示例數量不足。 ArTe-Lab 1D Medium Barcode Dataset [8] 和 WWU Muenster Barcode Database [14] 是現有可用數據集的兩個示例。 它們分別包含 365 和 595 張圖像,地面實況掩碼的分辨率為 640 × 480。ArTe-Lab 數據集中的大多數樣本每個樣本圖像只有一個 EAN13 條形碼,而在 Muenster 數據庫中很少有超過 給定圖像上的一個條形碼實例。 為了解決此數據集可用性問題,我們發布了 100,000 個 UHR 和 100,000 個 LR 合成條形碼數據集以及它們相應的邊界框地面實況和地面實況掩碼,以促進進一步研究。 本文的大綱如下:在第 2 節中,我們描述了我們的方法的細節; 在第 3 節中,我們總結了我們的實驗結果,在第 4 節中,我們總結并擴展了我們未來的工作。
2 建議的方法
如圖 1 所示,我們提出的方法由三個階段組成:修改后的區域建議網絡階段、我們的 Y-Net 分割網絡階段和邊界框提取階段。
我們的 Y-Net 架構類似于英文字母“Y”,與 [15] 不同,[15] 使用預訓練的編碼器網絡,該網絡使用未經訓練的鏡像網絡和解碼器網絡進行增強。
2.1 修改后的區域建議網絡
區域建議在計算機視覺中具有影響力,在 UHR 圖像中的對象檢測方面更是如此。 在 UHR 圖像中,條形碼聚集在圖像的一個小區域中是很常見的。 為了過濾掉大部分非條形碼背景,我們修改了 Faster R-CNN [13] 中引入的 RPN,為我們的下一階段提出條形碼區域。 首先將 UHR 輸入圖像轉換為 256×256 大小的 LR 輸入圖像,訓練 RPN 以識別 LR 圖像中的斑點。 一旦在識別出的斑點周圍放置了一個邊界框,所產生的提議邊界框就會通過透視變換重新映射到輸入的 UHR 圖像,并裁剪出結果區域。 選擇 RPN 的 LR 輸入大小為 256 × 256,因為較低的分辨率會導致相關信息的丟失。 非最大抑制 (NMS) 用于預測以選擇最可能的區域。
2.2 Y-Net 分割網絡
如圖 3 所示,Y-Net 由分布在 2 個分支中的 3 個主要模塊組成:一個以藍色顯示的正則卷積模塊構成左分支,一個以棕色顯示的金字塔池化模塊,以及一個擴張的橙色顯示的卷積模塊經過串聯和卷積后構成了右分支。
圖 3. Y-Net 架構
常規卷積模塊接收 RPN 的 400 × 400 輸出圖像,并由卷積層和池化層組成。 它從 64 通道 3 × 3 內核開始,每層的數量翻倍。 我們在卷積和最大池化之間交替,直到我們達到 25 × 25 像素的特征圖大小。 該模塊允許模型學習輸入圖像中任何位置的一般像素信息。
膨脹卷積模塊利用條形碼具有交替的黑白矩形的事實來學習其結構中的稀疏特征。 這個模塊的動機來自這樣一個事實,即擴張卷積算子在雙正交小波分解的“算法”中發揮著重要作用 [16]。 因此,這種過濾器可以更準確地學習條形碼中交替圖案的不連續性和銳利邊緣。 此外,它們利用多分辨率和多尺度分解,因為它們允許內核以從 1 到 16 的膨脹率擴大其感受野。這里也使用了 400 × 400 輸入圖像,我們保持 32 – 通道 3 × 3 內核遍及整個模塊,而層的維度使用 2 的步幅逐漸減小,直到獲得 25 × 25 像素的特征圖。
Pyramid Pooling Module 允許模型學習關于不同尺度條形碼潛在位置的全局信息,并且其層與膨脹卷積模塊上的層連接,以保留從兩個模塊中提取的特征。
然后將來自右分支的結果特征圖添加到正則卷積模塊的輸出中,這允許修正任一分支可能遺漏的特征。換句話說,每個分支的輸出構成了另一個分支的殘余校正,從而改進了每個節點的結果,如白色所示。然后對節點進行上采樣并與以相應維度的紅色和黃色顯示的轉置卷積特征圖連接。在整個網絡中,我們在每一層之后使用 ReLU 作為非線性,并添加 L2 正則化以解決訓練期間可能發生的過擬合情況。在所有數據集上,我們將 80% 用于訓練集,10% 用于驗證集,其余 10% 用于測試集。我們使用一個 NVIDIA Tesla V100 GPU 進行訓練。由于這是一個分割網絡,我們對分類背景和條形碼感興趣,我們使用二進制交叉熵作為損失函數。
2.3 邊界框提取
由于一些圖像包含彼此非常接近的條形碼,它們的 Y-Net 輸出反映了相同的配置,這使得單個條形碼邊界框的提取變得復雜,如圖 4(a)所示。 為了有效地分離它們,我們使用像素校正余量執行腐蝕、輪廓提取和邊界框擴展。 如圖 4(b) 所示,腐蝕階段允許算法擴大分段條碼之間的間隙,這些條碼可能由 1 個或多個像素分隔。 然后在圖 4? 中的輪廓提取階段,通過邊界跟蹤,使用得到的掩碼來推斷單個條形碼邊界框。 如圖 4(d) 所示,在擴展階段使用像素校正余量來恢復原始邊界框的尺寸。 我們流水線的這個后處理階段的平均處理時間為 1.5 毫秒 (ms),因為它由一組 Python 矩陣操作組成,可以有效地從預測掩碼中提取邊界框。
圖 4. (a) Y-Net 輸出; (b) 侵蝕后的 Y-Net 輸出; ? 在侵蝕輸出上提取邊界框——紅色,真實邊界框——綠色; (d) Y Net 輸出的像素校正余量后的最終邊界框; (e) 被遮擋條碼場景的 Y-Net 輸出; (f) 由于輸入圖像中的條形碼重疊,最終提取的邊界框在像素校正余量后分組
總結
以上是生活随笔為你收集整理的论文阅读:超高分辨率图像中快速、准确的条码检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 76岁“爷爷考生”第5次备战研究生考试
- 下一篇: 漫画:如何做一款比吃鸡还厉害的游戏