Bilgisayarla görmenin nesne algılama teknolojisi, çok sayıda uygulama için gereklidir. Robot biliminde, gözetleme ekipmanlarında, sürücüsüz otomobillerde ve daha birçok alanda kullanıyoruz. Bu nedenle, bir resim veya videodaki belirli şeyleri bulup tanıyabiliriz.
En tanınmışlardan biri nesne tanımlama algoritmaları YOLO'dur (Sadece Bir Kez Bakarsınız) model seti. Bu modeller tarafından oluşturulan Ultralitik LLC.
Bu serinin en yeni versiyonu YOLOv5'tir. Ve piyasadaki en hızlı ve en hassas nesne tanımlama modelidir. Modelin yeni verilere genelleştirme kapasitesi büyük ölçüde geliştirildi. Ayrıca, önceki yinelemelerden daha iyi performans göstermesini sağlayan birçok özellik içerir.
YOLOv5, resimleri tek bir GPU'da saniyede 1000 kareye kadar işleyebildiği için gerçek zamanlı uygulamalar için harikadır.
Bu yazımızda YOLOv5'i tanıtacağız ve uygulama alanlarının detaylarını inceleyeceğiz.
YOLO'nun Yolculuğu: YOLO'dan YOLOv5'e
Joseph Redmon ve ark. ilk olarak 2016 yılında bir dizi nesne tanımlama modeli olan YOLO'yu tanıttı. İlk YOLO modeli, nesneleri gerçek zamanlı olarak tanımlayabiliyordu. Ancak, o zamanki diğer modellerle karşılaştırıldığında düşük bir doğruluğa sahipti.
Yıllar boyunca YOLO'nun çeşitli yükseltilmiş sürümleri piyasaya sürüldü. Son olarak, Ultralytics LLC, YOLO serisinin en yeni sürümü olan YOLOv5'i yarattı.
YOLOv5, şu anda mevcut olan en doğru ve en hızlı nesne tanımlama modelidir.
Önemli Özellikler
Çapa Kutuları
YOLOv5, bağlantı kutularını kullanarak bir görüntüdeki nesneler için sınırlayıcı kutuları tahmin eder. Model, çeşitli en boy oranlarına sahip önceden tanımlanmış birçok kutudan hangisinin bağlantı kutularını kullanarak resimdeki öğeyle en iyi eşleştiğini tahmin eder. Bunlar önceden tanımlanmış kutulardır.
Ayrıca, YOLOv5'in bir resimdeki öğeleri doğru bir şekilde tanımasını ve bulmasını sağlar.
Mozaik veri artırma
Eğitim sırasında YOLOv5, mozaik olarak bilinen bir yöntem kullanır. veri büyütme. Yeni eğitim resimleri geliştirmek için modelimiz birkaç fotoğrafın parçalarını rastgele birleştirir. Sonuç olarak, model daha esnek ve güvenilir hale gelir. Bu nedenle, yeni verilere genelleme yapar ve aşırı uydurmayı azaltır.
Eşsiz Bir Eğitim Hattı
Denetimli ve denetimli eğitimleri birleştiren benzersiz bir eğitim hattı denetimsiz öğrenme kullanıldı.
Böylece, model daha küçük bir örneklemden öğrenir ve etiketlenmemiş girdiyi etkin bir şekilde kullanır. Bu, modelin performansını artırır ve yeni girdilere genelleştirme kapasitesini artırır.
Kalıntı olan ve artık olmayan katmanlar
YOLOv5'in mimarisi artık olan ve olmayan katmanları birleştirir. Degradelerin katmanlar boyunca akmasına izin vererek, artık katmanlar modelin zor özellikleri öğrenmesine yardımcı olur. Ayrıca artık olmayan katmanlar, modele giriş resminin daha kapsamlı bir şekilde kavranmasını sağlar. Sonuç olarak, YOLOv5 daha hassas ve etkin bir şekilde çalışabilir.
YOLOv5 Nasıl Kullanılır
Montaj
YOLOv5 kurulumu pip kullanılarak hızlı bir şekilde tamamlanabilir. Pip bir Python paket yöneticisidir. YOLOv5'i kurmak için genel prosedürler aşağıdaki gibidir:
1- PyTorch Kurun: YOLOv5, PyTorch çatısını temel aldığı için öncelikle PyTorch kurmalısınız.
pip install torch torchvision
2. CUDA'yı kurun: YOLOv5'i bir GPU üzerinde çalıştırmayı düşünüyorsanız, CUDA'yı kurmalısınız.
3. YOLOv5'i yükleyin: PyTorch ve CUDA'yı kurduktan sonra YOLOv5'i indirmek için aşağıdaki komutu kullanın.
pip install yolov5
4-YOLOv5 kurulumunun ardından önceden eğitilmiş ağırlıkları indirmelisiniz. Önceden eğitilmiş ağırlıklar, Ultralytics GitHub deposunda mevcuttur.
Aşağı kaydırarak web sitesinin “ağırlıklar” bölümüne gidin. Önceden eğitilmiş ağırlıkları burada bulabileceğiniz listeden indirebilirsiniz.
5. Halihazırda eğitilmiş olan ve kullanım durumunuza en uygun ağırlıkları seçin. Ağırlıkların öğrenildiği veri kümesi veya belirli YOLOv5 sürümü, listeyi daraltmak için kullanılabilir.
6- Uygun ağırlıkları seçtikten sonra yanındaki “İndir” butonuna tıklayarak ağırlığı seçiniz. Ağırlıklar olarak indirilebilir olacaktır. pt dosyaları.
7- İndirilen ağırlıkları dizine aktarın. Algılama betiğinizin çalışacağı yer burasıdır.
8- Bu noktada, algılama komut dosyanızdaki önceden eğitilmiş ağırlıkları kullanarak fotoğraflarınız veya videolarınız üzerinde nesne algılama çalıştırabilirsiniz.
Verileri Hazırlayın
Verileri YOLOv5 ile kullanıma hazır hale getirmek için aşağıdaki işlemleri yapmalısınız:
1. Verileri toplayın: İlk adım, ihtiyaç duyacağınız resim veya video verilerini toplamaktır. nesne algılama. Tespit etmek istediğiniz şeyler fotoğraflarda veya videolarda bulunmalıdır.
2- Verileri biçimlendirin: Kullanıyorsanız, fotoğrafları komut dosyanıza aktarabilirsiniz. Kullanmayı planlıyorsanız, bir videoyu bir dizi fotoğrafa dönüştürmeniz gerekir. OpenCV gibi bir kitaplık kullanarak bir filmden kareleri çıkarabilirsiniz.
import cv2
img = cv2.imread('path/to/image')
OpenCV kitaplığı ile bir videoyu bir dizi görüntüye dönüştürmek için aşağıdaki komutu kullanabilirsiniz:
import cv2
cap = cv2.VideoCapture('path/to/video')
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
3. Verileri etiketleyin: Veri kümenizi kullanıyorsanız verileri etiketlemeniz gerekir. Bir görüntünün her karesinde tanımlamak istediğiniz öğelerin etrafına sınırlayıcı kutular çizin. Verilerin etiketlenmesi işlemidir. Bu işlemde size yardımcı olması için, LabelImg ve RectLabel dahil olmak üzere çeşitli araçlar kullanabilirsiniz.
4- Verileri etiketledikten sonra eğitim ve test setlerine ayırmalısınız. Bu, modelinizin ne kadar iyi performans gösterdiğini değerlendirmek için çok önemlidir.
5. Son olarak, eğitim veya testten önce verileri önceden işlemeniz gerekebilir. Bu, resimlerin veya videoların ölçeklendirilmesini, piksel değerlerinin standartlaştırılmasını veya veri büyütme yöntemlerinin kullanılmasını gerektirebilir.
Bu adımları tamamladıktan sonra verileriniz hazır.
Algılama komut dosyasını çalıştır
Burada, bir resmi analiz eden ve nesneleri bulan bir algılama komut dosyasının bir örneği verilmiştir.
import yolov5
import cv2
# Pre-trained weights should be loaded.
weights = 'path/to/weights.pt'
# Set the detection confidence level
conf_thres = 0.5
# Set the Non-Maxima Suppression (NMS) threshold
nms_thres = 0.5
# Create the detector object
detector = yolov5.YOLOv5(weights, conf_thres, nms_thres)
# Load the image
img = cv2.imread('path/to/image')
# Perform object detection
detections = detector.detect(img)
# Print the detections
for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections:
print("Object:", classes[int(cls_pred)])
print("Confidence:", conf)
print("Bounding box:", (x1, y1, x2, y2))
Rötuş
Maksimum olmayan bastırma, nesne algılamada (NMS) kullanılan en sık kullanılan son işleme tekniklerinden biridir. Aynı nesne için örtüşen sınırlayıcı kutuları ortadan kaldırmak için NMS kullanıyoruz. Tespitler üzerinde NMS yürütmek için OpenCV kitaplığının cv2.dnn.NMSBoxes() yöntemini kullanabiliriz.
NMS kullanarak algılamaların nasıl sonradan işleneceğine ilişkin bir örneği burada bulabilirsiniz.
import cv2
# Perform Non-Maxima Suppression (NMS)
indeksler = cv2.dnn.NMSBoxes(algılamalar, güvenler, conf_thres, nms_thres)
Görüntüleme
Görselleştirme durumunda yine OpenCV gibi bir kütüphane kullanabiliriz. Kaynak resim veya videoda keşfedilen nesnelerin etrafındaki sınırlayıcı kutuları görüntüleyebiliriz. Görüntünün sınırlayıcı kutularını çizmek için cv2.rectangle() yöntemini kullanın. Orijinal görüntüdeki algılamaları şu şekilde görüntüleyebilirsiniz:
cv2 içe aktar
# Draw the bounding boxes on the image
indekslerde I için:
i = i[0]
x1, y1, x2, y2 = detections[i][0], detections[i][1], detections[i][2], detections[i][3]
cv2.rectangle(img, (x1, y1), (x2, y2), (255, 0, 0), 2)
cv2.putText(img, classes[class_ids[i]], (x1, y1), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
# Show the image
cv2.imshow("Object Detection", img)
cv2
Uygulamalar
YOLOv5, güçlü bir nesne tanımlama modelidir. Bu nedenle, onu birçok gerçek dünya senaryosunda kullanabiliriz. En belirgin kullanımlarından biri sürücüsüz arabalardır. YOLOv5, otomobiller ve trafik ışıkları gibi öğeleri gerçek zamanlı olarak tanımlayabilir.
Gözetleme sistemlerinde, canlı video akışlarındaki nesneleri tanımak ve izlemek için YOLOv5'i kullanabiliriz. Ayrıca, YOLOv5 robotikte büyük bir varlık olabilir. Robotların çevrelerini algılamasına ve anlamasına yardımcı olabilir. Bu, navigasyon ve manipülasyon gibi faaliyetler için son derece önemlidir.
YOLOv5, perakende, spor, tıp ve güvenlik gibi nesne algılama gerektiren herhangi bir sektörde de kullanılabilir.
Sonuç
Son olarak YOLOv5, YOLO ailesinin en yeni ve gelişmiş versiyonudur. nesne algılama modelleri
. Ayrıca, mevcut en doğru nesne algılama modeli olduğunu söylemek doğru olur. Yüksek doğruluğu ve hızı sayesinde nesne algılama projeleriniz için güvenle tercih edebilirsiniz.
Resky Agus
Yolov5 ile araç algılama hakkında ilk günlüğü yapıyorum ve bu web bununla ilgili bilgi aramama yardımcı oluyor.
AI ile çok ilgileniyorum.
eğer yapabilirsen AI hakkında çok sorum var belki bana yardım edebilirsin
Teşekkür ederim