Ultralytics Açık Kaynak Projelerine Katkıda Bulunma
Hoş geldiniz! Bize katkıda bulunmayı düşündüğünüz için çok heyecanlıyız Ultralytics açık kaynaklı projeler. Katılımınız yalnızca depolarımızın kalitesini artırmaya yardımcı olmakla kalmaz, aynı zamanda tüm bilgisayarla görme topluluğuna da fayda sağlar. Bu kılavuz, başlamanıza yardımcı olacak açık yönergeler ve en iyi uygulamaları sunmaktadır.
İzle: Ultralytics Deposuna Nasıl Katkıda Bulunulur | Ultralytics Modelleri, Veri Kümeleri ve Dokümantasyon 🚀
🤝 Davranış Kuralları
Herkes için sıcak ve kapsayıcı bir ortam sağlamak için, tüm katılımcılar Davranış Kurallarımıza uymalıdır. Saygı, nezaket ve profesyonellik topluluğumuzun merkezinde yer alır.
🚀 Çekme İstekleri ile Katkıda Bulunma
Çekme istekleri (PR'ler) biçimindeki katkıları büyük ölçüde takdir ediyoruz. İnceleme sürecini mümkün olduğunca sorunsuz hale getirmek için lütfen aşağıdaki adımları izleyin:
- Depoyu çatallayın: İlgili Ultralytics deposunu (ör. ultralytics) GitHub hesabınıza çatallayarak başlayın.
- Bir şube oluşturun: Çatallanmış deponuzda değişikliklerinizi yansıtan açık ve tanımlayıcı bir adla yeni bir dal oluşturun (örn,
fix-issue-123
,add-feature-xyz
). - Değişikliklerinizi yapın: İyileştirmelerinizi veya düzeltmelerinizi uygulayın. Kodunuzun projenin stil yönergelerine uygun olduğundan ve yeni hatalar veya uyarılar içermediğinden emin olun.
- Değişikliklerinizi test edin: Göndermeden önce, beklendiği gibi çalıştıklarını ve gerilemeye neden olmadıklarını doğrulamak için değişikliklerinizi yerel olarak test edin. Yeni işlevler ekliyorsanız testler ekleyin.
- Değişikliklerinizi işleyin: Değişikliklerinizi kısa ve açıklayıcı commit mesajları ile commit edin. Değişiklikleriniz belirli bir sorunu ele alıyorsa, sorun numarasını ekleyin (örn,
Fix #123: Corrected calculation error.
). - Bir çekme isteği oluşturun: Şubenizden şu adrese bir çekme isteği gönderin
main
orijinal Ultralytics deposunun dalı. Değişikliklerinizin amacını ve kapsamını açıklayan net bir başlık ve ayrıntılı bir açıklama sağlayın.
📝 CLA İmzalama
Çekme isteğinizi birleştirmeden önce, Katılımcı Lisans Sözleşmemizi (CLA) imzalamanız gerekir. Bu yasal anlaşma, katkılarınızın uygun şekilde lisanslanmasını sağlayarak projenin AGPL-3.0 lisansı altında dağıtılmaya devam etmesine izin verir.
Çekme isteğinizi gönderdikten sonra, CLA botu imzalama işlemi boyunca size rehberlik edecektir. CLA'yı imzalamak için PR'nize şunu belirten bir yorum eklemeniz yeterlidir:
I have read the CLA Document and I sign the CLA
✍️ Google Docstrings
Yeni fonksiyonlar veya sınıflar eklerken Google doküman dizileri açık, standartlaştırılmış dokümantasyon için. Her zaman hem girdiyi hem de çıktıyı içine alın types
parantez içinde (örn, (bool)
, (np.ndarray)
).
Örnek Doküman Dizeleri
Bu örnek, standart Google docstring formatını göstermektedir. 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 edin.
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
Bu örnek, adlandırılmış geri dönüş değişkenlerinin nasıl belgeleneceğini göstermektedir. Adlandırılmış geri dönüşleri kullanmak, özellikle karmaşık fonksiyonlar için kodunuzun daha fazla belgelenmesini ve daha kolay anlaşılmasını sağlayabilir.
def example_function(arg1, arg2=4):
"""
Example function demonstrating Google-style docstrings.
Args:
arg1 (int): The first argument.
arg2 (int): The second argument.
Returns:
equals (bool): True if arguments are equal, False otherwise.
Examples:
>>> example_function(4, 4) # True
"""
equals = arg1 == arg2
return equals
Bu örnek, birden fazla değer döndüren fonksiyonların nasıl belgeleneceğini göstermektedir. Netlik için her bir geri dönüş değeri kendi türü ve açıklamasıyla ayrı ayrı belgelenmelidir.
def example_function(arg1, arg2=4):
"""
Example function demonstrating Google-style docstrings.
Args:
arg1 (int): The first argument.
arg2 (int): The second argument.
Returns:
equals (bool): True if arguments are equal, False otherwise.
added (int): Sum of both input arguments.
Examples:
>>> equals, added = example_function(2, 2) # True, 4
"""
equals = arg1 == arg2
added = arg1 + arg2
return equals, added
Not: Python birden fazla değeri bir tuple olarak döndürse de (örn, return masks, scores
), netlik ve daha iyi araç entegrasyonu için her zaman her değeri ayrı ayrı belgeleyin. Birden fazla değer döndüren fonksiyonları belgelendirirken:
✅ İyi - Her bir dönüş değerini ayrı ayrı belgeleyin:
Returns:
(np.ndarray): Predicted masks with shape HxWxN.
(list): Confidence scores for each instance.
Kötü - İç içe öğeler içeren bir tuple olarak belgelemeyin:
Returns:
(tuple): Tuple containing:
- (np.ndarray): Predicted masks with shape HxWxN.
- (list): Confidence scores for each instance.
Bu örnek, Google dokümanları Python tür ipuçlarıyla birleştirir. Tip ipuçlarını kullanırken, fonksiyon imzasında zaten belirtildiği için docstring argümanları bölümündeki tip bilgilerini atlayabilirsiniz.
def example_function(arg1: int, arg2: int = 4) -> bool:
"""
Example function demonstrating Google-style docstrings.
Args:
arg1: The first argument.
arg2: The second argument.
Returns:
True if arguments are equal, False otherwise.
Examples:
>>> example_function(1, 1) # True
"""
return arg1 == arg2
Daha küçük veya daha basit işlevler için tek satırlık bir doküman dizisi yeterli olabilir. Bunlar, büyük harfle başlayan ve nokta ile biten kısa ama eksiksiz cümleler olmalıdır.
def example_small_function(arg1: int, arg2: int = 4) -> bool:
"""Example function with a single-line docstring."""
return arg1 == arg2
✅ GitHub Eylemleri CI Testleri
Tüm çekme istekleri birleştirilmeden önce GitHub Actions Sürekli Entegrasyon (CI) testlerini geçmelidir. Bu testler, değişikliklerinizin projenin kalite standartlarını karşıladığından emin olmak için linting, birim testleri ve diğer kontrolleri içerir. CI çıktısını inceleyin ve ortaya çıkan sorunları ele alın.
✨ Kod Katkıları için En İyi Uygulamalar
Ultralytics projelerine kod eklerken, bu en iyi uygulamaları aklınızda bulundurun:
- Kod tekrarından kaçının: Mümkün olan her yerde mevcut kodu yeniden kullanın ve gereksiz argümanları en aza indirin.
- Daha küçük, odaklanmış değişiklikler yapın: Büyük ölçekli değişiklikler yerine hedeflenen değişikliklere odaklanın.
- Mümkün olduğunda basitleştirin: Kodu basitleştirmek veya gereksiz kısımları kaldırmak için fırsatlar arayın.
- Uyumluluğu düşünün: Değişiklik yapmadan önce, Ultralytics kullanan mevcut kodu bozup bozmayacağını düşünün.
- Tutarlı biçimlendirme kullanın: Ruff Formatter gibi araçlar biçimsel tutarlılığı korumaya yardımcı olabilir.
- Uygun testleri ekleyin: Beklendiği gibi çalıştıklarından emin olmak için yeni özellikler için testler ekleyin.
👀 Çekme İsteklerini İnceleme
Çekme isteklerini incelemek, katkıda bulunmanın bir başka değerli yoludur. PR'leri gözden geçirirken:
- Birim testlerini kontrol edin: PR'nin yeni özellikler veya değişiklikler için testler içerdiğini doğrulayın.
- Belge güncellemelerini gözden geçirin: Belgelerin değişiklikleri yansıtacak şekilde güncellendiğinden emin olun.
- Performans etkisini değerlendirin: Değişikliklerin performansı nasıl etkileyebileceğini düşünün.
- CI testlerini doğrulayın: Tüm Sürekli Entegrasyon testlerinin geçtiğini onaylayın.
- Yapıcı geri bildirim sağlayın: Herhangi bir sorun veya endişe hakkında spesifik, net geri bildirimler sunun.
- Çabayı takdir edin: Olumlu bir işbirliği ortamını sürdürmek için yazarın çalışmasını takdir edin.
🐞 Hataları Raporlama
Projelerimizin kalitesini ve güvenilirliğini artırmamıza yardımcı oldukları için hata raporlarına çok değer veriyoruz. GitHub Sorunları aracılığıyla bir hata bildirirken:
- Mevcut sorunları kontrol edin: Hatanın daha önce rapor edilip edilmediğini görmek için önce arama yapın.
- Minimum Tekrar Üretilebilir Örnek Sağlayın: Sorunu tutarlı bir şekilde yeniden üreten küçük, bağımsız bir kod parçacığı oluşturun. Bu, verimli hata ayıklama için çok önemlidir.
- Çevreyi tanımlayın: İşletim sisteminizi, Python sürümünüzü, ilgili kütüphane sürümlerini (örn,
torch
,ultralytics
) ve donanım (CPU/GPU). - Beklenen ve gerçekleşen davranışları açıklayın: Ne olmasını beklediğinizi ve gerçekte ne olduğunu açıkça belirtin. Hata mesajlarını veya geri dönüşleri ekleyin.
📜 Lisans
Ultralytics , depoları için GNU Affero Genel Kamu Lisansı v3.0 (AGPL-3.0) kullanır. Bu lisans, yazılım geliştirmede açıklığı, şeffaflığı ve işbirliğine dayalı iyileştirmeyi 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 yenilik topluluğunu teşvik eder.
Ultralytics açık kaynak topluluğuna etkili ve etik bir şekilde katkıda bulunmak için tüm katılımcıları AGPL-3.0 lisansının şartlarını öğrenmeye teşvik ediyoruz.
🌍 YOLO Projenizi AGPL-3.0 Kapsamında Açık Kaynak Kullanımı
Projenizde Ultralytics YOLO modellerini veya kodunu mu kullanıyorsunuz? AGPL-3.0 lisansı, tüm türev çalışmalarınızın da AGPL-3.0 altında açık kaynaklı olmasını gerektirir. Bu, açık kaynaklı temeller ü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 topluma fayda sağlamasını sağlar.
- Yasal Gereklilik: AGPL-3.0 lisanslı kodu kullanmak projenizi onun şartlarına bağlar.
- İşbirliğini Teşvik Eder: Paylaşımı ve şeffaflığı teşvik eder.
Projeniz için açık kaynak kullanmayı tercih etmiyorsanız, Kurumsal Lisans almayı düşünün.
AGPL-3.0 ile Nasıl Uyum Sağlanır?
Uyumluluk, projenizin ilgili kaynak kodunun tamamını AGPL-3.0 lisansı altında kamuya açık hale getirmek anlamına gelir.
-
Başlangıç Noktanızı Seçin:
- Ultralytics YOLO 'yu Çatalla: Ultralytics YOLO deposunu yakından oluşturuyorsanız doğrudan çatallayın.
- Ultralytics Şablonu kullanın: YOLO'yu entegre eden temiz, modüler bir kurulum için Ultralytics şablon deposu ile başlayın.
-
Projenizi Lisanslayın:
- Ekle
LICENSE
tam metnini içeren dosya AGPL-3.0 lisansı. - Her kaynak dosyanın en üstüne lisansı belirten bir bildirim ekleyin.
- Ekle
-
Kaynak Kodunuzu Yayınlayın:
- Kendin yap tüm projenin kaynak kodu kamuya açık olarak erişilebilir (örneğin GitHub'da). Buna şunlar dahildir:
- YOLO modelini veya kodunu içeren daha büyük bir uygulama veya sistemin tamamı.
- Orijinal Ultralytics YOLO kodunda yapılan tüm değişiklikler.
- Eğitim, doğrulama, çıkarım için komut dosyaları.
- Değiştirilmiş veya ince ayar yapılmışsa model ağırlıkları.
- Yapılandırma dosyaları, ortam kurulumları (
requirements.txt
,Dockerfiles
). - Bir web uygulamasının parçasıysa arka uç ve ön uç kodu.
- Değiştirdiğiniz tüm üçüncü taraf kütüphaneleri.
- Çalıştırmak/yeniden eğitmek için gerekliyse ve yeniden dağıtılabilirse eğitim verileri.
- Kendin yap tüm projenin kaynak kodu kamuya açık olarak erişilebilir (örneğin GitHub'da). Buna şunlar dahildir:
-
Belge Açıkça:
- Güncelleyin
README.md
projenin AGPL-3.0 altında lisanslandığını belirtmek için. - Projenizi kaynak kodundan nasıl kuracağınıza, derleyeceğinize ve çalıştıracağınıza dair açık talimatlar ekleyin.
- Ultralytics YOLO 'ya uygun şekilde atıfta bulunarak orijinal depo. Örnek:
This project utilizes code from [Ultralytics YOLO](https://github.com/ultralytics/ultralytics), licensed under AGPL-3.0.
- Güncelleyin
Örnek Depo Yapısı
Pratik bir örnek yapı için Ultralytics Şablon Deposuna bakın:
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 AGPL-3.0 ile uyumluluğu sağlar ve Ultralytics YOLO gibi güçlü araçları mümkün kılan açık kaynak ekosistemini desteklersiniz.
🎉 Sonuç
Katkıda bulunmaya gösterdiğiniz ilgi için teşekkür ederiz Ultralytics açık kaynaklı YOLO projeleri. Katılımınız, yazılımımızın geleceğini şekillendirmek ve canlı bir yenilik ve işbirliği topluluğu oluşturmak için çok önemlidir. İster kodu geliştiriyor, ister hataları bildiriyor veya yeni özellikler öneriyor olun, katkılarınız çok değerlidir.
Fikirlerinizin hayata geçtiğini görmekten heyecan duyuyor ve nesne algılama teknolojisini ilerletme konusundaki kararlılığınızı takdir ediyoruz. Birlikte, bu heyecan verici açık kaynak yolculuğunda büyümeye ve yenilikler yapmaya devam edelim. Mutlu kodlamalar! 🚀🌟
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 sağlam ve zengin özelliklere sahip hale getirir. Katkılar kod geliştirmeleri, hata düzeltmeleri, dokümantasyon iyileştirmeleri ve yeni özellik uygulamalarını içerebilir. Ek olarak, katkıda bulunmak diğer yetenekli geliştiriciler ve alandaki uzmanlarla işbirliği yapmanıza olanak tanıyarak kendi becerilerinizi ve itibarınızı artırır. Nasıl başlayacağınızla ilgili ayrıntılar için Çekme İstekleri ile Katkıda Bulunma bölümüne bakın.
Ultralytics YOLO için Katılımcı Lisans Sözleşmesini (CLA) nasıl imzalarım?
Katılımcı Lisans Sözleşmesini (CLA) imzalamak için, çekme isteğinizi gönderdikten sonra CLA botu tarafından sağlanan talimatları izleyin. Bu işlem, katkılarınızın AGPL-3.0 lisansı altında uygun şekilde lisanslanmasını ve açık kaynaklı projenin yasal bütünlüğünün korunmasını sağlar. Çekme isteğinize şunu belirten bir yorum ekleyin:
I have read the CLA Document and I sign the CLA
Daha fazla bilgi için CLA İmzalama bölümüne bakın.
Google tarzı dokümanlar nedir ve neden Ultralytics YOLO katkıları için gereklidir?
Google-tarzı dokümanlar, fonksiyonlar ve sınıflar için açık, özlü dokümantasyon sağlayarak kodun okunabilirliğini ve sürdürülebilirliğini geliştirir. Bu dokümanlar fonksiyonun amacını, argümanlarını ve geri dönüş değerlerini belirli biçimlendirme kurallarıyla özetler. Ultralytics YOLO adresine katkıda bulunurken Google tarzı dokümantasyonu takip etmek, eklemelerinizin iyi belgelenmesini ve kolayca anlaşılmasını sağlar. Örnekler ve yönergeler için Google-Style Docstrings bölümünü ziyaret edin.
Değişikliklerimin GitHub Actions CI testlerini geçtiğinden nasıl emin olabilirim?
Çekme isteğiniz birleştirilmeden önce tüm GitHub Actions Sürekli Entegrasyon (CI) testlerini geçmelidir. 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ı inceleyin ve sorunları düzeltin. CI süreci hakkında ayrıntılı bilgi ve sorun giderme ipuçları için GitHub Actions CI Testleri bölümüne bakın.
Ultralytics YOLO depolarındaki bir hatayı nasıl bildirebilirim?
Bir hatayı bildirmek için, hata raporunuzla birlikte açık ve özlü bir Minimum Tekrarlanabilir Örnek sağlayın. Bu, geliştiricilerin sorunu hızla tanımlamasına ve düzeltmesine yardımcı olur. Örneğinizin asgari düzeyde ancak sorunu tekrarlamak için yeterli olduğundan emin olun. Hata bildirme ile ilgili daha ayrıntılı adımlar için Hata Bildirme bölümüne bakın.
Ultralytics YOLO 'yu kendi projemde kullanırsam AGPL-3.0 lisansı ne anlama gelir?
Projenizde Ultralytics YOLO kodunu veya modellerini ( AGPL-3.0 altında lisanslanmıştır) kullanırsanız, AGPL-3.0 AGPL-3.0 AGPL-3.0 lisansı, tüm projenizin (türev çalışma) da AGPL-3.0 AGPL-3.0 altında lisanslanmasını ve tüm kaynak kodunun kamuya açık hale getirilmesini gerektirir. Bu, yazılımın açık kaynak niteliğinin türevleri boyunca korunmasını sağlar. Bu gereklilikleri karşılayamıyorsanız, Kurumsal Lisans almanız gerekir. Ayrıntılar için Projenizi Açık Kaynak Olarak Kullanma bölümüne bakın.