From 30fc4b537ff1d9b115bc1558884f6bc2696a282c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 14 Mar 2023 16:12:33 +0100 Subject: [PATCH] Check for broken links (#1422) Co-authored-by: Joris LIMONIER Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .github/workflows/cla.yml | 4 +- .github/workflows/greetings.yml | 2 +- .github/workflows/links.yml | 38 +++++++++++++++++++ .pre-commit-config.yaml | 14 ++++--- README.md | 14 +++---- README.zh-CN.md | 6 +-- docs/app.md | 2 +- docs/hub.md | 2 +- docs/modes/track.md | 2 +- examples/README.md | 2 +- examples/tutorial.ipynb | 10 ++--- mkdocs.yml | 2 +- ultralytics/nn/autobackend.py | 2 +- ultralytics/yolo/cfg/__init__.py | 4 +- ultralytics/yolo/data/build.py | 2 +- .../yolo/data/dataloaders/stream_loaders.py | 2 +- ultralytics/yolo/utils/__init__.py | 2 +- ultralytics/yolo/v8/segment/train.py | 2 +- 18 files changed, 77 insertions(+), 35 deletions(-) create mode 100644 .github/workflows/links.yml diff --git a/.github/workflows/cla.yml b/.github/workflows/cla.yml index 77d7b64..e6000a1 100644 --- a/.github/workflows/cla.yml +++ b/.github/workflows/cla.yml @@ -1,6 +1,6 @@ # Ultralytics YOLO ๐Ÿš€, GPL-3.0 license -name: "CLA Assistant" +name: CLA Assistant on: issue_comment: types: @@ -16,7 +16,7 @@ jobs: if: github.repository == 'ultralytics/ultralytics' runs-on: ubuntu-latest steps: - - name: "CLA Assistant" + - name: CLA Assistant if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I sign the CLA') || github.event_name == 'pull_request_target' uses: contributor-assistant/github-action@v2.3.0 env: diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index f843652..271ee36 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -25,7 +25,7 @@ jobs: See our [Contributing Guide](https://github.com/ultralytics/ultralytics/blob/main/CONTRIBUTING.md) for details and let us know if you have any questions! issue-message: | - ๐Ÿ‘‹ Hello @${{ github.actor }}, thank you for your interest in YOLOv8 ๐Ÿš€! We recommend a visit to the [YOLOv8 Docs](https://docs.ultralytics.com) for new users where you can find many [Python](https://docs.ultralytics.com/python/) and [CLI](https://docs.ultralytics.com/cli/) usage examples and where many of the most common questions may already be answered. + ๐Ÿ‘‹ Hello @${{ github.actor }}, thank you for your interest in YOLOv8 ๐Ÿš€! We recommend a visit to the [YOLOv8 Docs](https://docs.ultralytics.com) for new users where you can find many [Python](https://docs.ultralytics.com/usage/python/) and [CLI](https://docs.ultralytics.com/usage/cli/) usage examples and where many of the most common questions may already be answered. If this is a ๐Ÿ› Bug Report, please provide a [minimum reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) to help us debug it. diff --git a/.github/workflows/links.yml b/.github/workflows/links.yml new file mode 100644 index 0000000..816643a --- /dev/null +++ b/.github/workflows/links.yml @@ -0,0 +1,38 @@ +# Ultralytics YOLO ๐Ÿš€, GPL-3.0 license +# YOLO Continuous Integration (CI) GitHub Actions tests + +name: Check Broken links + +on: + push: + branches: [main] + pull_request: + branches: [main] + workflow_dispatch: + schedule: + - cron: '0 0 * * *' # runs at 00:00 UTC every day + +jobs: + Links: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Test Markdown and HTML links + uses: lycheeverse/lychee-action@v1.6.1 + with: + fail: true + # accept 429(Instagram, 'too many requests'), 999(LinkedIn, 'unknown status code'), Timeout(Twitter) + args: --accept 429,999 --exclude twitter.com --verbose --no-progress './**/*.md' './**/*.html' + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + + - name: Test Markdown, HTML, YAML, Python and Notebook links + if: github.event_name == 'workflow_dispatch' + uses: lycheeverse/lychee-action@v1.6.1 + with: + fail: true + # accept 429(Instagram, 'too many requests'), 999(LinkedIn, 'unknown status code'), Timeout(Twitter) + args: --accept 429,999 --exclude twitter.com,url.com --verbose --no-progress './**/*.md' './**/*.html' './**/*.yml' './**/*.yaml' './**/*.py' './**/*.ipynb' + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c516237..54a733a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -26,7 +26,6 @@ repos: hooks: - id: pyupgrade name: Upgrade code - args: [--py37-plus] - repo: https://github.com/PyCQA/isort rev: 5.12.0 @@ -63,7 +62,12 @@ repos: args: - --ignore-words-list=crate,nd,strack,dota - #- repo: https://github.com/asottile/yesqa - # rev: v1.4.0 - # hooks: - # - id: yesqa +# - repo: https://github.com/asottile/yesqa +# rev: v1.4.0 +# hooks: +# - id: yesqa + +# - repo: https://github.com/asottile/dead +# rev: v1.5.0 +# hooks: +# - id: dead diff --git a/README.md b/README.md index cf6d9b0..782a58e 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ To request an Enterprise License please complete the form at [Ultralytics Licens - + @@ -83,7 +83,7 @@ yolo predict model=yolov8n.pt source="https://ultralytics.com/images/bus.jpg" ``` `yolo` can be used for a variety of tasks and modes and accepts additional arguments, i.e. `imgsz=640`. See the YOLOv8 -[CLI Docs](https://docs.ultralytics.com/cli) for examples. +[CLI Docs](https://docs.ultralytics.com/usage/cli) for examples. #### Python @@ -106,7 +106,7 @@ success = model.export(format="onnx") # export the model to ONNX format [Models](https://github.com/ultralytics/ultralytics/tree/main/ultralytics/models) download automatically from the latest Ultralytics [release](https://github.com/ultralytics/assets/releases). See -YOLOv8 [Python Docs](https://docs.ultralytics.com/python) for more examples. +YOLOv8 [Python Docs](https://docs.ultralytics.com/usage/python) for more examples. #### Model Architectures @@ -136,7 +136,7 @@ Ultralytics [release](https://github.com/ultralytics/assets/releases) on first u
Detection -See [Detection Docs](https://docs.ultralytics.com/tasks/detection/) for usage examples with these models. +See [Detection Docs](https://docs.ultralytics.com/tasks/detect/) for usage examples with these models. | Model | size
(pixels) | mAPval
50-95 | Speed
CPU ONNX
(ms) | Speed
A100 TensorRT
(ms) | params
(M) | FLOPs
(B) | | ------------------------------------------------------------------------------------ | --------------------- | -------------------- | ------------------------------ | ----------------------------------- | ------------------ | ----------------- | @@ -156,7 +156,7 @@ See [Detection Docs](https://docs.ultralytics.com/tasks/detection/) for usage ex
Segmentation -See [Segmentation Docs](https://docs.ultralytics.com/tasks/segmentation/) for usage examples with these models. +See [Segmentation Docs](https://docs.ultralytics.com/tasks/segment/) for usage examples with these models. | Model | size
(pixels) | mAPbox
50-95 | mAPmask
50-95 | Speed
CPU ONNX
(ms) | Speed
A100 TensorRT
(ms) | params
(M) | FLOPs
(B) | | -------------------------------------------------------------------------------------------- | --------------------- | -------------------- | --------------------- | ------------------------------ | ----------------------------------- | ------------------ | ----------------- | @@ -176,7 +176,7 @@ See [Segmentation Docs](https://docs.ultralytics.com/tasks/segmentation/) for us
Classification -See [Classification Docs](https://docs.ultralytics.com/tasks/classification/) for usage examples with these models. +See [Classification Docs](https://docs.ultralytics.com/tasks/classify/) for usage examples with these models. | Model | size
(pixels) | acc
top1 | acc
top5 | Speed
CPU ONNX
(ms) | Speed
A100 TensorRT
(ms) | params
(M) | FLOPs
(B) at 640 | | -------------------------------------------------------------------------------------------- | --------------------- | ---------------- | ---------------- | ------------------------------ | ----------------------------------- | ------------------ | ------------------------ | @@ -262,7 +262,7 @@ the [Ultralytics Community Forum](https://community.ultralytics.com/).
- + diff --git a/README.zh-CN.md b/README.zh-CN.md index 7911d71..6f06f4e 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -28,7 +28,7 @@ SOTA ๆจกๅž‹ใ€‚ๅฎƒๅœจไปฅๅ‰ๆˆๅŠŸ็š„ YOLO ็‰ˆๆœฌๅŸบ็ก€ไธŠ๏ผŒๅผ•ๅ…ฅไบ†ๆ–ฐ็š„ๅŠŸ่ƒฝ - + @@ -232,14 +232,14 @@ YOLOv8 ๅœจไธค็งไธๅŒ็š„ License ไธ‹ๅฏ็”จ๏ผš ##
่”็ณปๆˆ‘ไปฌ
่ฏท่ฎฟ้—ฎ [GitHub Issues](https://github.com/ultralytics/ultralytics/issues) -ๆˆ– [Ultralytics Community Forum](https://community.ultralytis.com) ไปฅๆŠฅๅ‘Š YOLOv8 ้”™่ฏฏๅ’Œ่ฏทๆฑ‚ๅŠŸ่ƒฝใ€‚ +ๆˆ– [Ultralytics Community Forum](https://community.ultralytics.com) ไปฅๆŠฅๅ‘Š YOLOv8 ้”™่ฏฏๅ’Œ่ฏทๆฑ‚ๅŠŸ่ƒฝใ€‚
- + diff --git a/docs/app.md b/docs/app.md index 1a15f61..9f1b504 100644 --- a/docs/app.md +++ b/docs/app.md @@ -7,7 +7,7 @@ - + diff --git a/docs/hub.md b/docs/hub.md index c7d8c0d..0d0cbd0 100644 --- a/docs/hub.md +++ b/docs/hub.md @@ -7,7 +7,7 @@ - + diff --git a/docs/modes/track.md b/docs/modes/track.md index c1dd5c3..0fe3c3e 100644 --- a/docs/modes/track.md +++ b/docs/modes/track.md @@ -52,7 +52,7 @@ do is loading the corresponding (detection or segmentation) model. ### Tracking Tracking shares the configuration with predict, i.e `conf`, `iou`, `show`. More configurations please refer -to [predict page](https://docs.ultralytics.com/usage/cfg/#prediction). +to [predict page](https://docs.ultralytics.com/modes/predict/). !!! example "" === "Python" diff --git a/examples/README.md b/examples/README.md index 36b4a51..9fc542a 100644 --- a/examples/README.md +++ b/examples/README.md @@ -4,7 +4,7 @@ This is a list of real-world applications and walkthroughs. These can be folders | Title | Format | Contributor | | ------------------------------------------------------------------------ | ------------------ | --------------------------------------------------- | -| [YOLO ONNX detection Inference with C++](./YOLOv8_CPP_Inference) | C++/ONNX | [Justas Bartnykas](https://github.com/JustasBart) | +| [YOLO ONNX detection Inference with C++](./YOLOv8-CPP-Inference) | C++/ONNX | [Justas Bartnykas](https://github.com/JustasBart) | | [YOLO OpenCV ONNX detection Python](./YOLOv8-OpenCV-ONNX-Python) | OpenCV/Python/ONNX | [Farid Inawan](https://github.com/frdteknikelektro) | | [YOLO .Net ONNX detection C#](https://www.nuget.org/packages/Yolov8.Net) | C# .Net | [Samuel Stainback](https://github.com/sstainba) | diff --git a/examples/tutorial.ipynb b/examples/tutorial.ipynb index 91f69ac..5d03af7 100644 --- a/examples/tutorial.ipynb +++ b/examples/tutorial.ipynb @@ -276,7 +276,7 @@ "\n", "

\n", "\n", - "Train YOLOv8 on [Detection](https://docs.ultralytics.com/tasks/detection/), [Segmentation](https://docs.ultralytics.com/tasks/segmentation/) and [Classification](https://docs.ultralytics.com/tasks/classification/) datasets." + "Train YOLOv8 on [Detection](https://docs.ultralytics.com/tasks/detect/), [Segmentation](https://docs.ultralytics.com/tasks/segment/) and [Classification](https://docs.ultralytics.com/tasks/classify/) datasets." ] }, { @@ -509,7 +509,7 @@ "source": [ "# 5. Python Usage\n", "\n", - "YOLOv8 was reimagined using Python-first principles for the most seamless Python YOLO experience yet. YOLOv8 models can be loaded from a trained checkpoint or created from scratch. Then methods are used to train, val, predict, and export the model. See a detailed Python usage examples in the YOLOv8 [Docs](https://docs.ultralytics.com/python/)." + "YOLOv8 was reimagined using Python-first principles for the most seamless Python YOLO experience yet. YOLOv8 models can be loaded from a trained checkpoint or created from scratch. Then methods are used to train, val, predict, and export the model. See a detailed Python usage examples in the YOLOv8 [Docs](https://docs.ultralytics.com/usage/python/)." ], "metadata": { "id": "kUMOQ0OeDBJG" @@ -554,7 +554,7 @@ "source": [ "## 1. Detection\n", "\n", - "YOLOv8 _detection_ models have no suffix and are the default YOLOv8 models, i.e. `yolov8n.pt` and are pretrained on COCO. See [Detection Docs](https://docs.ultralytics.com/tasks/detection/) for full details.\n" + "YOLOv8 _detection_ models have no suffix and are the default YOLOv8 models, i.e. `yolov8n.pt` and are pretrained on COCO. See [Detection Docs](https://docs.ultralytics.com/tasks/detect/) for full details.\n" ], "metadata": { "id": "yq26lwpYK1lq" @@ -581,7 +581,7 @@ "source": [ "## 2. Segmentation\n", "\n", - "YOLOv8 _segmentation_ models use the `-seg` suffix, i.e. `yolov8n-seg.pt` and are pretrained on COCO. See [Segmentation Docs](https://docs.ultralytics.com/tasks/segmentation/) for full details.\n" + "YOLOv8 _segmentation_ models use the `-seg` suffix, i.e. `yolov8n-seg.pt` and are pretrained on COCO. See [Segmentation Docs](https://docs.ultralytics.com/tasks/segment/) for full details.\n" ], "metadata": { "id": "7ZW58jUzK66B" @@ -608,7 +608,7 @@ "source": [ "## 3. Classification\n", "\n", - "YOLOv8 _classification_ models use the `-cls` suffix, i.e. `yolov8n-cls.pt` and are pretrained on ImageNet. See [Classification Docs](https://docs.ultralytics.com/tasks/classification/) for full details.\n" + "YOLOv8 _classification_ models use the `-cls` suffix, i.e. `yolov8n-cls.pt` and are pretrained on ImageNet. See [Classification Docs](https://docs.ultralytics.com/tasks/classify/) for full details.\n" ], "metadata": { "id": "ax3p94VNK9zR" diff --git a/mkdocs.yml b/mkdocs.yml index 296822d..905eb3c 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -69,7 +69,7 @@ extra: - icon: fontawesome/brands/github link: https://github.com/ultralytics - icon: fontawesome/brands/linkedin - link: https://www.linkedin.com/company/ultralytics + link: https://www.linkedin.com/company/ultralytics/ - icon: fontawesome/brands/twitter link: https://twitter.com/ultralytics - icon: fontawesome/brands/youtube diff --git a/ultralytics/nn/autobackend.py b/ultralytics/nn/autobackend.py index 0f4945e..eb31de1 100644 --- a/ultralytics/nn/autobackend.py +++ b/ultralytics/nn/autobackend.py @@ -258,7 +258,7 @@ class AutoBackend(nn.Module): else: from ultralytics.yolo.engine.exporter import export_formats raise TypeError(f"model='{w}' is not a supported model format. " - 'See https://docs.ultralytics.com/tasks/detection/#export for help.' + 'See https://docs.ultralytics.com/modes/predict for help.' f'\n\n{export_formats()}') # Load external metadata YAML diff --git a/ultralytics/yolo/cfg/__init__.py b/ultralytics/yolo/cfg/__init__.py index 91a6e66..c1d3af8 100644 --- a/ultralytics/yolo/cfg/__init__.py +++ b/ultralytics/yolo/cfg/__init__.py @@ -20,7 +20,7 @@ CLI_HELP_MSG = \ Where TASK (optional) is one of [detect, segment, classify] MODE (required) is one of [train, val, predict, export, track] ARGS (optional) are any number of custom 'arg=value' pairs like 'imgsz=320' that override defaults. - See all ARGS at https://docs.ultralytics.com/cfg or with 'yolo cfg' + See all ARGS at https://docs.ultralytics.com/usage/cfg or with 'yolo cfg' 1. Train a detection model for 10 epochs with an initial learning_rate of 0.01 yolo train data=coco128.yaml model=yolov8n.pt epochs=10 lr0=0.01 @@ -42,7 +42,7 @@ CLI_HELP_MSG = \ yolo copy-cfg yolo cfg - Docs: https://docs.ultralytics.com/cli + Docs: https://docs.ultralytics.com Community: https://community.ultralytics.com GitHub: https://github.com/ultralytics/ultralytics """ diff --git a/ultralytics/yolo/data/build.py b/ultralytics/yolo/data/build.py index b79e661..90fb86d 100644 --- a/ultralytics/yolo/data/build.py +++ b/ultralytics/yolo/data/build.py @@ -153,7 +153,7 @@ def check_source(source): elif isinstance(source, torch.Tensor): tensor = True else: - raise TypeError('Unsupported image type. See docs for supported types https://docs.ultralytics.com/predict') + raise TypeError('Unsupported image type. For supported types see https://docs.ultralytics.com/modes/predict') return source, webcam, screenshot, from_img, in_memory, tensor diff --git a/ultralytics/yolo/data/dataloaders/stream_loaders.py b/ultralytics/yolo/data/dataloaders/stream_loaders.py index 9794f56..05b3ac3 100644 --- a/ultralytics/yolo/data/dataloaders/stream_loaders.py +++ b/ultralytics/yolo/data/dataloaders/stream_loaders.py @@ -359,7 +359,7 @@ def autocast_list(source): files.append(im) else: raise TypeError(f'type {type(im).__name__} is not a supported Ultralytics prediction source type. \n' - f'See https://docs.ultralytics.com/predict for supported source types.') + f'See https://docs.ultralytics.com/modes/predict for supported source types.') return files diff --git a/ultralytics/yolo/utils/__init__.py b/ultralytics/yolo/utils/__init__.py index b582d8e..4bcfdde 100644 --- a/ultralytics/yolo/utils/__init__.py +++ b/ultralytics/yolo/utils/__init__.py @@ -64,7 +64,7 @@ HELP_MSG = \ Where TASK (optional) is one of [detect, segment, classify] MODE (required) is one of [train, val, predict, export] ARGS (optional) are any number of custom 'arg=value' pairs like 'imgsz=320' that override defaults. - See all ARGS at https://docs.ultralytics.com/cfg or with 'yolo cfg' + See all ARGS at https://docs.ultralytics.com/usage/cfg or with 'yolo cfg' - Train a detection model for 10 epochs with an initial learning_rate of 0.01 yolo detect train data=coco128.yaml model=yolov8n.pt epochs=10 lr0=0.01 diff --git a/ultralytics/yolo/v8/segment/train.py b/ultralytics/yolo/v8/segment/train.py index 42d3bc8..5a4c5b2 100644 --- a/ultralytics/yolo/v8/segment/train.py +++ b/ultralytics/yolo/v8/segment/train.py @@ -88,7 +88,7 @@ class SegLoss(Loss): "This error can occur when incorrectly training a 'segment' model on a 'detect' dataset, " "i.e. 'yolo train model=yolov8n-seg.pt data=coco128.yaml'.\nVerify your dataset is a " "correctly formatted 'segment' dataset using 'data=coco128-seg.yaml' " - 'as an example.\nSee https://docs.ultralytics.com/tasks/segmentation/ for help.') from e + 'as an example.\nSee https://docs.ultralytics.com/tasks/segment/ for help.') from e # pboxes pred_bboxes = self.bbox_decode(anchor_points, pred_distri) # xyxy, (b, h*w, 4)