$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Bu makalede kullanılan veri seti, Longyan Tütün Endüstrisi Şirketi, Ltd.'nin Lojistik Departmanı'nın AS/RS alanından alınmıştır. Bu çalışma insan katılımcıları veya hayvanları içermedi. Etik onay gerekmiyordu.
Veri seti edinimi ve kurulumu
Donanım konfigürasyonu: 8 mm odak mesafeli lensle (örneğin MVL-HF0828M-6MPE) donatılmış endüstriyel bir kamera (örneğin, MV-CA013-A0GM) stacker vincinin yük platformuna monte edilir. Kamerayı bir kontrol PC'ye GigE kablosu ve kablosuz bir AP cihazı (örneğin, BH-ANT5158S-14HV, BH-MS-AC1600HWH) ile bağlayın. Kameranın etrafına bir şerit LED ışığı (örneğin, MV-LLDS-1002-38-W) yerleştirerek eşit aydınlatma sağlanır.
Kamera parametre ayarı: Üreticinin yazılımı (örneğin, MVS) kullanılarak kamerayı yapılandırın. Alım çözünürlüğünü 1280 x 1024 piksel olarak ayarlayın. Tetik modunu Donanım Tetik olarak ayarlayın ve stacker vincinin konumlandırma sistemiyle senkronize edin. Pozlama süresini 100 ms'e, gain seviyesini ise 5 dB'ye ayarlayarak hareket bulanıklığını ve gürültüyü en aza indirin. Kamera ile sigara kutuları arasındaki çalışma mesafesi yaklaşık 550 mm'dir.
Görsel koleksiyonu: Tetikli endüstriyel bir kamera, sigara kutularının saklanması ve alınması sırasında bir tepsi yerleştirildiğinde otomatik olarak bir görüntü yakalar. Toplamda 4.835 ham görüntü toplayın; tipik görüntüler Şekil 1'de gösterilmiştir.
Görsel açıklama: Açık kaynak aracı LabelImg'yi kullanın. Her resim için, görünür her sigara markası özelliğinin etrafına sınırlı kutular çizin. Her sınırlayıcı kutu için sınıf etiketi olarak doğru marka adını (örneğin, Hongzhuang, Gutian) atayın. Açıklamaları standart tek aşamalı algılama formatında kaydedin; her görüntü için bir txt dosyası bulunuyor.
Kalite kontrolü: İkinci bir anlatıcı, annotlu görsellerin rastgele seçilmiş %20'sini inceler. Herhangi bir tutarsızlık tartışılıp çözülür, böylece etiketleme tutarlılığı sağlanır.
Veri artırma stratejisi
Bu bölüm, veri setlerine uygulanan geleneksel ve gelişmiş artırma tekniklerini detaylandırır. Başlangıç veri ve artırılmış veriler yeni bir veri setinde birleştirilir; bu veri seti, değerlendirmede adaleti sağlamak için eğitim seti, doğrulama seti ve test seti olarak ayrılır.
Geleneksel veri artırma32: Bu dönüşümler, eğitim boru hattı tarafından gerçek zamanlı olarak uygulanır (örneğin, Albumentations veya PyTorch Transforms kütüphaneleri kullanılarak) ve her parti için tanımlanmış bir olasılıkla.
Geometrik dönüşümler: Dönme: Görüntüleri -45° ile +45° arasında rastgele döndürür. Ölçeklendirme: Resimleri rastgele 0.8 ile 1.2 arasında bir kat ölçeklendir. Yatay çevirme: Görüntüleri %100 olasılıkla rastgele yatay çevir. Rastgele kırpma: Orijinal görüntü alanının %80 ile %100'ü arasında bir bölümü rastgele kırpın.
Fotometrik dönüşümler: Parlaklık ve Kontrast: [0.6, 1.4]'ten rastgele seçilen bir faktörle parlaklık ve kontrastı ayarlayın. Gauss gürültüsü: Standart sapma ile [0, 0.01 * 255] arasında rastgele seçilen Gauss gürültüsünü %10'una ekleyin. Gauss bulanıklığı: Görüntülerin %10'una 3x3 çekirdek boyutuna sahip bir Gauss bulanıklığı uygulayın.
Oklüzyon simülasyonu: Görüntülere rastgele 1 ila 3 dikdörtgen tıkanma yaması (her biri görüntü alanının %5'ine kadar) yerleştirin. Yamalar rastgele gürültü veya ortalama görüntü piksel değerleriyle doldurulur.
Gelişmiş veri artırma: bölgeye özgü kopyala-yapıştır
Motivasyon ve etki: Bu hedefli artırmanın temel motivasyonu, kritik bir veri sorununu ele almaktı: birkaç sigara markasında çok az örnek (tek bir görüntü kadar) bulundu. Standart rastgele bir tren doğrulama testi bölünmesi, nadir bir markanın tüm örneklerini tek bir kümeye (örneğin, hepsi test setine) tahsis edebilir ve bu da modelin o markayı öğrenme veya doğrulama fırsatı olmamasına neden olabilir. Bu yöntem, az temsil edilen markalar için numune büyüklüğünü yapay olarak artırdı ve her markanın eğitim, doğrulama ve test setleri arasında yeterli sayıda örnek olmasını sağladı. Bu temel adım, nadir kategorilerde felaket arızalarını önler ve tüm marka setinde anlamlı bir model performansı ve genelleme için ön koşuldur.
Bu adım, başlangıç veri seti ve Segment Anything Model (SAM)33 üzerinde önceden eğitilmiş segmental temel model gerektirir.
Segment kaynak nesneleri: Az temsil edilen markalardan gelen sigara kutusu görüntüleri için, SAM modelini kullanarak hassas segmentasyon maskeleri oluşturun. Segmentasyonu başlatmak için Sigara Kutusunun Marka Özelliği'ne tıklayarak puan istemi modunu kullanın. Oluşturulan maskeleri elle doğrulayın ve doğruluk için geliştirin. Şeffaf arka planlı segmentlenmiş sigara kutusu görüntülerini PNG dosyaları olarak kaydet. Bu, izole nesne örneklerinden oluşan bir kütüphane oluşturur.
Arka plan maskeleri oluşturun: Önceden eğitilmiş segmental temel modeli kullanarak bir dizi arka plan görüntüsünde (bol boş alan veya basit arka planlara sahip resimler) örnek segmentasyonu gerçekleştirin. Model, nesnelerin zaten işgal ettiği bölgeleri gösteren ikili maskeler üretecektir.
Maskeleri ve nesneleri yapıştırma işlemi: Her arka plan maskesi için, OpenCV kütüphanesini ('cv2.approxPolyDP' fonksiyonu, epsilon faktörü 0.02 * kontur çevresi) kullanarak eğri uyumunu gerçekleştirin ve maske kenarlarını doğrusal hale getirerek boş alanın basitleştirilmiş bir çokgen temsili elde edin. Arka plan maskesi içindeki en büyük bitişik çokgen alanını hedef yapıştırma bölgesi olarak belirleyin. Kütüphaneden rastgele segmentlenmiş bir kaynak nesne seçin. Boyutunu değiştirin (en-boy oranını koruyun) ve hedef yapıştırma bölgesine doğal olarak uyacak şekilde affine dönüşüm uygulayın (-5° ile +5° arasında küçük bir dönüş ve hafif kayma), böylece mevcut nesnelerin sınırlarıyla örtüşmemesini sağlar. Dönüştürülmüş nesneyi hesaplanan konumdaki arka plan görüntüsüne sorunsuz yapıştırmak için alfa karıştırma kullanın. Belirli alanlarda kopyala-yapıştır tekniğine dayanan veri artırma teknolojisinin genel çerçevesi Şekil 2'de gösterilmiştir. Yapıştırılan nesne için programatik olarak uygun yeni bir txt annotasyon dosyası oluşturulur, sınırlayıcı kutu koordinatları ve sınıf etiketi güncellenir.
Son artırılmış veri seti: Bu çevrimdışı süreç 600 yeni sentetik görüntü üretir. Bunları, yukarıda açıklanan geleneksel artırma teknikleri uygulanarak oluşturulan orijinal 4.835 görüntü ve ek 1.167 görüntüyle birleştirerek nihai 6.602 görüntü veri setini oluşturur. Son veri setini eğitim (%70, %4.621 görüntü), doğrulama (%20, 1.320 görüntü) ve test (%10, 661 görüntü) setlerine ayırın; böylece aynı orijinal diziminden görüntülerin aynı bölünme içinde tutulmasını sağlayarak veri sızıntısını önleyin.
Önerilen geliştirilmiş dedektör için model değişikliği
Nesnealgılama algoritmaları 34 için optimize edilmiş algoritmalar, son yıllarda endüstriyel denetimde kayda değer ilerlemeler kaydetmiştir. Bu bölüm, önerilen modeli oluşturmak için temel model mimarisini değiştirmek için ayrıntılı ve adım adım bir prosedür sunar. Değişiklikler, modelin yapılandırma dosyasının (örneğin, config.yaml) düzenlenmesiyle ve ilgili özel modül tanımlarının kod tabanına dahil edilmesinden sağlanarak gerçekleştirilir. Her değişikliğin gerekçesi, belirli tespit zorluklarını ele almadaki rolünü açıklamak için sunulur. Önerilen modelin yapısı Şekil 3'te gösterilmiştir.
Downsampling modüllerinin ADown modülü ile değiştirilmesi: Aşağı samplama için kullanılan standart Convolution-BatchNorm-SiLU (CBS) modülü, tek bir kademeli konvolüsyon kullanır; bu modül, bilgidarboğazı 35 olarak görev yapabilir ve küçük sigara kutularını ve ayrıntılı marka logolarını tanımak için kritik olan ince taneli özellikleri potansiyel olarak ortadan kaldırabilir. ADown modülü, mekansal çözünürlük azaltma sırasında daha zengin bir özellik setini yakalayan ve koruyan çift dallı bir yapı uygulayarak bu durumu hafifletmek üzere tasarlanmıştır. Bir dal yüksek frekanslı yerel detayların tutulmasını önceliklendirirken, diğeri daha geniş ve bağlam açısından zengin bir genel bakış sunuyor. Bu tamamlayıcı özelliklerin birleşimi, sonraki katmanlar için daha sağlam ve bilgilendirici bir temsil ortaya çıkarır.
Eylem-uygulama adımları
Modül tanımı: Projenin model tanım dosyalarında ADown adlı özel bir PyTorch modülünün tanımlandığından emin olun. Bu modül iki paralel dal içermelidir. İlk dal, 3x3 çekirdekli ve 2 adımlı iki boyutlu bir konvolüsyon katmandan oluşmalıdır. İkinci dal, ardışık olarak 2x2 maksimum havuzlama katmanı (adım 2 ile) ve ardından 1x1 konvolüsyon katmanından oluşmalıdır. Bu iki dalın çıktıları kanal boyutu boyunca birleştirilecek ve ortaya çıkan özellik haritası, kanalları entegre etmek ve çıktıyı üretmek için son 1x1 konvolüsyon katmanından geçirilecektir. ADown modülünün yapısı Şekil 4'te gösterilmiştir.
Yapılandırma dosyası düzenleme: Temel model yapılandırma dosyasını (config.yaml) açın. Aşağı örnekleme için yapılandırılmış her CBS modül örneğini sistematik olarak tanımlayın (yani adım parametresi 2'ye ayarlanmış). Bu CBS modül girişlerinin her birini yeni ADown modülü ile değiştirin.
Tasarım motivasyonu: ADown tasarımı, standart çizgili konvolüsiyalarda bilgi kaybını azaltma ihtiyacından kaynaklanır; bu da küçük nesneler için zararlı olabilir. Çift dal yapısı, hem yüksek frekanslı uzamsal detayları (konvolüsyon aracılığıyla) hem de düşük frekanslı bağlamsal bilgileri (havuzlama yoluyla) yakalamak için paralel işleme fikrinden ilham alarak sonraki katmanlar için daha zengin çok ölçekli özellik temsili sağlar.
iEMA modülünün entegrasyonu
Gerekçe ve tasarım ilkesi: Modelin küçük hedefleri ve kısmen gizlenmiş hedefleri tespit etme yeteneğini artırmak için, çok ölçekli mekânsal bağlamı etkili şekilde modelleyebilen bir mekanizmanın dahil edilmesi şarttır. iEMA modülü, bunu bir ters çevrilmiş kalıntı blok (iRMB)37 yapısına Verimli Çok Ölçekli Dikkat (EMA)36 bileşeni gömmekle başarır. iRMB, derinlik açısından ayrılabilir konvolüsyonlar kullanarak hesaplama açısından verimli bir temel sağlarken, EMA bileşeni paralel çok dal tasarımı aracılığıyla çapraz ölçekli mekansal etkileşimleri açıkça yakalar. Bu entegrasyon, modelin özellik ağırlıklarını dinamik olarak yeniden kalibre etmesini sağlar; farklı ölçeklerde en ayırt edici mekansal bölgelere odaklanır, böylece kapatma altında ve küçük nesneler için tanıma daha iyi olur.
Eylem-Uygulama Adımları
Modül tanımı: iEMA adlı özel bir PyTorch modülünün tanımlandığından emin olun. Bu modül önce ters çevrilmiş bir kalıntı bloğu uygulamalıdır. Bu blok genellikle kanal genişlemesi için noktasal bir konvolüsyonla başlar, ardından mekânsal özellik çıkarımı için derinlik konvolüsyonu (örneğin, 3x3) ve son olarak kanal projeksiyonu için nokta dönüşümü yapılır. Bu bloklamadan hemen sonra EMA dikkat mekanizması uygulanmalıdır. EMA mekanizması genellikle gruplanmış konvolüsyonlar ve boyutlar arası etkileşimler kullanarak aşırı hesaplama yükü olmadan çok ölçekli bir uzamsal dikkat haritası verimli şekilde üretir. iEMA modülünün yapısı Şekil 5'te gösterilmiştir.
Yapılandırma dosyası düzenleme: config.yaml yapılandırma dosyasında, boyun ağını tanımlayan bölümleri, özellikle C2f modüllerinin hemen ardından gelen katmanları bulun. Bu stratejik konumlarda, iEMA modülünü çağıran yeni bir katman ekleyin.
Tasarım motivasyonu: iEMA modülü, yerel özellik çıkarımı (derinlik yoluyla konvolüsyon) hafif ama etkili bir küresel bağlam modelleme mekanizması (EMA) ile entegre ederek özellik ayırt edilebilirliğini artırma ilkesine dayanır. Bu hibrit yaklaşım, modelin farklı ölçeklerdeki bilgilendirici bölgelere uyarlanabilir şekilde odaklanmasını sağlar; bu, kısmen görünür marka logoları ve metinlerini tanımak için çok önemlidir.
Algılama başlığının DynamicHead modülü ile değiştirilmesi
Gerekçe ve tasarım prensibi: Orijinal tespit başlığı, sigara kutularının önemli ölçek değişimlerini ve yerelleştirme ile sınıflandırma görevleri arasındaki karmaşık etkileşimi optimal şekilde yönetemeyebilir. DynamicHead modülü, üç dikkat biçimini tutarlı bir yapıda birleştirerek bunu ele alır: ölçek farkında, mekânsal farkında ve görev farkında dikkat. Ölçek farkında bileşen, özellik piramidinin farklı seviyelerindeki özellikleri dinamik olarak birleştirerek her boyuttaki nesnelerin etkili şekilde temsil edilmesini sağlar. Mekansal farkındalık bileşeni, hesaplama kaynaklarını özellik haritalarındaki en bilgilendirici bölgelere odaklamak için seyrek bir örnekleme stratejisi kullanır. Göreve duyarlı bileşen, özellik temsilini özellikle sınırlayıcı kutu regresyonu ve kategori sınıflandırması gibi farklı amaçlar için uyarlar. Bu birleşik yaklaşım, daha doğru ve sağlam tahminlere yol açar.
Eylem-Uygulama Adımları
Modül tanımı: Bu, (1)'den (4'e) kadar denklemlerle tanımlanan üç dikkat mekanizmasını kapsayan karmaşık bir modüldür. İç yapısı, ölçekli ağırlıkların hesaplanması, deforme edilebilir mekânsal dikkat uygulanması ve göreve özgü özellik dönüşümlerinin uygulanması için katmanları içerecektir.
(1)
(2)
(3)
(4)
BuradaW L(F), giriş özelliği F'ye ölçek farkında πL(F), mekânsal π farkındaS(F) ve göreve duyarlı πC(F) dikkat mekanizmalarının ardışık uygulanmasıyla elde edilen nihai dikkat ile rafine edilmiş özellik haritasını gösterir. Özellikle, Eq. (2)'deL(F π) önce mekânsal (S) ve kanal (C) boyutları arasında ortalama alarak ölçek bazında bir dikkat ağırlığını hesaplar; bunu doğrusal bir fonksiyon f(⋅) ve sert sigmoid aktivasyon σ(⋅) üzerinden geçirir. Eq. (3)'te πS(F), K örneklenmiş anahtar nokta p k'dan özellikleri toplayarak seyrek mekânsal dikkat gerçekleştirir; her biri öğrenilebilir bir ofset Δp k ile ayırt edici bölgelere ve önem skaler Δmk üzerine odaklanır. Eq. (4)'te πC(F), her kanala doğrusal bir dönüşüm (α1, β1,α 2,β 2)) uygulayarak görev farkında bir dikkat uygular ve maksimum yanıtı seçer, böylece başlık sınıflandırma ve regresyon görevlerinde uzmanlaşabilir. DynamicHead modülünün yapısı Şekil 6'da gösterilmiştir.
Yapılandırma dosyası düzenleme: config.yaml dosyasında, modelin başını tanımlayan bölümü bulun; bu bölüm aslında Detect modülünü içerir. DinamikHead modülünü çağıran yeni bir giriş ile değiştirin.
Tasarım motivasyonu: DynamicHead modülü, nesne algılama başlıklarının ölçek, mekansal konum ve göreve uyarlanabilir olması gerektiği gözlemine dayanır. Birleşik dikkat çerçevesi, Eqs ile resmileştirilmiş (1-4), modelin bu üç boyuta dayalı özellik yanıtlarını dinamik olarak yeniden kalibre etmesini sağlar ve ölçek varyasyonu ile arka plan karmaşasına karşı daha sağlam tahminler sağlar.
Model eğitimi
PyTorch 2.1.0, CUDA 12.1 ve tüm bağımlılıkların kurulduğundan emin olun.
Eğitim komutanlığı
Yeniden eğitimden önce, bölünmüş görüntü verisi ve annotasyon verilerini standart tek aşamalı tespit formatında hazırlayın. Görüntü yolu ve veri kategorisini içeren bir .yaml dosyası oluşturun. Model iyileştirmesine göre, orijinal dedektör .yaml dosyası önerilen model .yaml dosyasıyla değiştirilmiştir. train.py dosyasını yazın, tek aşamalı dedektör paketini içe aktarın, eğitim modelini ve veri yolunu yükleyin ve imgze=640, epochs=100, batch=4, workers=0, device='0', optimizer='SGD', close_mosaic=10 vb. gibi bazı eğitim parametrelerini belirleyin.
Hiperparametreler: Ana parametreler şunlardır: giriş görüntü boyutu (640 x 640), parti boyutu (4), kosinüs tavlama zamanlayıcı ile başlangıç öğrenme oranı (0.01), momentumlu SGD optimizatoru (0.937) ve ağırlık azalması (0.0005). Mozaik artırma varsayılan olarak etkinleştirilmiştir.
Eğitim izleme: Eğitim süreci, her dönem için metrikler üretecektir. Eğimleri/doğrulama kaybı ve mAP 0.5'te izleyerek yakınsamayı ve aşırı uyumu önleyin. 100 dönem için eğitim genellikle yeterlidir.
Model değerlendirmesi ve dağıtımı
Değerlendirme: Eğitimden sonra en iyi model runs/train/exp/weights/best.pt olarak kaydedilir. Val setinde şu şekilde değerlendirin: bash python val.py --data cigarette_dataset.yaml --weights runs/train/exp/weights/best.pt. Script, 0.5'te Precision, Recall, mAP vb. çıkarır. mAP'nin gerekli eşiği karşıladığını (örneğin, %97,9) doğrulayın.
Doğrulama için çıkarım: Tespit sonuçlarını görsel olarak doğrulamak için örnek görüntülerde çıkarım yapın: bash python detect.py --weights runs/train/exp/weights/best.pt --source path/to/test/images --conf 0.5. Gerekçe doğrulanarak, her görüntünün tespit sonuçları ve modelin tespit hızı elde edilebilir.
Dağıtım: Stacker vincinin sisteminde gerçek zamanlı dağıtım için, PyTorch modelini (best.pt, ~4.7 MB) optimize edilmiş çıkarım hızı için TensorRT veya ONNX gibi bir formata dönüştürebilirsiniz. Son çıktı, sınıf etiketleri (marka adları) ve güven puanlarıyla sınırlanmış kutulardır.