Ultralytics YOLO11 Kullanarak Nesne Sayımı
Nesne Sayımı nedir?
Ultralytics YOLO11 ile nesne sayımı, video ve kamera akışlarındaki belirli nesnelerin doğru bir şekilde tanımlanmasını ve sayılmasını içerir. YOLO11, en son teknolojiye sahip algoritmaları ve derin öğrenme yetenekleri sayesinde kalabalık analizi ve gözetim gibi çeşitli senaryolar için verimli ve hassas nesne sayımı sağlayarak gerçek zamanlı uygulamalarda öne çıkar.
İzle: Ultralytics YOLO11 ile Gerçek Zamanlı Nesne Sayımı Nasıl Yapılır? 🍏
Nesne Sayımının Avantajları
- Kaynak Optimizasyonu: Nesne sayımı, doğru sayımlar sağlayarak verimli kaynak yönetimine olanak tanır ve envanter yönetimi gibi uygulamalarda kaynak tahsisini optimize eder.
- Gelişmiş Güvenlik: Nesne sayımı, varlıkları doğru bir şekilde izleyip sayarak güvenliği ve gözetimi artırır, proaktif tehdit algılamaya yardımcı olur.
- Bilinçli Karar Verme: Nesne sayımı, perakende, trafik yönetimi ve diğer çeşitli alanlardaki süreçleri optimize ederek karar verme için değerli bilgiler sunar.
Gerçek Dünya Uygulamaları
Lojistik | Su Ürünleri Yetiştiriciliği |
---|---|
![]() |
![]() |
Ultralytics YOLO11 Kullanılarak Konveyör Bandı Paketleri Sayımı | Ultralytics YOLO11 Kullanarak Denizde Balık Sayımı |
Ultralytics YOLO Kullanarak Nesne Sayma
# Run a counting example
yolo solutions count show=True
# Pass a source video
yolo solutions count source="path/to/video.mp4"
# Pass region coordinates
yolo solutions count region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# region_points = [(20, 400), (1080, 400)] # line counting
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)] # rectangle region
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)] # polygon region
# Video writer
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize object counter object
counter = solutions.ObjectCounter(
show=True, # display the output
region=region_points, # pass region points
model="yolo11n.pt", # model="yolo11n-obb.pt" for object counting with OBB model.
# classes=[0, 2], # count specific classes i.e. person and car with COCO pretrained model.
# tracker="botsort.yaml", # choose trackers i.e "bytetrack.yaml"
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = counter(im0)
# print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
ObjectCounter
Argümanlar
İşte şunları içeren bir tablo: ObjectCounter
argümanlar:
Argüman | Tür | Varsayılan | Açıklama |
---|---|---|---|
model |
str |
None |
Ultralytics YOLO Model Dosyasına Giden Yol. |
show_in |
bool |
True |
Video akışında giriş sayılarının görüntülenip görüntülenmeyeceğini kontrol etme işareti. |
show_out |
bool |
True |
Video akışında çıkış sayılarının görüntülenip görüntülenmeyeceğini kontrol etme işareti. |
region |
list |
'[(20, 400), (1260, 400)]' |
Sayma bölgesini tanımlayan nokta listesi. |
ObjectCounter
çözümü, birkaçının kullanımına izin verir track
argümanlar:
Argüman | Tür | Varsayılan | Açıklama |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
Kullanılacak izleme algoritmasını belirtir, örneğin: bytetrack.yaml veya botsort.yaml . |
conf |
float |
0.3 |
Algılamalar için güven eşiğini ayarlar; daha düşük değerler daha fazla nesnenin izlenmesine olanak tanır ancak yanlış pozitifleri içerebilir. |
iou |
float |
0.5 |
Çakışan algılamaları filtrelemek için Intersection over Union (IoU) eşiğini ayarlar. |
classes |
list |
None |
Sonuçları sınıf indeksine göre filtreler. Örneğin, classes=[0, 2, 3] yalnızca belirtilen sınıfları izler. |
verbose |
bool |
True |
İzleme sonuçlarının görüntülenmesini kontrol eder ve izlenen nesnelerin görsel bir çıktısını sağlar. |
device |
str |
None |
Çıkarım için cihazı belirtir (örn. cpu , cuda:0 veya 0 ). Kullanıcıların model yürütme için CPU, belirli bir GPU veya diğer işlem cihazları arasında seçim yapmasına olanak tanır. |
Ek olarak, aşağıda listelenen görselleştirme argümanları desteklenir:
Argüman | Tür | Varsayılan | Açıklama |
---|---|---|---|
show |
bool |
False |
Eğer True , ek açıklamalı görüntüleri veya videoları bir pencerede görüntüler. Geliştirme veya test sırasında anında görsel geri bildirim için kullanışlıdır. |
line_width |
None or int |
None |
Sınırlayıcı kutuların çizgi genişliğini belirtir. Eğer None , çizgi genişliği, görüntü boyutuna göre otomatik olarak ayarlanır. Netlik için görsel özelleştirme sağlar. |
show_conf |
bool |
True |
Etiketin yanında her algılama için güvenilirlik puanını görüntüler. Modelin her algılama için kesinliği hakkında fikir verir. |
show_labels |
bool |
True |
Görsel çıktıdaki her algılama için etiketleri görüntüler. Algılanan nesnelerin anında anlaşılmasını sağlar. |
SSS
Ultralytics YOLO11 kullanarak bir videodaki nesneleri nasıl sayarım?
Ultralytics YOLO11 kullanarak bir videodaki nesneleri saymak için şu adımları izleyebilirsiniz:
- Gerekli kütüphaneleri içe aktarın (
cv2
,ultralytics
). - Sayma bölgesini tanımlayın (örneğin, bir poligon, çizgi vb.).
- Video yakalamayı ayarlayın ve nesne sayacını başlatın.
- Nesneleri izlemek ve tanımlanan bölge içinde saymak için her bir kareyi işleyin.
İşte bir bölgede sayım yapmak için basit bir örnek:
import cv2
from ultralytics import solutions
def count_objects_in_region(video_path, output_video_path, model_path):
"""Count objects in a specific region within a video."""
cap = cv2.VideoCapture(video_path)
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]
counter = solutions.ObjectCounter(show=True, region=region_points, model=model_path)
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = counter(im0)
video_writer.write(results.plot_im)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo11n.pt")
Daha gelişmiş yapılandırmalar ve seçenekler için, birden çok bölgedeki nesneleri aynı anda saymak üzere RegionCounter çözümüne göz atın.
Nesne sayımı için Ultralytics YOLO11 kullanmanın avantajları nelerdir?
Nesne sayımı için Ultralytics YOLO11 kullanmak çeşitli avantajlar sunar:
- Kaynak Optimizasyonu: Doğru sayımlar sağlayarak verimli kaynak yönetimine olanak tanır ve envanter yönetimi gibi sektörlerde kaynak tahsisini optimize etmeye yardımcı olur.
- Gelişmiş Güvenlik: Varlıkları doğru bir şekilde izleyip sayarak güvenliği ve gözetimi artırır, proaktif tehdit algılama ve güvenlik sistemlerine yardımcı olur.
- Bilinçli Karar Verme: Perakende, trafik yönetimi ve daha pek çok alanda süreçleri optimize etmek için karar verme konusunda değerli bilgiler sunar.
- Gerçek zamanlı İşleme: YOLO11'in mimarisi gerçek zamanlı çıkarımı mümkün kılarak canlı video akışları ve zamana duyarlı uygulamalar için uygun hale getirir.
Uygulama örnekleri ve pratik uygulamalar için, belirli bölgelerdeki nesneleri izlemek üzere TrackZone çözümünü inceleyin.
Ultralytics YOLO11 kullanarak belirli nesne sınıflarını nasıl sayabilirim?
Ultralytics YOLO11 kullanarak belirli nesne sınıflarını saymak için, izleme aşamasında ilgilendiğiniz sınıfları belirtmeniz gerekir. Aşağıda bir Python örneği verilmiştir:
import cv2
from ultralytics import solutions
def count_specific_classes(video_path, output_video_path, model_path, classes_to_count):
"""Count specific classes of objects in a video."""
cap = cv2.VideoCapture(video_path)
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
line_points = [(20, 400), (1080, 400)]
counter = solutions.ObjectCounter(show=True, region=line_points, model=model_path, classes=classes_to_count)
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = counter(im0)
video_writer.write(results.plot_im)
cap.release()
video_writer.release()
cv2.destroyAllWindows()
count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo11n.pt", [0, 2])
Bu örnekte, classes_to_count=[0, 2]
sınıfındaki nesneleri saydığı anlamına gelir 0
ve 2
(örneğin, COCO veri kümesindeki kişi ve araba). Sınıf indeksleri hakkında daha fazla bilgiyi şurada bulabilirsiniz: COCO veri kümesi dokümantasyonu.
Gerçek zamanlı uygulamalar için neden diğer nesne algılama modelleri yerine YOLO11 kullanmalıyım?
Ultralytics YOLO11, Faster R-CNN, SSD ve önceki YOLO sürümleri gibi diğer nesne algılama modellerine göre çeşitli avantajlar sunar:
- Hız ve Verimlilik: YOLO11, gerçek zamanlı işleme yetenekleri sunarak, gözetim ve otonom sürüş gibi yüksek hızlı çıkarım gerektiren uygulamalar için idealdir.
- Doğruluk: Nesne algılama ve izleme görevleri için en üstün doğruluğu sağlar, yanlış pozitiflerin sayısını azaltır ve genel sistem güvenilirliğini artırır.
- Entegrasyon Kolaylığı: YOLO11, mobil ve uç cihazlar dahil olmak üzere çeşitli platformlar ve cihazlarla sorunsuz entegrasyon sunar ve bu da modern yapay zeka uygulamaları için çok önemlidir.
- Esneklik: Belirli kullanım durumu gereksinimlerini karşılamak için yapılandırılabilir modellerle nesne algılama, segmentasyon ve izleme gibi çeşitli görevleri destekler.
Özellikleri ve performans karşılaştırmaları hakkında daha derinlemesine bilgi edinmek için Ultralytics YOLO11 Dokümantasyonuna göz atın.
YOLO11'i kalabalık analizi ve trafik yönetimi gibi gelişmiş uygulamalar için kullanabilir miyim?
Evet, Ultralytics YOLO11, gerçek zamanlı algılama yetenekleri, ölçeklenebilirliği ve entegrasyon esnekliği sayesinde kalabalık analizi ve trafik yönetimi gibi gelişmiş uygulamalar için mükemmel bir şekilde uygundur. Gelişmiş özellikleri, dinamik ortamlarda yüksek doğruluklu nesne takibi, sayımı ve sınıflandırmasına olanak tanır. Örnek kullanım durumları şunlardır:
- Kalabalık Analizi: Büyük toplantıları izleyin ve yönetin, güvenliği sağlayın ve bölge tabanlı sayım ile kalabalık akışını optimize edin.
- Trafik Yönetimi: Hız tahmini yetenekleriyle araçları takip ve sayın, trafik düzenlerini analiz edin ve gerçek zamanlı olarak tıkanıklığı yönetin.
- Perakende Analitiği: Mağaza yerleşimlerini optimize etmek ve müşteri deneyimini iyileştirmek için müşteri hareket düzenlerini ve ürün etkileşimlerini analiz edin.
- Endüstriyel Otomasyon: Konveyör bantlarındaki ürünleri sayın ve kalite kontrol ve verimlilik iyileştirmeleri için üretim hatlarını izleyin.
Daha özel uygulamalar için, gerçek dünya bilgisayarlı görü zorlukları için tasarlanmış kapsamlı bir araç seti için Ultralytics Çözümlerini keşfedin.