Ultralytics Açık Kaynak Projelerine Katkıda Bulunmak
Hoş geldin! Ultralytics açık kaynak projelerimize katkıda bulunmayı düşünmenden büyük heyecan duyuyoruz. Katılımın sadece depolarımızın kalitesini artırmaya yardımcı olmakla kalmaz, aynı zamanda tüm bilgisayarlı görü topluluğuna da fayda sağlar. Bu rehber, başlamana yardımcı olacak net yönergeler ve en iyi uygulamaları sunar.
Watch: How to Contribute to Ultralytics Repository | Ultralytics Models, Datasets and Documentation 🚀
🤝 Davranış Kuralları
Herkes için kapsayıcı ve sıcak bir ortam sağlamak amacıyla, tüm katkıda bulunanların Davranış Kurallarımıza uyması zorunludur. Saygı, nezaket ve profesyonellik, topluluğumuzun temelinde yer alır.
🚀 Pull Request'ler Aracılığıyla Katkıda Bulunma
Pull request (PR) şeklindeki katkılarınızı büyük bir memnuniyetle karşılıyoruz. İnceleme sürecini mümkün olduğunca sorunsuz hale getirmek için lütfen şu adımları izle:
- Depoyu çatallayın (Fork): İlgili Ultralytics deposunu (örneğin, ultralytics/ultralytics) GitHub hesabına çatallayarak başla.
- Bir dal (branch) oluştur: Çatalladığın depoda, değişikliklerini yansıtan net ve açıklayıcı bir ada sahip yeni bir dal oluştur (örneğin,
fix-issue-123,add-feature-xyz). - Değişikliklerini yap: İyileştirmelerini veya düzeltmelerini uygula. Kodunun projenin stil rehberine uyduğundan ve yeni hatalar veya uyarılar içermediğinden emin ol.
- Değişikliklerini test et: Göndermeden önce, beklediğin gibi çalıştıklarını ve gerilemelere (regressions) neden olmadıklarını doğrulamak için değişikliklerini yerel olarak test et. Yeni bir işlevsellik ekliyorsan testler ekle.
- Değişikliklerini commit et: Değişikliklerini kısa ve açıklayıcı commit mesajlarıyla kaydet. Eğer değişikliklerin belirli bir sorunu ele alıyorsa, sorun numarasını dahil et (örneğin,
Fix #123: Corrected calculation error.). - Bir pull request oluştur: Dalından orijinal Ultralytics deposunun
maindalına bir pull request gönder. Değişikliklerinin amacını ve kapsamını açıklayan net bir başlık ve detaylı bir açıklama ekle.
📝 CLA İmzalama
Pull request'ini birleştirebilmemiz için, Katkıda Bulunan Lisans Anlaşmamızı (CLA) imzalaman gerekir. Bu yasal anlaşma, katkılarının uygun şekilde lisanslanmasını sağlar ve projenin AGPL-3.0 lisansı 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 şu ifadeyi içeren bir yorum eklemen yeterlidir:
I have read the CLA Document and I sign the CLA
✍️ Google Stili Docstring'ler
Yeni işlevler veya sınıflar eklerken, net ve standartlaştırılmış dokümantasyon için Google stili docstring'leri dahil et. Hem girdi hem de çıktı types değerlerini her zaman parantez içinde belirt (örneğin, (bool), (np.ndarray)).
Bu örnek, standart Google stili docstring formatını gösterir. Maksimum okunabilirlik için işlev 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'ler, birleştirilmeden önce GitHub Actions Sürekli Entegrasyon (CI) testlerini geçmelidir. Bu testler, değişikliklerinin 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 ortaya çıkan sorunları gider.
✨ Kod Katkıları İçin En İyi Uygulamalar
Ultralytics projelerine kod katkısında bulunurken şu en iyi uygulamaları aklında tut:
- 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, odaklanmış değişiklikler yap: Büyük ölçekli değişiklikler yerine hedeflenmiş modifikasyonlara odaklan.
- Mümkünse 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, stil tutarlılığını korumana yardımcı olabilir.
- Uygun testler ekle: Yeni özelliklerin beklendiği gibi çalıştığından emin olmak için testler dahil et.
👀 Pull Request'leri İ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 incele: Değişiklikleri yansıtmak için dokümantasyonun güncellendiğinden emin ol.
- Performans etkisini değerlendir: Değişikliklerin performansı nasıl etkileyebileceğini düşün.
- CI testlerini doğrula: Tüm Sürekli Entegrasyon testlerinin geçtiğini onayla.
- Yapıcı geri bildirim sağla: Herhangi bir sorun veya endişe hakkında belirli, net geri bildirimler sun.
- Emeği takdir et: Olumlu bir işbirliği ortamı sürdürmek için yazarın çalışmasını kabul et.
🐞 Hata Bildirme
Projelerimizin kalitesini ve güvenilirliğini artırmamıza yardımcı oldukları için hata raporlarına büyük değer veriyoruz. GitHub Issues aracılığıyla bir hata bildirirken:
- Mevcut sorunları kontrol et: Hatanın daha önce bildirilip bildirilmediğini görmek için önce arama yap.
- Minimum Yeniden Üretilebilir Örnek sağla: Sorunu tutarlı bir şekilde yeniden üreten küçük, kendi kendine yeten bir kod parçacığı oluştur. Bu, verimli hata ayıklama için çok önemlidir.
- Ortamı tanımla: İşletim sistemini, Python sürümünü, ilgili kütüphane sürümlerini (örneğin,
torch,ultralytics) ve donanımını (CPU/GPU) belirt. - Beklenen ile gerçekleşen davranışı açıkla: Nelerin olmasını beklediğini ve aslında neler olduğunu açıkça belirt. Herhangi bir hata mesajı veya traceback ekle.
📜 Lisans
Ultralytics, depoları için GNU Affero General Public License v3.0 (AGPL-3.0) kullanır. Bu lisans, yazılım geliştirmede açıklığı, şeffaflığı ve işbirlikçi gelişimi destekler. 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 teşvik eder.
Tüm katkıda bulunanları, Ultralytics açık kaynak topluluğuna etkili ve etik bir şekilde katkıda bulunabilmeleri için AGPL-3.0 lisansının şartlarına aşina olmaya teşvik ediyoruz.
🌍 YOLO Projenizi AGPL-3.0 Altında Açık Kaynak Yapma
Projenizde Ultralytics YOLO modellerini veya kodunu mu kullanıyorsun? AGPL-3.0 lisansı, tüm türev çalışmalarının da AGPL-3.0 altında açık kaynaklı olmasını gerektirir. Bu, açık kaynak temelleri üzerine inşa edilen modifikasyonların 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ı garanti eder.
- Yasal Gereklilik: AGPL-3.0 lisanslı kod kullanmak, projenizi bu şartlara bağlar.
- İşbirliğini Geliştirir: Paylaşımı ve şeffaflığı teşvik eder.
Projeni açık kaynak yapmak istemiyorsan, bir Kurumsal Lisans almayı düşün.
AGPL-3.0 ile Nasıl Uyumluluk Sağlanır
Uyumluluk, projenizin tüm ilgili kaynak kodunu AGPL-3.0 lisansı altında herkese açık hale getirmek anlamına gelir.
-
Başlangıç Noktanı Seç:
- Ultralytics YOLO'yu çatallayın: Yakından temel alıyorsan doğrudan Ultralytics YOLO deposunu çatalla.
- Ultralytics Şablonunu Kullan: YOLO'yu entegre eden temiz, modüler bir kurulum için Ultralytics şablon deposu ile başla.
-
Projeni Lisansla:
- Add a
LICENSEfile containing the full text of the AGPL-3.0 license. - Her kaynak dosyanın en üstüne lisansı belirten bir bildirim ekle.
- Add a
-
Kaynak Kodunu Yayınla:
- Tüm projenin kaynak kodunu herkese erişilebilir hale getir (örneğin, GitHub'da). Bu şunları içerir:
- YOLO modelini veya kodunu içeren daha büyük uygulama veya sistemin tamamı.
- 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 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ğin tüm üçüncü taraf kütüphaneler.
- Çalıştırmak/yeniden eğitmek için gerekliyse ve yeniden dağıtılabilir ise Eğitim verileri.
- Tüm projenin kaynak kodunu herkese erişilebilir hale getir (örneğin, GitHub'da). Bu şunları içerir:
-
Net Bir Şekilde Belgele:
- Projenin AGPL-3.0 altında lisanslandığını belirtmek için
README.mddosyanı güncelle. - Projenin kaynak koddan nasıl kurulacağına, oluşturulacağına ve çalıştırılacağına dair net talimatlar ekle.
- Orijinal depoya bağlantı 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.
- Projenin AGPL-3.0 altında lisanslandığını belirtmek için
Örnek Depo Yapısı
Pratik bir örnek yapı için Ultralytics Şablon Deposuna başvur:
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.ymlBu yönergeleri izleyerek, Ultralytics YOLO gibi güçlü araçları mümkün kılan açık kaynak ekosistemini destekleyerek AGPL-3.0 ile uyumluluğu sağlarsın.
Sonuç
Ultralytics açık kaynak YOLO projelerine katkıda bulunmaya gösterdiğin ilgi için teşekkürler. Katılımın, yazılımımızın geleceğini şekillendirmede ve canlı bir inovasyon ve işbirliği topluluğu oluşturmada çok önemlidir. Kod geliştirmek, hataları bildirmek veya yeni özellikler önermek olsun, katkıların paha biçilmezdir.
Fikirlerinin hayat bulduğunu görmekten heyecan duyuyoruz ve nesne algılama teknolojisini ilerletme konusundaki kararlılığını takdir ediyoruz. Birlikte, bu heyecan verici açık kaynak yolculuğunda 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ı iyileştirerek tüm topluluk için daha sağlam ve zengin özellikli hale getirir. Katkılar, kod iyileştirmeleri, hata düzeltmeleri, dokümantasyon geliştirmeleri ve yeni özellik uygulamalarını içerebilir. Ayrıca, katkıda bulunmak, alanındaki diğer yetenekli geliştiriciler ve uzmanlarla işbirliği yapmanı sağlayarak kendi becerilerini ve itibarını artırır. Nasıl başlayacağınla ilgili detaylar için Pull Request'ler Aracılığıyla Katkıda Bulunma bölümüne bak.
Ultralytics YOLO için Katkıda Bulunan Lisans Anlaşmasını (CLA) nasıl imzalarım?
Katkıda Bulunan Lisans Anlaşmasını (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ğlayarak açık kaynak projesinin yasal bütünlüğünü korur. Pull request'ine şu ifadeyi içeren bir yorum ekle:
I have read the CLA Document and I sign the CLA
Daha fazla bilgi için CLA İmzalama bölümüne bak.
Google stili docstring'ler nedir ve Ultralytics YOLO katkıları için neden gereklidir?
Google stili docstring'ler, işlevler ve sınıflar için net, özlü dokümantasyon sağlayarak kodun okunabilirliğini ve sürdürülebilirliğini artırır. Bu docstring'ler, belirli biçimlendirme kurallarıyla işlevin amacını, argümanlarını ve dönüş değerlerini özetler. Ultralytics YOLO'ya katkıda bulunurken, Google stili docstring'leri takip etmek, eklemelerinin iyi belgelenmiş ve kolayca anlaşılabilir olmasını sağlar. Örnekler ve yönergeler için Google Stili Docstring'ler bölümünü ziyaret et.
Değişikliklerimin GitHub Actions CI testlerinden geçtiğinden nasıl emin olabilirim?
Bir pull request birleştirilmeden önce 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 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 bak.
Ultralytics YOLO depolarında nasıl hata bildirebilirim?
Bir hata bildirmek için hata raporunla birlikte net ve öz bir Minimum Reproducible Example sağla. Bu, geliştiricilerin sorunu hızlıca tanımlamasına ve düzeltmesine yardımcı olur. Örneğinin sorunu tekrarlamak için minimal ancak yeterli olduğundan emin ol. Hata bildirme ile ilgili daha ayrıntılı adımlar için Reporting Bugs bölümüne başvur.
Ultralytics YOLO'yu kendi projemde kullanırsam AGPL-3.0 lisansı ne anlama gelir?
Projende Ultralytics YOLO kodu veya modelleri (AGPL-3.0 kapsamında lisanslı) kullanırsan, AGPL-3.0 lisansı tüm projenin (türev çalışmanın) de AGPL-3.0 altında lisanslanmasını ve tüm kaynak kodunun kamuya açık hale getirilmesini şart koşar. Bu, yazılımın açık kaynak doğasının türevlerinde korunmasını sağlar. Bu gereksinimleri karşılayamıyorsan bir Enterprise License edinmen gerekir. Ayrıntılar için Open-Sourcing Your Project bölümüne bak.
