Contribuer aux projets Open-Source Ultralytics
Bienvenue ! Nous sommes ravis que vous envisagiez de contribuer à nos Ultralytics projets open-source. Votre participation contribue non seulement à améliorer la qualité de nos dépôts, mais profite également à l'ensemble de la communauté. Ce guide fournit des directives claires et des bonnes pratiques pour vous aider à démarrer.
Code de conduite
Afin de garantir un environnement accueillant et inclusif pour tous, tous les contributeurs doivent adhérer à notre code de conduite. Le respect, la gentillesse et le professionnalisme sont au cœur de notre communauté.
Contribuer via les Pull Requests
Nous apprécions grandement les contributions sous forme de demandes d'extension. Pour que le processus de révision soit le plus fluide possible, veuillez suivre les étapes suivantes :
-
Forgez le dépôt: Commencez par forker le dépôt Ultralytics YOLO sur votre compte GitHub.
-
Créer une branche: Créez une nouvelle branche dans votre dépôt forké avec un nom clair et descriptif qui reflète vos changements.
-
Apportez vos modifications : Assurez-vous que votre code respecte les règles de style du projet et qu'il n'introduit pas de nouvelles erreurs ou de nouveaux avertissements.
-
Testez vos modifications: Avant de soumettre vos modifications, testez-les localement pour vous assurer qu'elles fonctionnent comme prévu et qu'elles n'entraînent pas de nouveaux problèmes.
-
Validez vos modifications: Validez vos modifications à l'aide d'un message de validation concis et descriptif. Si vos modifications concernent un problème spécifique, indiquez le numéro du problème dans votre message de validation.
-
Créer une demande d'extraction: Soumettez une demande d'extraction depuis votre dépôt forké vers le dépôt principal Ultralytics YOLO . Fournissez une explication claire et détaillée de vos changements et de la manière dont ils améliorent le projet.
Signature de la CCT
Avant que nous puissions fusionner votre demande d'extraction, vous devez signer notre Accord de licence du contributeur (CLA). Cet accord juridique garantit que vos contributions sont correctement licenciées, ce qui permet au projet de continuer à être distribué sous la licence AGPL-3.0 .
Après avoir soumis votre demande d'extraction, le robot CLA vous guidera tout au long du processus de signature. Pour signer la CLA, il suffit d'ajouter un commentaire dans votre PR indiquant :
Google-Docstrings de style
Lorsque vous ajoutez de nouvelles fonctions ou classes, veuillez inclure des documents de type Google. Ces docstrings fournissent une documentation claire et standardisée qui aide les autres développeurs à comprendre et à maintenir votre code.
Exemples de chaînes de documents
Cet exemple illustre une chaîne de documents de type Google. Assurez-vous que les entrées et les sorties types
sont toujours placées entre parenthèses, par exemple, (bool)
.
def example_function(arg1, arg2=4):
"""
Example function demonstrating Google-style docstrings.
Args:
arg1 (int): The first argument.
arg2 (int): The second argument, with a default value of 4.
Returns:
(bool): True if successful, False otherwise.
Examples:
>>> result = example_function(1, 2) # returns False
"""
if arg1 == arg2:
return True
return False
Cet exemple inclut à la fois une docstring de type Google et des indications de type pour les arguments et les retours, bien que l'utilisation de l'un ou l'autre indépendamment soit également acceptable.
def example_function(arg1: int, arg2: int = 4) -> bool:
"""
Example function demonstrating Google-style docstrings.
Args:
arg1: The first argument.
arg2: The second argument, with a default value of 4.
Returns:
True if successful, False otherwise.
Examples:
>>> result = example_function(1, 2) # returns False
"""
if arg1 == arg2:
return True
return False
Pour les fonctions plus petites ou plus simples, une docstring d'une seule ligne peut suffire. La docstring doit utiliser trois guillemets, être une phrase complète, commencer par une majuscule et se terminer par un point.
Actions GitHub Tests CI
Toutes les demandes d'extraction doivent passer les tests d'intégration continue (CI) des actions GitHub avant d'être fusionnées. Ces tests comprennent le linting, les tests unitaires et d'autres vérifications pour s'assurer que vos changements respectent les normes de qualité du projet. Examinez les résultats de l'intégration continue et résolvez les problèmes éventuels.
Signaler des bogues
Nous accordons une grande importance aux rapports de bogues, car ils nous aident à maintenir la qualité de nos projets. Lorsque vous signalez un bogue, veuillez fournir un exemple minimum reproductible, c'est-à -direun exemple de code simple et clair qui reproduit le problème de manière cohérente. Cela nous permet d'identifier et de résoudre rapidement le problème.
Licence
Ultralytics utilise la licence publique générale GNU Affero v3.0 (AGPL-3.0 ) pour ses dépôts. Cette licence promeut l'ouverture, la transparence et l'amélioration collaborative dans le développement de logiciels. Elle garantit que tous les utilisateurs ont la liberté d'utiliser, de modifier et de partager le logiciel, ce qui favorise une forte communauté de collaboration et d'innovation.
Nous encourageons tous les contributeurs à se familiariser avec les termes de la licence AGPL-3.0 afin de contribuer efficacement et éthiquement à la communauté open-source Ultralytics .
L'Open-Sourcing de vos projets avec YOLO et AGPL-3.0 Compliance
Si vous envisagez de développer et de publier votre propre projet en utilisant les modèles YOLO , la licence publique générale GNU Affero v3.0 (AGPL-3.0 ) garantit que tous les travaux dérivés restent ouverts et accessibles. Cette section fournit des conseils, notamment des étapes, des bonnes pratiques et des exigences, pour vous aider à mettre votre projet en open source tout en respectant la licence AGPL-3.0.
Options pour démarrer votre projet
Vous pouvez lancer votre projet en utilisant l'une de ces approches :
-
Fork du dépôt Ultralytics YOLO
Fork le dépôt officiel Ultralytics YOLO directement à partir de https://github.com/ultralytics/ ultralytics.- Utilisez cette option si vous prévoyez de construire directement sur la dernière implémentation de YOLO .
- Modifier le code forké selon les besoins tout en assurant la conformité avec AGPL-3.0.
-
Démarrer à partir du référentiel de modèles Ultralytics
Utilisez le référentiel de modèles Ultralytics disponible à l'adresse https://github.com/ultralytics/template.- Idéal pour démarrer un projet propre et modulaire avec les meilleures pratiques préconfigurées.
- Cette option constitue un point de départ léger pour les projets qui intègrent ou étendent les modèles YOLO .
Ce qu'il faut pour l'Open-Source
Pour vous conformer à AGPL-3.0, vous devez mettre les éléments suivants de votre projet en libre accès :
-
Le code source de l'ensemble de votre projet:
- Inclure tout le code du projet plus vaste contenant vos modèles, scripts et utilitaires YOLO .
-
Poids du modèle (si modifié) :
- Partager tout poids de modèle affiné ou modifié dans le cadre du projet open-source.
-
Fichiers de configuration:
- Fournir des fichiers de configuration tels que
.yaml
ou.json
qui définissent la configuration de l'entraînement, les hyperparamètres ou les configurations de déploiement.
- Fournir des fichiers de configuration tels que
-
Données de formation (si elles sont redistribuables) :
- Si vous incluez des données prétraitées ou générées qui peuvent être redistribuées, assurez-vous qu'elles font partie du référentiel ou qu'elles sont clairement liées.
-
Composants de l'application Web:
- Si votre projet est une application web, incluez tout le code source du backend et du frontend, en particulier les composants côté serveur.
-
Documentation:
- Inclure une documentation claire sur la façon d'utiliser, de construire et d'étendre votre projet.
-
Scripts de construction et de déploiement:
- Partager des scripts pour la mise en place de l'environnement, la construction de l'application et son déploiement, tels que
Dockerfiles
,requirements.txt
ouMakefiles
.
- Partager des scripts pour la mise en place de l'environnement, la construction de l'application et son déploiement, tels que
-
Cadre de test:
- Ouvrez les sources de vos tests, tels que les tests unitaires et les tests d'intégration, afin de garantir la reproductibilité et la fiabilité.
-
Modifications par des tiers:
- Fournir le code source de toutes les bibliothèques tierces que vous avez modifiées.
Étapes de la mise en open source de votre projet
-
Choisissez votre point de départ:
- Sortez du référentiel Ultralytics YOLO ou démarrez à partir du référentiel de modèles Ultralytics .
-
DĂ©finissez votre licence:
- Ajouter un
LICENSE
contenant le texte de AGPL-3.0 .
- Ajouter un
-
Créditer les contributions en amont:
- Mentionnez l'attribution Ă Ultralytics YOLO dans votre README. Par exemple :
-
Rendez votre code public:
- Déposez l'ensemble de votre projet (y compris les composants énumérés ci-dessus) dans un dépôt GitHub public.
-
Documentez votre projet:
- RĂ©diger un texte clair
README.md
avec des instructions pour l'installation, l'utilisation et les contributions.
- RĂ©diger un texte clair
-
Autoriser les contributions:
- Mettre en place un système de suivi des problèmes et des lignes directrices pour les contributions afin de favoriser la collaboration.
En suivant ces étapes et en vous assurant d'inclure tous les composants nécessaires, vous vous conformerez à AGPL-3.0 et contribuerez de manière significative à la communauté open-source. Continuons à encourager la collaboration et l'innovation dans le domaine de la vision par ordinateur ! 🚀
Exemple de structure de référentiel
Vous trouverez ci-dessous un exemple de structure pour un projet AGPL-3.0 . Voir https://github.com/ultralytics /template pour plus de détails.
my-yolo-project/
│
├── LICENSE # AGPL-3.0 license text
├── README.md # Project overview and license information
├── src/ # Source code for the project
│ ├── model.py # YOLO-based model implementation
│ ├── utils.py # Utility scripts
│ └── ...
├── pyproject.toml # Python dependencies
├── tests/ # Unit and integration tests
├── .github/ # GitHub Actions for CI
│ └── workflows/
│ └── ci.yml # Continuous integration configuration
└── docs/ # Project documentation
└── index.md
En suivant ce guide, vous pouvez vous assurer que votre projet reste conforme à AGPL-3.0 tout en contribuant à la communauté open-source. Votre adhésion renforce l'éthique de collaboration, de transparence et d'accessibilité qui est à l'origine du succès de projets tels que YOLO.
Conclusion
Nous vous remercions de l'intérêt que vous portez à la contribution aux Ultralytics aux projets open-source YOLO . Votre participation est essentielle pour façonner l'avenir de notre logiciel et construire une communauté dynamique d'innovation et de collaboration. Qu'il s'agisse d'améliorer le code, de signaler des bogues ou de suggérer de nouvelles fonctionnalités, votre contribution est inestimable.
Nous sommes ravis de voir vos idées se concrétiser et nous apprécions votre engagement à faire progresser la technologie de détection d'objets. Ensemble, continuons à nous développer et à innover dans le cadre de cette passionnante aventure open-source. Bon codage ! 🚀🌟
FAQ
Pourquoi devrais-je contribuer aux dépôts de logiciels libres de Ultralytics YOLO ?
Contribuer aux dépôts de code source libre de Ultralytics YOLO permet d'améliorer le logiciel, de le rendre plus robuste et plus riche en fonctionnalités pour l'ensemble de la communauté. Les contributions peuvent inclure des améliorations du code, des corrections de bogues, des améliorations de la documentation et la mise en œuvre de nouvelles fonctionnalités. En outre, les contributions vous permettent de collaborer avec d'autres développeurs compétents et des experts dans le domaine, ce qui améliore vos propres compétences et votre réputation. Pour plus d'informations sur la manière de commencer, reportez-vous à la section Contribuer par le biais de demandes d'extraction (Pull Requests).
Comment signer l'accord de licence du contributeur (CLA) pour Ultralytics YOLO ?
Pour signer l'accord de licence du contributeur (CLA), suivez les instructions fournies par le robot CLA après avoir soumis votre demande d'extraction. Ce processus permet de s'assurer que vos contributions sont correctement placées sous la licence AGPL-3.0 , ce qui préserve l'intégrité juridique du projet open-source. Ajoutez un commentaire dans votre demande d'extraction indiquant :
Pour plus d'informations, voir la section Signature de la CLA.
Que sont les chaînes de documents de type Google et pourquoi sont-elles nécessaires pour les contributions Ultralytics YOLO ?
Google-fournissent une documentation claire et concise pour les fonctions et les classes, améliorant ainsi la lisibilité et la maintenabilité du code. Elles décrivent l'objectif de la fonction, ses arguments et ses valeurs de retour en respectant des règles de formatage spécifiques. Lorsque vous contribuez à Ultralytics YOLO , le fait de suivre les docstrings de style Google garantit que vos ajouts sont bien documentés et facilement compréhensibles. Pour des exemples et des lignes directrices, consultez la section Google-Style Docstrings.
Comment puis-je m'assurer que mes modifications passent les tests de GitHub Actions CI ?
Avant que votre demande ne soit fusionnée, elle doit passer tous les tests d'intégration continue (CI) des actions GitHub. Ces tests comprennent le linting, les tests unitaires et d'autres vérifications pour s'assurer que le code est conforme à la norme
les normes de qualité du projet. Examinez les résultats de l'IC et corrigez les problèmes éventuels. Pour obtenir des informations détaillées sur le processus d'intégration cathodique et des conseils de dépannage, consultez la section Tests d'intégration cathodique des actions GitHub.
Comment puis-je signaler un bogue dans les dépôts Ultralytics YOLO ?
Pour signaler un bogue, fournissez un exemple minimum reproductible clair et concis avec votre rapport de bogue. Cela permet aux développeurs d'identifier et de résoudre rapidement le problème. Veillez à ce que votre exemple soit minimal mais suffisant pour reproduire le problème. Pour plus de détails sur les étapes à suivre pour signaler des bogues, consultez la section Signaler des bogues.