Ultralytics オープンソースプロジェクトへの貢献
ようこそ私たちは、あなたが私たちのオープンソースプロジェクトに貢献することを検討していることに感激しています。 Ultralyticsオープンソースプロジェクトへの貢献をご検討いただいていることに感激しています。あなたの参加は、私たちのリポジトリの品質向上に役立つだけでなく、コミュニティ全体にも利益をもたらします。このガイドは、あなたが始めるのに役立つ明確なガイドラインとベストプラクティスを提供します。
見るんだ: Ultralytics リポジトリへの貢献方法|Ultralytics モデル、データセット、ドキュメンテーションUltralytics
行動規範
誰もが歓迎され、包容力のある環境を確保するために、すべての貢献者は行動規範を遵守しなければなりません。尊敬、優しさ、プロ意識が私たちのコミュニティの中心です。
プルリクエストによる貢献
プルリクエストの形でのご協力を大いに歓迎いたします。レビュープロセスをできるだけスムーズにするために、以下の手順に従ってください:
-
リポジトリをフォークする: Ultralytics YOLO リポジトリをあなたのGitHubアカウントにフォークすることから始めましょう。
-
ブランチを作成します:フォークしたリポジトリに新しいブランチを作成し、変更を反映したわかりやすい名前を付けます。
-
変更を加える:あなたのコードがプロジェクトのスタイル・ガイドラインを遵守し、新たなエラーや警告が発生しないことを確認してください。
-
変更をテストする:提出する前に、変更をローカルでテストし、期待通りに動作し、新たな問題が発生しないことを確認してください。
-
変更をコミットします:簡潔で説明的なコミットメッセージを添えて変更をコミットしてください。変更が特定の問題に対処している場合は、コミットメッセージに問題番号を含めてください。
-
プルリクエストを作成する:フォークしたリポジトリからメインのUltralytics YOLO リポジトリにプルリクエストを提出します。あなたの変更点と、それがプロジェクトをどのように改善するのかを、明確かつ詳細に説明してください。
CLAサイン会
私たちがあなたのプルリクエストをマージする前に、あなたは私たちのコントリビューターライセンス契約 (CLA) に署名する必要があります。この法的合意は、あなたの貢献が適切にライセンスされていることを保証し、プロジェクトがAGPL-3.0 ライセンスの下で配布され続けることを可能にします。
プルリクエストを送信すると、CLAボットが署名プロセスを案内します。CLAに署名するには、PRにコメントを追加するだけです:
Google-スタイル・ドックストリング
新しい関数やクラスを追加するときは、Google-styledocstrings を含めてください。これらのdocstringは、他の開発者があなたのコードを理解し、保守するのに役立つ、明確で標準化されたドキュメントを提供します。
ドクストリングの例
この例では、Google-styleのdocstringを示している。入力と出力の両方が types
は常に括弧で囲まれる、 (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
この例では、Google-style docstringと、引数と戻り値の型ヒントの両方を含んでいるが、どちらかを単独で使っても構わない。
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
GitHub アクション CI テスト
すべてのプルリクエストは、マージする前に GitHub Actions の継続的インテグレーション(CI) テストに合格する必要があります。これらのテストには、リンティング、ユニットテスト、その他のチェックが含まれ、あなたの変更がプロジェクトの品質基準を満たしていることを確認します。CI の出力を確認し、問題があれば対処しましょう。
コード貢献のベストプラクティス
Ultralytics プロジェクトにコードを貢献する際には、以下のベストプラクティスを念頭に置いてください:
- コードの重複を避ける:可能な限り既存のコードを再利用し、不要な引数を最小限に抑える。
- より小さく、焦点を絞った変更を行う:大規模な変更ではなく、的を絞った変更に重点を置く。
- 可能な限り単純化する:コードを単純化したり、不要な部分を削除する機会を探す。
- 互換性を考慮する:変更を加える前に、Ultralytics使用している既存のコードを壊す可能性があるかどうかを検討する。
- 一貫した書式を使用する: Ruff Formatterのようなツールは、文体の一貫性を保つのに役立ちます。
- 適切なテストを追加する:新機能が期待通りに動作することを確認するためのテストを含める。
プルリクエストのレビュー
プルリクエストをレビューすることも、貢献するための貴重な方法です。PRをレビューするとき
- ユニットテストをチェックする:PRに新機能や変更点のテストが含まれていることを確認する。
- 文書の更新を確認する:変更が反映された文書が更新されていることを確認する。
- パフォーマンスへの影響を評価する:変更がパフォーマンスにどのような影響を与えるかを検討する。
- CIテストの検証すべての継続的インテグレーションのテストがパスしていることを確認する。
- 建設的なフィードバックを提供する:問題や懸念について、具体的で明確なフィードバックを提供する。
- 努力を認める:前向きな共同作業の雰囲気を維持するために、著者の努力を認める。
バグの報告
私たちは、プロジェクトの品質を維持するために、バグ報告を非常に重視しています。バグを報告する際には、Minimum Reproducible Example(再現可能な最小限の例)、つまり、問題を一貫して再現するシンプルで明確なコード例を提示してください。これにより、問題を迅速に特定し、解決することができます。
ライセンス
Ultralytics は、GNU Affero General Public License v3.0 (AGPL-3.0) をリポジトリに使用しています。このライセンスは、ソフトウェア開発における開放性、透明性、共同改善を促進するものである。このライセンスは、すべてのユーザーがソフトウェアを使用、変更、共有する自由を保証し、コラボレーションとイノベーションの強力なコミュニティを育成します。
Ultralytics オープンソースコミュニティに効果的かつ倫理的に貢献するために、すべての貢献者にAGPL-3.0 ライセンスの条項を熟知することをお勧めします。
YOLO およびAGPL-3.0 準拠のオープンソース・プロジェクト
YOLO モデルを使って独自のプロジェクトを開発し、リリースすることを計画している場合、GNU Affero General Public License v3.0 (AGPL-3.0) は、すべての派生作品がオープンでアクセス可能であることを保証します。このセクションでは、AGPL-3.0 を遵守しながらプロジェクトをオープンソース化するのに役立つ、ステップ、ベストプラクティス、要件を含むガイダンスを提供します。
プロジェクト開始の選択肢
これらのアプローチのいずれかを使ってプロジェクトをスタートさせることができる:
-
Ultralytics YOLO リポジトリをフォークする
ultralytics、Ultralytics YOLO 公式リポジトリを直接フォークしますultralytics- 最新のYOLO 実装に直接ビルドする場合は、このオプションを使用する。
- AGPL-3.0 に準拠しながら、必要に応じてフォークされたコードを修正する。
-
Ultralytics テンプレート リポジトリから開始する
ultralytics で利用可能なUltralytics テンプレートリポジトリを使用します。- あらかじめ設定されたベストプラクティスで、クリーンでモジュール化されたプロジェクトを開始するのに理想的です。
- このオプションは、YOLO のモデルを統合または拡張するプロジェクトに、軽量な出発点を提供する。
オープンソースに必要なもの
AGPL-3.0 に従うためには、プロジェクトの以下の構成要素をオープンにしなければなりません:
-
プロジェクト全体のソースコード:
- あなたのYOLO モデル、スクリプト、およびユーティリティを含む、より大きなプロジェクトのすべてのコードを含めます。
-
モデルの重さ(変更された場合):
- オープンソースプロジェクトの一環として、微調整または修正したモデルの重みを共有する。
-
設定ファイル:
- などの設定ファイルを提供する。
.yaml
または.json
訓練セットアップ、ハイパーパラメータ、または配置設定を定義する。
- などの設定ファイルを提供する。
-
トレーニングデータ(再配布可能な場合):
- 再配布可能な前処理または生成されたデータを含める場合は、リポジトリの一部であるか、明確にリンクされていることを確認してください。
-
ウェブアプリケーション・コンポーネント:
- プロジェクトがWebアプリケーションの場合は、バックエンドとフロントエンドのすべてのソースコード、特にサーバーサイドのコンポーネントを含めてください。
-
ドキュメンテーション
- プロジェクトの使用方法、ビルド方法、拡張方法に関する明確な文書を含める。
-
ビルドとデプロイのスクリプト:
- 環境のセットアップ、アプリケーションのビルド、デプロイのためのスクリプトを共有する。
Dockerfiles
,requirements.txt
あるいはMakefiles
.
- 環境のセットアップ、アプリケーションのビルド、デプロイのためのスクリプトを共有する。
-
テストフレームワーク:
- ユニットテストや統合テストなどのテストケースをオープンソース化し、再現性と信頼性を確保する。
-
第三者による修正:
- 修正したサードパーティライブラリのソースコードを提供すること。
プロジェクトをオープンソース化するためのステップ
-
出発点を選ぶ:
- Ultralytics YOLO リポジトリをフォークするか、Ultralytics テンプレートリポジトリから開始してください。
-
ライセンスを設定する:
- 追加
LICENSE
AGPL-3.0 。
- 追加
-
上流への貢献:
- READMEにUltralytics YOLO 。例えば
-
コードを公開する:
- プロジェクト全体(上記のコンポーネントを含む)をGitHubの公開リポジトリにプッシュします。
-
プロジェクトを文書化する:
- 明確な文章を書く
README.md
セットアップ、使用方法、貢献のための説明付き。
- 明確な文章を書く
-
貢献を可能にする:
- コラボレーションを促進するために、課題追跡システムと貢献ガイドラインを設定する。
これらのステップに従い、必要なコンポーネントをすべて含めるようにすることで、AGPL-3.0 に準拠し、オープンソースコミュニティに有意義な貢献をすることができます。コンピュータ・ビジョンのコラボレーションとイノベーションを共に促進し続けましょう!🚀
リポジトリの構造例
以下は、AGPL-3.0 プロジェクトの構造例である。詳細はhttps://github.com/ultralytics/templateを参照。
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
このガイドに従うことで、オープンソースコミュニティに貢献しながら、あなたのプロジェクトがAGPL-3.0 に準拠していることを保証することができます。あなたの遵守は、YOLO のようなプロジェクトの成功の原動力である、コラボレーション、透明性、アクセシビリティの精神を強化します。
結論
オープンソース Ultralyticsオープンソース YOLO プロジェクトへの貢献に関心をお寄せいただき、ありがとうございます。私たちのソフトウェアの未来を形成し、革新と協力の活気あるコミュニティを構築するためには、皆様の参加が不可欠です。コードの改良、バグの報告、新機能の提案など、あなたの貢献は非常に貴重です。
私たちは、皆さんのアイデアが実現するのを楽しみにしており、物体検出技術の進歩に対する皆さんのコミットメントに感謝しています。一緒に、このエキサイティングなオープンソースの旅で成長し、革新し続けましょう。ハッピーコーディング!🚀🌟
よくあるご質問
Ultralytics YOLO オープンソースのリポジトリに貢献するメリットは?
Ultralytics YOLO オープンソースリポジトリに貢献することで、ソフトウェアが改善され、コミュニティ全体にとってより堅牢で豊富な機能を持つようになります。貢献には、コードの拡張、バグ修正、ドキュメントの改善、新機能の実装などが含まれます。さらに、貢献することで、他の熟練した開発者やその分野の専門家と協力することができ、あなた自身のスキルや評判を高めることができます。コントリビュート開始方法の詳細については、プルリクエストによるコントリビュートセクションを参照してください。
Ultralytics YOLO のコントリビューター・ライセンス契約(CLA)に署名するにはどうすればよいですか?
コントリビューターライセンス契約 (CLA) に署名するには、プルリクエストを送信した後、CLA bot が提供する指示に従ってください。このプロセスにより、あなたの貢献がAGPL-3.0 ライセンスの下で適切にライセンスされ、オープンソースプロジェクトの法的整合性が維持されます。プルリクエストにコメントを追加してください:
詳細については、CLA署名のセクションを参照してください。
Google-style docstringsとは何ですか?また、なぜUltralytics YOLO の投稿に必要なのですか?
Google-スタイルのdocstringは、関数やクラスに対して明確で簡潔なドキュメントを提供し、コードの可読性と保守性を向上させます。これらのdocstringは、関数の目的、引数、戻り値の概要を特定の書式規則で記述します。Ultralytics YOLO に貢献する場合、Google-style docstrings に従うことで、あなたの追加した関数がきちんと文書化され、容易に理解できるようになります。例とガイドラインについては、Google-StyleDocstringsセクションをご覧ください。
自分の変更が GitHub Actions CI のテストに合格していることを確認するにはどうすればよいですか?
プルリクエストをマージする前に、GitHub Actions の継続的インテグレーション (CI) テストに合格する必要があります。これらのテストには、リンティング、ユニットテスト、その他のチェックが含まれ、コードがプロジェクトの品質基準を満たしていることを確認します。CI の出力をレビューし、問題があれば修正する。CI プロセスの詳細とトラブルシューティングのヒントについては、GitHub Actions CI Testsセクションを参照してください。
Ultralytics YOLO リポジトリのバグを報告するには?
バグを報告するには、バグ報告とともに、明確で簡潔な「再現可能な最小限の例(Minimum Reproducible Example)」を提出してください。これは、開発者が問題を素早く特定し、修正するのに役立ちます。あなたの例は最小限のものでありながら、問題を再現するのに十分なものであることを確認してください。バグ報告の詳細な手順については、バグ報告のセクションを参照してください。