Ultralytics YOLO27: Bekleme listesine katıl.
YOLO'yu lisansla
Ultralytics Sözlüğüne dön

XML

XML, özel etiketleri iç içe geçirerek yapılandırılmış verilerden oluşan bir ağaç oluşturan metin biçimidir. Sözdizimi, şemaları, PASCAL VOC açıklamaları ve JSON ile YAML karşılaştırması.

XML (Genişletilebilir İşaretleme Dili), özel etiketlerin iç içe geçerek bir ağaç oluşturduğu yapılandırılmış veriler için kullanılan bir metin biçimidir; örneğin <size> öğesi <width> ve <height> öğelerini içerebilir. World Wide Web Consortium, SGML'nin (Standart Genelleştirilmiş İşaretleme Dili) web üzerinde belge ve veri alışverişi için basitleştirilmiş bir alt kümesi olarak XML 1.0'ı Şubat 1998'de Tavsiye olarak yayımladı. HTML'den farklı olarak XML'de önceden tanımlanmış etiketler yoktur: her uygulama, verisinin ne anlama geldiğini belirten kendi etiketlerini tanımlar. SVG grafikleri ve RSS akışlarından Microsoft Office belgelerine kadar pek çok dosya biçiminin XML üzerine kurulmasının nedeni budur. Makine öğrenimi ve bilgisayarlı görüde XML çoğunlukla etiketleme dosyalarında, model dosyalarında ve eğitim verilerini sağlayan sağlık ve kurumsal sistemlerde kullanılır.

XML Sözdizimi ve Doğrulama#

Bir XML belgesinde tam olarak bir kök öğe bulunur. Öğeler metin, alt öğeler ve açılış etiketinin içine yazılan öznitelikler içerebilir; örneğin <box label="car" xtl="10">. xmlns ile tanımlanan ad alanları, farklı söz dağarcıklarına ait etiketleri birbirinden ayırır. Her etiketin kapatıldığı, öğelerin doğru iç içe yerleştirildiği ve öznitelik değerlerinin tırnak içine alındığı sözdizimi kurallarına uyan belge iyi biçimlendirilmiş sayılır; ayrıştırıcılar ilk iyi biçimlendirme hatasında durmalıdır. Bir belge, izin verilen öğeleri, bunların sırasını ve veri türlerini listeleyen Belge Türü Tanımı (DTD) veya XML Şeması (XSD) olarak yazılmış bir şemaya uyduğunda da geçerlidir. size/width gibi XPath ifadeleri ağaçtaki düğümleri seçer; XSLT stil sayfaları ise bir XML söz dağarcığını başka birine dönüştürür.

Bilgisayarlı Görü ve Makine Öğreniminde XML#

2005-2012 yılları arasında düzenlenen PASCAL VOC yarışması, XML'i nesne tespiti için klasik etiketleme biçimi hâline getirdi. Her görüntünün dosya adını ve boyutunu içeren bir XML dosyası ile her nesne için bir <object> öğesi vardır; bu öğe sınıf adını, truncated ve difficult bayraklarını ve piksel köşeleri xmin, ymin, xmax ve ymax ile sınırlayıcı kutuyu tanımlayan bir <bndbox> öğesini içerir. LabelImg etiketleme aracı, bu biçimi varsayılan olarak kaydeder; bu nedenle birçok veri kümesi hâlâ bu biçimde dağıtılır ve veri ön işleme sırasında dönüştürülmeleri gerekir. CVAT aracının CVAT for images 1.1 dışa aktarımı, bir görevin tüm etiketlerini tek bir XML dosyasında saklar; kutular xtl, ytl, xbr ve ybr gibi özniteliklerle yazılır.

XML, modelleri ve kayıtları da açıklar. Intel'in OpenVINO Ara Temsili, bir ağın katmanlarını ve bağlantılarını .xml dosyasında, ağırlıklarını ise eşleşen .bin dosyasında saklar; OpenCV'nin önceden eğitilmiş Haar kademeli yüz algılayıcıları da XML olarak dağıtılır. Klinik yapay zekâ projelerinin tıbbi görüntü analizi için görüntülerle eşleştirdiği HL7 FHIR sağlık kayıtları XML veya JSON olarak aktarılabilir. Word ve Excel dosyaları da belge yapay zekâ sistemlerinin okuyabildiği XML bölümlerinden oluşan ZIP arşivleridir.

