YOLO Vision 2026:

Ultralytics Açık Kaynak Projelerine Katkıda Bulunma#

Hoş geldin! Ultralytics açık kaynak projelerimize katkıda bulunmayı düşündüğün için çok memnunuz. Katılımın, yalnızca depolarımızın kalitesini artırmaya yardımcı olmakla kalmaz, aynı zamanda tüm computer vision topluluğuna da fayda sağlar. Bu kılavuz, başlamana yardımcı olacak net yönergeler ve en iyi uygulamaları sunar.

Ultralytics open-source contributors



Watch: How to Contribute to Ultralytics Repository | Ultralytics Models, Datasets and Documentation 🚀

⚔️ Davranış Kuralları#

Herkes için samimi ve kapsayıcı bir ortam sağlamak amacıyla tüm katkıda bulunanların Code of Conduct belgesine uyması gerekir. Saygı, nezaket ve profesyonellik, topluluğumuzun merkezinde yer alır.

🚀 Pull Request'ler Aracılığıyla Katkıda Bulunma#

pull requests (PRs) biçimindeki katkıları büyük bir memnuniyetle karşılıyoruz. İnceleme sürecini olabildiğince pürüzsüz hale getirmek için lütfen şu adımları izle:

  1. Fork the repository: İlgili Ultralytics deposunu (ör. ultralytics/ultralytics) GitHub hesabına fork'layarak başla.
  2. Create a branch: Fork'ladığın depoda, yaptığın değişiklikleri yansıtan açık ve açıklayıcı bir ada sahip yeni bir dal (branch) oluştur (ör. fix-issue-123, add-feature-xyz).
  3. Değişikliklerini yap: İyileştirmelerini veya düzeltmelerini uygula. Kodunun projenin stil yönergelerine uyduğundan ve yeni hata veya uyarılar içermediğinden emin ol.
  4. Değişikliklerini test et: Göndermeden önce, değişikliklerinin beklendiği gibi çalıştığını ve regressions yaratmadığını doğrulamak için bunları yerel olarak test et. Yeni bir işlevsellik ekliyorsan testler ekle.
  5. Commit your changes: Değişikliklerini kısa ve açıklayıcı commit mesajlarıyla kaydet. Değişikliklerin belirli bir sorunu ele alıyorsa, sorun numarasını dahil et (ör. Fix #123: Corrected calculation error.).
  6. Create a pull request: Kendi dalından orijinal Ultralytics deposunun main dalına bir pull request gönder. Değişikliklerinin amacını ve kapsamını açıklayan net bir başlık ve ayrıntılı bir açıklama sun.

📝 CLA İmzalama#

Pull request'ini merge etmeden önce Contributor License Agreement (CLA) belgemizi imzalaman gerekir. Bu yasal sözleşme, katkılarının uygun şekilde lisanslanmasını sağlayarak projenin AGPL-3.0 license altında dağıtılmaya devam etmesine olanak tanır.

Pull request'ini gönderdikten sonra, CLA botu imzalama sürecinde sana rehberlik edecektir. CLA'yı imzalamak için PR'ına sadece şu yorumu ekle:

I have read the CLA Document and I sign the CLA

✍️ Google Stili Docstring'ler#

Yeni fonksiyonlar veya sınıflar eklerken net ve standartlaştırılmış belgelendirme için Google-style docstrings ekle. Hem girdi hem de çıktı types değerlerini her zaman parantez içine al (ör. (bool), (np.ndarray)).

Docstring Örnekleri

Bu örnek, standart Google stili docstring formatını gösterir. Maksimum okunabilirlik için fonksiyon açıklamasını, argümanları, dönüş değerini ve örnekleri nasıl net bir şekilde ayırdığına dikkat et.

def example_function(arg1, arg2=4):
    """Example function demonstrating Google-style docstrings.

    Args:
        arg1 (int): The first argument.
        arg2 (int): The second argument.

    Returns:
        (bool): True if arguments are equal, False otherwise.

    Examples:
        >>> example_function(4, 4)  # True
        >>> example_function(1, 2)  # False
    """
    return arg1 == arg2

✅ GitHub Actions CI Testleri#

Tüm pull request'lerin merge edilebilmesi için GitHub Actions Continuous Integration (CI) testlerini geçmesi gerekir. Bu testler; kod biçimlendirme kontrollerini (linting), birim testlerini ve değişikliklerinin projenin kalite standartlarını karşıladığından emin olmak için diğer kontrolleri içerir. CI çıktısını incele ve ortaya çıkan sorunları gider.

✨ Kod Katkıları için En İyi Uygulamalar#

Ultralytics projelerine kod katkısında bulunurken şu en iyi uygulamaları aklında bulundur:

  • Kod tekrarından kaçın: Mümkün olan her yerde mevcut kodu yeniden kullan ve gereksiz argümanları en aza indir.
  • Daha küçük ve odaklanmış değişiklikler yap: Büyük ölçekli değişiklikler yerine hedefe yönelik modifikasyonlara odaklan.
  • Mümkün olduğunda basitleştir: Kodu basitleştirme veya gereksiz parçaları kaldırma fırsatlarını ara.
  • Uyumluluğu düşün: Değişiklik yapmadan önce, bunların Ultralytics kullanan mevcut kodu bozup bozmayacağını değerlendir.
  • Tutarlı biçimlendirme kullan: Ruff Formatter gibi araçlar biçimsel tutarlılığı korumaya yardımcı olabilir.
  • Uygun testler ekle: Beklendiği gibi çalıştıklarından emin olmak için yeni özellikler için tests ekle.

👀 Pull Request İnceleme#

Pull request'leri incelemek, katkıda bulunmanın bir diğer değerli yoludur. PR'ları incelerken:

  • Birim testlerini kontrol et: PR'ın yeni özellikler veya değişiklikler için testler içerdiğini doğrula.
  • Dokümantasyon güncellemelerini gözden geçir: Değişiklikleri yansıtacak şekilde documentation güncellendiğinden emin ol.
  • Performans etkisini değerlendir: Değişikliklerin performance üzerinde nasıl bir etki yaratabileceğini göz önünde bulundur.
  • CI testlerini doğrula: Tüm Continuous Integration tests testlerinin geçtiğini onayla.
  • Yapıcı geri bildirim sağla: Herhangi bir sorun veya endişe hakkında belirli, net geri bildirimler sun.
  • Çabayı takdir et: Olumlu bir işbirliği atmosferini korumak için yazarın çalışmasını takdir et.

🐞 Hata Bildirme#

Hata raporları, projelerimizin kalitesini ve güvenilirliğini artırmamıza yardımcı olduğu için bizim için çok değerlidir. GitHub Issues aracılığıyla bir hata bildirirken:

  • Mevcut sorunları kontrol et: Hatanın zaten bildirilip bildirilmediğini görmek için önce arama yap.
  • Minimum Reproducible Example sağla: Sorunu tutarlı bir şekilde yeniden üreten küçük, kendi kendine yeten bir kod parçacığı oluştur. Bu, verimli hata ayıklama (debugging) için çok önemlidir.
  • Ortamı açıkla: İşletim sistemini, Python sürümünü, ilgili kütüphane sürümlerini (ör. torch, ultralytics) ve donanımı (CPU/GPU) belirt.
  • Beklenen ve gerçek davranışları açıkla: Ne olmasını beklediğini ve gerçekte ne olduğunu net bir şekilde ifade et. Hata mesajlarını veya traceback'leri dahil et.

📜 Lisans#

Ultralytics, depoları için GNU Affero General Public License v3.0 (AGPL-3.0) lisansını kullanır. Bu lisans, yazılım geliştirme sürecinde openness, transparency ve collaborative improvement süreçlerini teşvik eder. Tüm kullanıcıların yazılımı kullanma, değiştirme ve paylaşma özgürlüğüne sahip olmasını sağlayarak güçlü bir iş birliği ve inovasyon topluluğunu destekler.

Tüm katkıda bulunanları, Ultralytics açık kaynak topluluğuna etkili ve etik bir şekilde katkıda bulunabilmeleri için AGPL-3.0 license şartlarını incelemeye teşvik ediyoruz.

🌍 YOLO Projeni AGPL-3.0 Altında Açık Kaynak Yapma#

Projede Ultralytics YOLO modelleri veya kodları mı kullanıyorsun? AGPL-3.0 license, türev çalışman olan projenin tamamının da AGPL-3.0 altında açık kaynaklı olmasını gerektirir. Bu, açık kaynak temelleri üzerine inşa edilen değişikliklerin ve daha büyük projelerin açık kalmasını sağlar.

AGPL-3.0 Uyumluluğu Neden Önemlidir#

  • Yazılımı Açık Tutar: İyileştirmelerin ve türev çalışmaların topluluğa fayda sağlamasını sağlar.
  • Yasal Zorunluluk: AGPL-3.0 lisanslı kod kullanmak, projenin bu şartlara bağlı kalmasını gerektirir.
  • İşbirliğini Geliştirir: Paylaşımı ve şeffaflığı teşvik eder.

Projeni açık kaynaklı yapmayı tercih etmiyorsan, bir Enterprise License almayı değerlendir.

AGPL-3.0 ile Nasıl Uyumlu Olunur#

Uyumlu olmak, projenin tam karşılık gelen kaynak kodunu AGPL-3.0 lisansı altında herkese açık hale getirmek demektir.

  1. Başlangıç Noktanı Seç:

  2. Projeni Lisansla:

    • AGPL-3.0 lisansı tam metnini içeren bir LICENSE dosyası ekle.
    • Her kaynak dosyasının en üstüne lisansı belirten bir not ekle.
  3. Kaynak Kodunu Yayınla:

    • Tüm projenin kaynak kodunu herkese açık hale getir (örneğin, GitHub üzerinde). Buna şunlar dahildir:
      • YOLO modelini veya kodunu içeren daha büyük uygulama veya sistem.
      • Orijinal Ultralytics YOLO kodunda yapılan tüm değişiklikler.
      • Eğitim, doğrulama ve çıkarım için betikler.
      • Değiştirilmişse veya fine-tune edilmişse Model weights.
      • Configuration files, ortam kurulumları (requirements.txt, Dockerfiles).
      • Bir web application parçasısıysa backend ve frontend kodu.
      • Değiştirdiğin herhangi bir third-party libraries.
      • Çalıştırmak/yeniden eğitmek için gerekliyse ve yeniden dağıtılabilir durumdaysa Training data.
  4. Net Bir Şekilde Belgele:

    • Projenin AGPL-3.0 altında lisanslandığını belirtmek için README.md dosyanı güncelle.
    • Projeyi kaynak kodundan kurmak, oluşturmak ve çalıştırmakla ilgili net talimatlar ekle.
    • original repository bağlantısını vererek Ultralytics YOLO'ya uygun şekilde atıfta bulun. Örnek:
      This project utilizes code from [Ultralytics YOLO](https://github.com/ultralytics/ultralytics), licensed under AGPL-3.0.

Örnek Depo Yapısı#

Pratik bir örnek yapı için Ultralytics Template Repository sayfasına göz at:

my-yolo-project/
│
├── LICENSE               # Full AGPL-3.0 license text
├── README.md             # Project description, setup, usage, license info & attribution
├── pyproject.toml        # Dependencies (or requirements.txt)
├── scripts/              # Training/inference scripts
│   └── train.py
├── src/                  # Your project's source code
│   ├── __init__.py
│   ├── data_loader.py
│   └── model_wrapper.py  # Code interacting with YOLO
├── tests/                # Unit/integration tests
├── configs/              # YAML/JSON config files
├── docker/               # Dockerfiles, if used
│   └── Dockerfile
└── .github/              # GitHub specific files (e.g., workflows for CI)
    └── workflows/
        └── ci.yml

Bu yönergeleri izleyerek, Ultralytics YOLO gibi güçlü araçları mümkün kılan açık kaynak ekosistemini destekleyerek AGPL-3.0 uyumluluğunu sağlarsın.

Sonuç#

Ultralytics open-source YOLO projelerine katkıda bulunma ilgin için teşekkür ederiz. Katılımın, yazılımımızın geleceğini şekillendirmede ve canlı bir inovasyon ve iş birliği topluluğu kurmada esastır. İster kod geliştiriyor, ister hata bildiriyor, ister yeni özellikler öneriyor ol, katkıların paha biçilemezdir.

Fikirlerinin hayata geçmesini görmekten heyecan duyuyor ve object detection teknolojisini ilerletmeye olan bağlılığın için teşekkür ediyoruz. Bu heyecan verici açık kaynak yolculuğunda birlikte büyümeye ve yenilik yapmaya devam edelim.

SSS#

Neden Ultralytics YOLO açık kaynak depolarına katkıda bulunmalıyım?#

Ultralytics YOLO açık kaynak depolarına katkıda bulunmak yazılımı geliştirerek tüm topluluk için daha güçlü ve özellik açısından zengin hale getirir. Katkılar; kod iyileştirmelerini, hata düzeltmelerini, dokümantasyon iyileştirmelerini ve yeni özellik uygulamalarını içerebilir. Ek olarak, katkıda bulunmak, alandaki diğer yetenekli geliştiriciler ve uzmanlarla iş birliği yapmana olanak tanıyarak kendi becerilerini ve itibarını artırır. Nasıl başlayacağın hakkında ayrıntılar için Contributing via Pull Requests bölümüne bakın.

Ultralytics YOLO için Katkıda Bulunan Lisans Sözleşmesini (CLA) nasıl imzalarım?#

Katkıda Bulunan Lisans Sözleşmesini (CLA) imzalamak için, pull request'ini gönderdikten sonra CLA botu tarafından sağlanan talimatları izle. Bu süreç, katkılarının AGPL-3.0 lisansı altında uygun şekilde lisanslanmasını sağlar ve açık kaynak projesinin yasal bütünlüğünü korur. Pull request'ine şu yorumu ekle:

I have read the CLA Document and I sign the CLA

Daha fazla bilgi için CLA Signing bölümüne göz at.

Google stili docstring'ler nelerdir ve Ultralytics YOLO katkıları için neden gereklidir?#

Google tarzı docstring'ler; fonksiyonlar ve sınıflar için net, kısa belgeler sağlayarak kodun okunabilirliğini ve sürdürülebilirliğini artırır. Bu docstring'ler; fonksiyonun amacını, argümanlarını ve dönüş değerlerini belirli biçimlendirme kurallarıyla özetler. Ultralytics YOLO'ya katkıda bulunurken Google tarzı docstring'leri takip etmek, eklemelerinin iyi belgelenmesini ve kolayca anlaşılmasını sağlar. Örnekler ve yönergeler için Google-Style Docstrings bölümünü ziyaret et.

Değişikliklerimin GitHub Actions CI testlerinden geçtiğinden nasıl emin olabilirim?#

Pull request'inin merge edilebilmesi için tüm GitHub Actions Continuous Integration (CI) testlerini geçmesi gerekir. Bu testler; kodun projenin kalite standartlarını karşıladığından emin olmak için linting, birim testleri ve diğer kontrolleri içerir. CI çıktısını incele ve tüm sorunları düzelt. CI süreci ve sorun giderme ipuçları hakkında ayrıntılı bilgi için GitHub Actions CI Tests bölümüne göz at.

Ultralytics YOLO depolarındaki bir hatayı nasıl bildirebilirim?#

Bir hata bildirmek için, hata raporunla birlikte açık ve kısa bir Minimum Reproducible Example sağla. Bu, geliştiricilerin sorunu hızlı bir şekilde belirleyip düzeltmesine yardımcı olur. Örneğinin sorunu çoğaltmak için yeterli ancak minimum düzeyde olduğundan emin ol. Hata bildirme hakkında daha ayrıntılı adımlar için Reporting Bugs bölümüne başvur.

Kendi projemde Ultralytics YOLO kullanırsam AGPL-3.0 lisansı ne anlama gelir?#

Projede (AGPL-3.0 altında lisanslanan) Ultralytics YOLO kodunu veya modellerini kullanıyorsan, AGPL-3.0 lisansı projenin tamamının (türev çalışmanın) da AGPL-3.0 altında lisanslanmasını ve eksiksiz kaynak kodunun herkese açık hale getirilmesini gerektirir. Bu, yazılımın açık kaynak doğasının türevleri boyunca korunmasını sağlar. Bu gereksinimleri karşılayamıyorsan, bir Enterprise License almalısın. Ayrıntılar için Open-Sourcing Your Project bölümüne bakın.

Yorumlar