Bu örnek, Python'un yerleşik ElementTree modülüyle bir VOC etiketlemesini ayrıştırır ve her kutuyu YOLO etiket biçiminin normalize edilmiş merkez, genişlik ve yüksekliğine dönüştürür:

import xml.etree.ElementTree as ET

# A PASCAL VOC annotation: one XML file per image, one <object> per box
voc = """
<annotation>
  <filename>000017.jpg</filename>
  <size><width>480</width><height>364</height><depth>3</depth></size>
  <object><name>person</name><difficult>0</difficult>
    <bndbox><xmin>185</xmin><ymin>62</ymin><xmax>279</xmax><ymax>199</ymax></bndbox></object>
  <object><name>horse</name><difficult>0</difficult>
    <bndbox><xmin>90</xmin><ymin>78</ymin><xmax>403</xmax><ymax>336</ymax></bndbox></object>
</annotation>
"""
root = ET.fromstring(voc)
w, h = int(root.find("size/width").text), int(root.find("size/height").text)

# Convert corner pixels to YOLO's normalized center x, center y, width, height
for obj in root.iter("object"):
    box = obj.find("bndbox")
    x1, y1, x2, y2 = (float(box.find(k).text) for k in ("xmin", "ymin", "xmax", "ymax"))
    cx, cy = ((x1 + x2) / 2 - 1) / w, ((y1 + y2) / 2 - 1) / h  # VOC pixel indices start at 1
    print(obj.find("name").text, f"{cx:.3f} {cy:.3f} {(x2 - x1) / w:.3f} {(y2 - y1) / h:.3f}")

Çıktıda person 0.481 0.356 0.196 0.376 ve horse 0.511 0.566 0.652 0.709 gösterilir: sınıf indekslerinden sonra etiket satırları olarak yazılmaya hazır, görüntü boyutlarına oranlanmış aynı iki kutu. Ultralytics VOC.yaml veri kümesi dosyası, ilk kullanımda bu dönüşümü otomatik olarak gerçekleştirir: VOC 2007 ve 2012'yi indirir, her XML etiketini ElementTree ile ayrıştırır, difficult olarak işaretlenmiş nesneleri atlar ve 16.551 eğitim, 4.952 doğrulama görüntüsü için YOLO .txt etiketlerini yazar.

XML, JSON ve YAML#

  • JSON: XML'den daha yalın sözdizimine sahip nesneler, diziler, dizgeler, sayılar ve boole değerleri içerir; Python sözlüklerine ve JavaScript nesnelerine doğrudan eşlenir. Web API'leri ve COCO veri kümesi açıklamaları JSON kullanır.
  • YAML: Kapanış etiketleri yerine girintileme kullanır, yorumları destekler ve YAML 1.2'den bu yana her JSON belgesini kabul eden bir sözdizimine sahiptir. Bu özellikler, YOLO veri kümesi ve model dosyaları gibi elle düzenlenen yapılandırmalar için YAML'ı popüler kılar.
  • XML: Daha ayrıntılıdır; şemalar, ad alanları, öznitelikler ve metinle satır içi işaretlemeyi bir arada barındıran karma içerik sunar. Bu özellikler, sıkı doğrulama gerektiren belgelere ve standart kuruluşlarına uygundur.

Güvenilmeyen XML'i Ayrıştırma#

XML'in varlık özelliği, bir belgenin yeniden kullanılabilir metin tanımlamasını sağlar; saldırganlar bu özelliği kötüye kullanır. "Milyar kahkaha" saldırısında, her biri bir önceki varlığa on kez başvuran yaklaşık on iç içe varlık tanımı, birkaç yüz baytlık bir dosyayı gigabaytlarca metne genişletir. XML harici varlık (XXE) saldırısında, saldırgan yerel dosyaya veya dahili URL'ye işaret eden bir varlık tanımlar; böylece güvenlik açığı bulunan bir ayrıştırıcı sırları belgeye okur veya ağ içinden istek gönderir. Python'un xml.etree.ElementTree aracı harici varlıkları genişletmez ve böyle bir varlıkla karşılaştığında ayrıştırma hatası verir; Expat ayrıştırıcısı da 2.4.1 sürümünden itibaren milyar kahkaha saldırısına karşı koruma sağlar. defusedxml paketi daha da ileri gider ve dahili ya da harici her türlü varlık bildirimi için EntitiesForbidden hatası verir.

Çözümleri keşfet

Sporda bilgisayarlı görü

Sporda bilgisayarlı görü

Ultralytics YOLO'nun oyuncu ve top takibi, performans analitiği, antrenörlük içgörüleri ve sporcu rehabilitasyonuyla spor alanında görsel yapay zekâyı nasıl güçlendirdiğini keşfet.
Daha fazla bilgi edin
Hava görüntüleri için bilgisayarlı görü

Hava görüntüleri için bilgisayarlı görü

İHA ve hava görüntülerini Ultralytics YOLO ile tarım, su ürünleri yetiştiriciliği, koruma çalışmaları ve jeo-uzamsal analiz için gerçek zamanlı içgörülere dönüştür.
Daha fazla bilgi edin
Havacılıkta bilgisayarlı görü

Havacılıkta bilgisayarlı görü

Uçak denetimi, pistteki yabancı madde tespiti, havaalanı yer operasyonları ve kompozit malzeme kusurlarının tespiti için Ultralytics YOLO ile havacılık ve uzay sektöründe bilgisayarlı görü uygula.
Daha fazla bilgi edin
Güvenlikte bilgisayarlı görü

Güvenlikte bilgisayarlı görü

Ultralytics YOLO modelleriyle her sahayı koru. Görsel yapay zekâ; çevre izleme, tehdit tespiti, plaka tanıma ve iş yeri güvenliğini destekler.
Daha fazla bilgi edin
Robotikte bilgisayarlı görü

Robotikte bilgisayarlı görü

Ultralytics YOLO modelleriyle daha akıllı makinelere güç ver. Robotikte görsel yapay zekâ; otonom navigasyonu, algılamayı, nesne takibini ve gerçek zamanlı kontrolü destekler.
Daha fazla bilgi edin
Lojistikte bilgisayarlı görü

Lojistikte bilgisayarlı görü

Ultralytics YOLO modelleriyle lojistiği kolaylaştır. Görüntü yapay zekâsı; paket denetimini, ayrıştırmayı, araç takibini ve gerçek zamanlı depo güvenliği izlemeyi mümkün kılar.
Daha fazla bilgi edin
Perakendede bilgisayarlı görü

Perakendede bilgisayarlı görü

Ultralytics YOLO modelleriyle perakendeyi yeniden tasarla. Görüntü yapay zekâsı; envanter takibini, raf izlemeyi, kuyruk yönetimini ve daha kapsamlı müşteri analizlerini mümkün kılar.
Daha fazla bilgi edin
Sağlık hizmetlerinde bilgisayarlı görü

Sağlık hizmetlerinde bilgisayarlı görü

Ultralytics YOLO modelleriyle sağlık çözümleri geliştir. Sağlık hizmetlerinde görüntü yapay zekâsı; daha hızlı tıbbi görüntüleme, daha akıllı tanı ve hasta takibini mümkün kılar.
Daha fazla bilgi edin
Üretimde bilgisayarlı görü

Üretimde bilgisayarlı görü

Ultralytics YOLO modelleriyle üretimi optimize et. Görsel yapay zekâ; kalite kontrolünü, kusur tespitini, kişisel koruyucu donanım uyumunu ve montaj hattı otomasyonunu destekler.
Daha fazla bilgi edin
Otomotivde bilgisayarlı görü

Otomotivde bilgisayarlı görü

Ultralytics YOLO modelleriyle otomotivde bilgisayarlı görüden yararlan. Görsel yapay zekâ; daha akıllı yollar için yol güvenliğini, sürüş desteğini ve araç otomasyonunu ileri taşır.
Daha fazla bilgi edin
Tarımda bilgisayarlı görü

Tarımda bilgisayarlı görü

Ultralytics YOLO modelleriyle akıllı tarıma görüntü yapay zekâsı kazandır. Daha yüksek ve akıllı verim için mahsul izleme, hayvan takibi ve hassas tarımı destekle.
Daha fazla bilgi edin

Geleceğin yapay zekasını birlikte inşa edelim!

Makine öğreniminin geleceğine yolculuğuna başla