[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-zhiqwang--yolort":3,"tool-zhiqwang--yolort":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",155373,2,"2026-04-14T11:34:08",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":77,"owner_email":78,"owner_twitter":79,"owner_website":80,"owner_url":81,"languages":82,"stars":95,"forks":96,"last_commit_at":97,"license":98,"difficulty_score":10,"env_os":99,"env_gpu":100,"env_ram":99,"env_deps":101,"category_tags":108,"github_topics":109,"view_count":32,"oss_zip_url":79,"oss_zip_packed_at":79,"status":17,"created_at":129,"updated_at":130,"faqs":131,"releases":164},7472,"zhiqwang\u002Fyolort","yolort","yolort is a runtime stack for yolov5 on specialized accelerators such as tensorrt, libtorch, onnxruntime, tvm and ncnn.","yolort 是一个专为 YOLOv5 目标检测模型打造的运行时工具栈，旨在打通从模型训练到实际部署的“最后一公里”。它解决了传统 YOLOv5 在落地应用时，预处理（如图像缩放）和后处理（如非极大值抑制）往往需要独立编写代码、难以直接嵌入推理引擎的痛点。\n\n通过引入动态形状机制，yolort 能够将完整的检测流程封装进单一的模型图中，使得开发者可以轻松地将模型导出并运行在 TensorRT、LibTorch、ONNX Runtime、TVM 及 NCNN 等多种高性能加速后端上。这一特性极大地简化了部署策略，让目标检测像图像分类一样简单高效，无需依赖复杂的专用库。\n\n该工具非常适合需要将 AI 视觉算法落地到生产环境的开发者、算法工程师以及研究人员使用。无论是希望在边缘设备上进行快速推理，还是追求极致的部署性能，yolort 都提供了一个简洁、灵活且易于实验的代码基础。其设计理念遵循“化繁为简”，让用户能更专注于业务逻辑而非繁琐的工程适配，是连接学术研究与工业应用的理想桥梁。","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhiqwang_yolort_readme_6b4971163a60.png\" width=\"400px\">\n\n**YOLOv5 Runtime Stack**\n\n______________________________________________________________________\n\n[Documentation](https:\u002F\u002Fzhiqwang.com\u002Fyolort\u002F) •\n[Installation Instructions](https:\u002F\u002Fzhiqwang.com\u002Fyolort\u002Finstallation.html) •\n[Deployment](#-deployment) •\n[Contributing](.github\u002FCONTRIBUTING.md) •\n[Reporting Issues](https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort\u002Fissues\u002Fnew?assignees=&labels=&template=bug-report.yml)\n\n______________________________________________________________________\n\n[![Python Version](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.6--3.10-FFD43B?logo=python)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fyolort\u002F)\n[![PyPI version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fyolort?color=4D97FF&logo=PyPI)](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fyolort)\n[![PyPI downloads](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhiqwang_yolort_readme_acb7cfae9c58.png)](https:\u002F\u002Fpepy.tech\u002Fproject\u002Fyolort)\n[![Github downloads](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002Fzhiqwang\u002Fyolort\u002Ftotal?label=Model%20downloads&logo=PyTorch&color=FF6F00&logoColor=EE4C2C)](https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort\u002Freleases)\n[![Slack](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSlack%20chat-4A154B?logo=slack&logoColor=white)](https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fyolort\u002Fshared_invite\u002Fzt-mqwc7235-940aAh8IaKYeWclrJx10SA)\n[![PRs Welcome](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPRs%20welcome-792EE5?logo=GitHub-Sponsors&logoColor=#white)](.github\u002FCONTRIBUTING.md)\n\n[![CI testing](https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort\u002Factions\u002Fworkflows\u002Fci-test.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort\u002Factions\u002Fworkflows\u002Fci-test.yml)\n[![Build & deploy docs](https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort\u002Factions\u002Fworkflows\u002Fgh-pages.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort\u002Ftree\u002Fgh-pages)\n[![pre-commit.ci status](https:\u002F\u002Fresults.pre-commit.ci\u002Fbadge\u002Fgithub\u002Fzhiqwang\u002Fyolort\u002Fmain.svg)](https:\u002F\u002Fresults.pre-commit.ci\u002Flatest\u002Fgithub\u002Fzhiqwang\u002Fyolort\u002Fmain)\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fzhiqwang\u002Fyolort\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg?token=1GX96EA72Y)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fzhiqwang\u002Fyolort)\n\n______________________________________________________________________\n\n\u003C\u002Fdiv>\n\n## 🤗 Introduction\n\n**What it is.** Yet another implementation of Ultralytics's [YOLOv5](https:\u002F\u002Fgithub.com\u002Fultralytics\u002Fyolov5). yolort aims to make the training and inference of the object detection task integrate more seamlessly together. yolort now adopts the same model structure as the official YOLOv5. The significant difference is that we adopt the dynamic shape mechanism, and within this, we can embed both pre-processing (letterbox) and post-processing (nms) into the model graph, which simplifies the deployment strategy. In this sense, yolort makes it possible to deploy the object detection more easily and friendly on `LibTorch`, `ONNX Runtime`, `TVM`, `TensorRT` and so on.\n\n**About the code.** Follow the design principle of [detr](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fdetr):\n\n> object detection should not be more difficult than classification, and should not require complex libraries for training and inference.\n\n`yolort` is very simple to implement and experiment with. Do you like the implementation of torchvision's faster-rcnn, retinanet or detr? Do you like yolov5? You'll love `yolort`!\n\n\u003Ca href=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhiqwang_yolort_readme_6a5311e32476.jpg\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhiqwang_yolort_readme_6a5311e32476.jpg\" alt=\"YOLO inference demo\" width=\"500\"\u002F>\u003C\u002Fa>\n\n## 🆕 What's New\n\n- *Dec. 27, 2021*. Add `TensorRT` C++ interface example. Thanks to [Shiquan](https:\u002F\u002Fgithub.com\u002FShiquanYu).\n- *Dec. 25, 2021*. Support exporting to `TensorRT`, and inferencing with `TensorRT` Python interface.\n- *Sep. 24, 2021*. Add `ONNX Runtime` C++ interface example. Thanks to [Fidan](https:\u002F\u002Fgithub.com\u002Fitsnine).\n- *Feb. 5, 2021*. Add `TVM` compile and inference notebooks.\n- *Nov. 21, 2020*. Add graph visualization tools.\n- *Nov. 17, 2020*. Support exporting to `ONNX`, and inferencing with `ONNX Runtime` Python interface.\n- *Nov. 16, 2020*. Refactor YOLO modules and support *dynamic shape\u002Fbatch* inference.\n- *Nov. 4, 2020*. Add `LibTorch` C++ inference example.\n- *Oct. 8, 2020*. Support exporting to `TorchScript` model.\n\n## 🛠️ Usage\n\nThere are no extra compiled components in `yolort` and package dependencies are minimal, so the code is very simple to use.\n\n### Installation and Inference Examples\n\n- Above all, follow the [official instructions](https:\u002F\u002Fpytorch.org\u002Fget-started\u002Flocally\u002F) to install PyTorch 1.8.0+ and torchvision 0.9.0+\n\n- Installation via pip\n\n  Simple installation from [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fyolort\u002F)\n\n  ```shell\n  pip install -U yolort\n  ```\n\n  Or from Source\n\n  ```shell\n  # clone yolort repository locally\n  git clone https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort.git\n  cd yolort\n  # install in editable mode\n  pip install -e .\n  ```\n\n- Install pycocotools (for evaluation on COCO):\n\n  ```shell\n  pip install -U 'git+https:\u002F\u002Fgithub.com\u002Fppwwyyxx\u002Fcocoapi.git#subdirectory=PythonAPI'\n  ```\n\n- To read a source of image(s) and detect its objects 🔥\n\n  ```python\n  from yolort.models import yolov5s\n\n  # Load model\n  model = yolov5s(pretrained=True, score_thresh=0.45)\n  model.eval()\n\n  # Perform inference on an image file\n  predictions = model.predict(\"bus.jpg\")\n  # Perform inference on a list of image files\n  predictions = model.predict([\"bus.jpg\", \"zidane.jpg\"])\n  ```\n\n### Loading via `torch.hub`\n\nThe models are also available via torch hub, to load `yolov5s` with pretrained weights simply do:\n\n```python\nmodel = torch.hub.load(\"zhiqwang\u002Fyolort:main\", \"yolov5s\", pretrained=True)\n```\n\n### Loading checkpoint from official yolov5\n\nThe following is the interface for loading the checkpoint weights trained with `ultralytics\u002Fyolov5`. Please see our documents on what we [share](https:\u002F\u002Fzhiqwang.com\u002Fyolort\u002Fnotebooks\u002Fhow-to-align-with-ultralytics-yolov5.html) and how we [differ](https:\u002F\u002Fzhiqwang.com\u002Fyolort\u002Fnotebooks\u002Fcomparison-between-yolort-vs-yolov5.html) from yolov5 for more details.\n\n```python\nfrom yolort.models import YOLOv5\n\n# Download checkpoint from https:\u002F\u002Fgithub.com\u002Fultralytics\u002Fyolov5\u002Freleases\u002Fdownload\u002Fv6.0\u002Fyolov5s.pt\nckpt_path_from_ultralytics = \"yolov5s.pt\"\nmodel = YOLOv5.load_from_yolov5(ckpt_path_from_ultralytics, score_thresh=0.25)\n\nmodel.eval()\nimg_path = \"test\u002Fassets\u002Fbus.jpg\"\npredictions = model.predict(img_path)\n```\n\n## 🚀 Deployment\n\n### Inference on LibTorch backend\n\nWe provide a [tutorial](https:\u002F\u002Fzhiqwang.com\u002Fyolort\u002Fnotebooks\u002Finference-pytorch-export-libtorch.html) to demonstrate how the model is converted into `torchscript`. And we provide a [C++ example](deployment\u002Flibtorch) of how to do inference with the serialized `torchscript` model.\n\n### Inference on ONNX Runtime backend\n\nWe provide a pipeline for deploying yolort with ONNX Runtime.\n\n```python\nfrom yolort.runtime import PredictorORT\n\n# Load the serialized ONNX model\nengine_path = \"yolov5n6.onnx\"\ny_runtime = PredictorORT(engine_path, device=\"cpu\")\n\n# Perform inference on an image file\npredictions = y_runtime.predict(\"bus.jpg\")\n```\n\nPlease check out this [tutorial](https:\u002F\u002Fzhiqwang.com\u002Fyolort\u002Fnotebooks\u002Fexport-onnx-inference-onnxruntime.html) to use yolort's ONNX model conversion and ONNX Runtime inferencing. And you can use the [example](deployment\u002Fonnxruntime) for ONNX Runtime C++ interface.\n\n### Inference on TensorRT backend\n\nThe pipeline for TensorRT deployment is also very easy to use.\n\n```python\nimport torch\nfrom yolort.runtime import PredictorTRT\n\n# Load the serialized TensorRT engine\nengine_path = \"yolov5n6.engine\"\ndevice = torch.device(\"cuda\")\ny_runtime = PredictorTRT(engine_path, device=device)\n\n# Perform inference on an image file\npredictions = y_runtime.predict(\"bus.jpg\")\n```\n\nBesides, we provide a [tutorial](https:\u002F\u002Fzhiqwang.com\u002Fyolort\u002Fnotebooks\u002Fonnx-graphsurgeon-inference-tensorrt.html) detailing yolort's model conversion to TensorRT and the use of the Python interface. Please check this [example](deployment\u002Ftensorrt) if you want to use the C++ interface.\n\n## 🎨 Model Graph Visualization\n\nNow, `yolort` can draw the model graph directly, checkout our [tutorial](https:\u002F\u002Fzhiqwang.com\u002Fyolort\u002Fnotebooks\u002Fmodel-graph-visualization.html) to see how to use and visualize the model graph.\n\n\u003Ca href=\"notebooks\u002Fassets\u002Fyolov5_graph_visualize.svg\">\u003Cimg src=\"notebooks\u002Fassets\u002Fyolov5_graph_visualize.svg\" alt=\"YOLO model visualize\" width=\"500\"\u002F>\u003C\u002Fa>\n\n## 👋 Contributing\n\nWe love your input! Please see our [Contributing Guide](.github\u002FCONTRIBUTING.md) to get started and for how to help out. Thank you to all our contributors! If you like this project please consider ⭐ this repo, as it is the simplest way to support us.\n\n[![Contributors](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhiqwang_yolort_readme_a10e9e40b40b.png)](https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort\u002Fgraphs\u002Fcontributors)\n\n## 📖 Citing yolort\n\nIf you use yolort in your publication, please cite it by using the following BibTeX entry.\n\n```bibtex\n@Misc{yolort2021,\n  author =       {Zhiqiang Wang and Song Lin and Shiquan Yu and Wei Zeng and Fidan Kharrasov},\n  title =        {YOLORT: A runtime stack for object detection on specialized accelerators},\n  howpublished = {\\url{https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort}},\n  year =         {2021}\n}\n```\n\n## 🎓 Acknowledgement\n\n- The implementation of `yolov5` borrow the code from [ultralytics](https:\u002F\u002Fgithub.com\u002Fultralytics\u002Fyolov5).\n- This repo borrows the architecture design and part of the code from [torchvision](https:\u002F\u002Fgithub.com\u002Fpytorch\u002Fvision).\n","\u003Cdiv align=\"center\">\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhiqwang_yolort_readme_6b4971163a60.png\" width=\"400px\">\n\n**YOLOv5 运行时栈**\n\n______________________________________________________________________\n\n[文档](https:\u002F\u002Fzhiqwang.com\u002Fyolort\u002F) •\n[安装说明](https:\u002F\u002Fzhiqwang.com\u002Fyolort\u002Finstallation.html) •\n[部署](#-deployment) •\n[贡献指南](.github\u002FCONTRIBUTING.md) •\n[提交问题](https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort\u002Fissues\u002Fnew?assignees=&labels=&template=bug-report.yml)\n\n______________________________________________________________________\n\n[![Python 版本](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.6--3.10-FFD43B?logo=python)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fyolort\u002F)\n[![PyPI 版本](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fyolort?color=4D97FF&logo=PyPI)](https:\u002F\u002Fbadge.fury.io\u002Fpy\u002Fyolort)\n[![PyPI 下载量](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhiqwang_yolort_readme_acb7cfae9c58.png)](https:\u002F\u002Fpepy.tech\u002Fproject\u002Fyolort)\n[![GitHub 下载量](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002Fzhiqwang\u002Fyolort\u002Ftotal?label=Model%20downloads&logo=PyTorch&color=FF6F00&logoColor=EE4C2C)](https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort\u002Freleases)\n[![Slack](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSlack%20chat-4A154B?logo=slack&logoColor=white)](https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fyolort\u002Fshared_invite\u002Fzt-mqwc7235-940aAh8IaKYeWclrJx10SA)\n[![欢迎 PR](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPRs%20welcome-792EE5?logo=GitHub-Sponsors&logoColor=#white)](.github\u002FCONTRIBUTING.md)\n\n[![CI 测试](https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort\u002Factions\u002Fworkflows\u002Fci-test.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort\u002Factions\u002Fworkflows\u002Fci-test.yml)\n[![构建与部署文档](https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort\u002Factions\u002Fworkflows\u002Fgh-pages.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort\u002Ftree\u002Fgh-pages)\n[![pre-commit.ci 状态](https:\u002F\u002Fresults.pre-commit.ci\u002Fbadge\u002Fgithub\u002Fzhiqwang\u002Fyolort\u002Fmain.svg)](https:\u002F\u002Fresults.pre-commit.ci\u002Flatest\u002Fgithub\u002Fzhiqwang\u002Fyolort\u002Fmain)\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fzhiqwang\u002Fyolort\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg?token=1GX96EA72Y)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fzhiqwang\u002Fyolort)\n\n______________________________________________________________________\n\n\u003C\u002Fdiv>\n\n## 🤗 引言\n\n**它是什么。** 又一个 Ultralytics 的 [YOLOv5](https:\u002F\u002Fgithub.com\u002Fultralytics\u002Fyolov5) 实现。yolort 致力于使目标检测任务的训练与推理更加无缝地结合在一起。目前，yolort 采用了与官方 YOLOv5 相同的模型结构。显著的区别在于，我们引入了动态形状机制，在此框架下，可以将预处理（letterbox）和后处理（nms）嵌入到模型图中，从而简化部署策略。从这个意义上讲，yolort 使得在 `LibTorch`、`ONNX Runtime`、`TVM`、`TensorRT` 等平台上更轻松、更友好地部署目标检测成为可能。\n\n**关于代码。** 遵循 [detr](https:\u002F\u002Fgithub.com\u002Ffacebookresearch\u002Fdetr) 的设计原则：\n\n> 目标检测不应比分类更困难，也不应需要复杂的库来进行训练和推理。\n\n`yolort` 的实现和实验都非常简单。你喜欢 torchvision 中的 faster-rcnn、retinanet 或 detr 的实现吗？你是否喜欢 yolov5？那你一定会爱上 `yolort`！\n\n\u003Ca href=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhiqwang_yolort_readme_6a5311e32476.jpg\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhiqwang_yolort_readme_6a5311e32476.jpg\" alt=\"YOLO 推理演示\" width=\"500\"\u002F>\u003C\u002Fa>\n\n## 🆕 最新内容\n\n- *2021年12月27日*：新增 `TensorRT` C++ 接口示例。感谢 [Shiquan](https:\u002F\u002Fgithub.com\u002FShiquanYu)。\n- *2021年12月25日*：支持导出为 `TensorRT` 模型，并使用 `TensorRT` Python 接口进行推理。\n- *2021年9月24日*：新增 `ONNX Runtime` C++ 接口示例。感谢 [Fidan](https:\u002F\u002Fgithub.com\u002Fitsnine)。\n- *2021年2月5日*：新增 `TVM` 编译与推理笔记本。\n- *2020年11月21日*：新增图可视化工具。\n- *2020年11月17日*：支持导出为 `ONNX` 模型，并使用 `ONNX Runtime` Python 接口进行推理。\n- *2020年11月16日*：重构 YOLO 模块，支持 *动态形状\u002F批量* 推理。\n- *2020年11月4日*：新增 `LibTorch` C++ 推理示例。\n- *2020年10月8日*：支持导出为 `TorchScript` 模型。\n\n## 🛠️ 使用方法\n\n`yolort` 中没有额外的编译组件，包依赖也极少，因此代码非常易于使用。\n\n### 安装与推理示例\n\n- 首先，请按照 [官方指南](https:\u002F\u002Fpytorch.org\u002Fget-started\u002Flocally\u002F) 安装 PyTorch 1.8.0+ 和 torchvision 0.9.0+。\n\n- 通过 pip 安装\n\n  从 [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Fyolort\u002F) 简单安装：\n\n  ```shell\n  pip install -U yolort\n  ```\n\n  或者从源码安装：\n\n  ```shell\n  # 克隆 yolort 仓库到本地\n  git clone https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort.git\n  cd yolort\n  # 以可编辑模式安装\n  pip install -e .\n  ```\n\n- 安装 pycocotools（用于 COCO 数据集上的评估）：\n\n  ```shell\n  pip install -U 'git+https:\u002F\u002Fgithub.com\u002Fppwwyyxx\u002Fcocoapi.git#subdirectory=PythonAPI'\n  ```\n\n- 读取图像并检测其中的对象 🔥\n\n  ```python\n  from yolort.models import yolov5s\n\n  # 加载模型\n  model = yolov5s(pretrained=True, score_thresh=0.45)\n  model.eval()\n\n  # 对单张图片进行推理\n  predictions = model.predict(\"bus.jpg\")\n  # 对多张图片进行推理\n  predictions = model.predict([\"bus.jpg\", \"zidane.jpg\"])\n  ```\n\n### 通过 `torch.hub` 加载\n\n这些模型也可以通过 torch hub 获取。要加载带有预训练权重的 `yolov5s`，只需执行以下操作：\n\n```python\nmodel = torch.hub.load(\"zhiqwang\u002Fyolort:main\", \"yolov5s\", pretrained=True)\n```\n\n### 从官方 yolov5 加载检查点\n\n以下是加载由 `ultralytics\u002Fyolov5` 训练的检查点权重的接口。有关我们如何与 yolov5 [共享](https:\u002F\u002Fzhiqwang.com\u002Fyolort\u002Fnotebooks\u002Fhow-to-align-with-ultralytics-yolov5.html)以及如何与其 [不同](https:\u002F\u002Fzhiqwang.com\u002Fyolort\u002Fnotebooks\u002Fcomparison-between-yolort-vs-yolov5.html) 的更多信息，请参阅我们的文档。\n\n```python\nfrom yolort.models import YOLOv5\n\n# 从 https:\u002F\u002Fgithub.com\u002Fultralytics\u002Fyolov5\u002Freleases\u002Fdownload\u002Fv6.0\u002Fyolov5s.pt 下载检查点\nckpt_path_from_ultralytics = \"yolov5s.pt\"\nmodel = YOLOv5.load_from_yolov5(ckpt_path_from_ultralytics, score_thresh=0.25)\n\nmodel.eval()\nimg_path = \"test\u002Fassets\u002Fbus.jpg\"\npredictions = model.predict(img_path)\n```\n\n## 🚀 部署\n\n### 在 LibTorch 后端上进行推理\n\n我们提供了一个 [教程](https:\u002F\u002Fzhiqwang.com\u002Fyolort\u002Fnotebooks\u002Finference-pytorch-export-libtorch.html)，演示如何将模型转换为 `torchscript`。同时，我们也提供了 [C++ 示例](deployment\u002Flibtorch)，展示如何使用序列化的 `torchscript` 模型进行推理。\n\n### 在 ONNX Runtime 后端上进行推理\n\n我们提供了一条使用 ONNX Runtime 部署 yolort 的流程。\n\n```python\nfrom yolort.runtime import PredictorORT\n\n# 加载序列化的 ONNX 模型\nengine_path = \"yolov5n6.onnx\"\ny_runtime = PredictorORT(engine_path, device=\"cpu\")\n\n# 对图像文件进行推理\npredictions = y_runtime.predict(\"bus.jpg\")\n```\n\n请查看这篇[教程](https:\u002F\u002Fzhiqwang.com\u002Fyolort\u002Fnotebooks\u002Fexport-onnx-inference-onnxruntime.html)，了解如何使用 yolort 的 ONNX 模型转换及 ONNX Runtime 推理。此外，您还可以使用[示例](deployment\u002Fonnxruntime)来调用 ONNX Runtime 的 C++ 接口。\n\n### 在 TensorRT 后端上进行推理\n\nTensorRT 部署的流程也非常简单易用。\n\n```python\nimport torch\nfrom yolort.runtime import PredictorTRT\n\n# 加载序列化的 TensorRT 引擎\nengine_path = \"yolov5n6.engine\"\ndevice = torch.device(\"cuda\")\ny_runtime = PredictorTRT(engine_path, device=device)\n\n# 对图像文件进行推理\npredictions = y_runtime.predict(\"bus.jpg\")\n```\n\n此外，我们还提供了一篇[教程](https:\u002F\u002Fzhiqwang.com\u002Fyolort\u002Fnotebooks\u002Fonnx-graphsurgeon-inference-tensorrt.html)，详细介绍了如何将 yolort 模型转换为 TensorRT 格式，并使用 Python 接口。如果您想使用 C++ 接口，请参阅此[示例](deployment\u002Ftensorrt)。\n\n## 🎨 模型图可视化\n\n现在，`yolort` 可以直接绘制模型图。请查看我们的[教程](https:\u002F\u002Fzhiqwang.com\u002Fyolort\u002Fnotebooks\u002Fmodel-graph-visualization.html)，了解如何使用和可视化模型图。\n\n\u003Ca href=\"notebooks\u002Fassets\u002Fyolov5_graph_visualize.svg\">\u003Cimg src=\"notebooks\u002Fassets\u002Fyolov5_graph_visualize.svg\" alt=\"YOLO 模型可视化\" width=\"500\"\u002F>\u003C\u002Fa>\n\n## 👋 贡献\n\n我们非常欢迎您的参与！请参阅我们的[贡献指南](.github\u002FCONTRIBUTING.md)，了解如何开始以及如何帮助我们。感谢所有贡献者！如果您喜欢这个项目，请考虑给本仓库加个 ⭐，这是对我们最简单的支持方式。\n\n[![贡献者](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhiqwang_yolort_readme_a10e9e40b40b.png)](https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort\u002Fgraphs\u002Fcontributors)\n\n## 📖 引用 yolort\n\n如果您在论文或其他出版物中使用了 yolort，请使用以下 BibTeX 条目进行引用。\n\n```bibtex\n@Misc{yolort2021,\n  author =       {Zhiqiang Wang、Song Lin、Shiquan Yu、Wei Zeng、Fidan Kharrasov},\n  title =        {YOLORT：用于专用加速器上的目标检测运行时栈},\n  howpublished = {\\url{https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort}},\n  year =         {2021}\n}\n```\n\n## 🎓 致谢\n\n- `yolov5` 的实现借鉴了 [ultralytics](https:\u002F\u002Fgithub.com\u002Fultralytics\u002Fyolov5) 的代码。\n- 本仓库的架构设计及部分代码参考了 [torchvision](https:\u002F\u002Fgithub.com\u002Fpytorch\u002Fvision)。","# YOLOv5 Runtime Stack (yolort) 快速上手指南\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**: Linux, macOS 或 Windows\n*   **Python 版本**: 3.6 - 3.10\n*   **核心依赖**:\n    *   PyTorch >= 1.8.0\n    *   torchvision >= 0.9.0\n*   **可选依赖** (如需在 COCO 数据集上进行评估): `pycocotools`\n\n> **提示**: 请优先参考 [PyTorch 官方安装指南](https:\u002F\u002Fpytorch.org\u002Fget-started\u002Flocally\u002F) 安装适合您 CUDA 版本的 PyTorch。国内用户可使用清华源加速安装：\n> ```shell\n> pip install torch torchvision -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n> ```\n\n## 安装步骤\n\n您可以选择通过 PyPI 直接安装，或从源码安装以获取最新功能。\n\n### 方式一：通过 PyPI 安装（推荐）\n\n```shell\npip install -U yolort\n```\n\n*国内加速:*\n```shell\npip install -U yolort -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 方式二：从源码安装\n\n```shell\n# 克隆仓库\ngit clone https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort.git\ncd yolort\n# 以可编辑模式安装\npip install -e .\n```\n\n### 安装额外依赖 (可选)\n\n如果需要运行 COCO 评估脚本：\n\n```shell\npip install -U 'git+https:\u002F\u002Fgithub.com\u002Fppwwyyxx\u002Fcocoapi.git#subdirectory=PythonAPI'\n```\n\n## 基本使用\n\n`yolort` 提供了极简的 API，支持直接加载预训练模型并进行推理。\n\n### 1. 快速推理示例\n\n以下代码演示了如何加载 `yolov5s` 模型并对单张或多张图片进行目标检测：\n\n```python\nfrom yolort.models import yolov5s\n\n# 加载预训练模型\nmodel = yolov5s(pretrained=True, score_thresh=0.45)\nmodel.eval()\n\n# 对单张图片进行推理\npredictions = model.predict(\"bus.jpg\")\n\n# 对多张图片进行推理\npredictions = model.predict([\"bus.jpg\", \"zidane.jpg\"])\n```\n\n### 2. 通过 Torch Hub 加载\n\n无需克隆仓库，直接使用 `torch.hub` 加载模型：\n\n```python\nimport torch\n\nmodel = torch.hub.load(\"zhiqwang\u002Fyolort:main\", \"yolov5s\", pretrained=True)\n```\n\n### 3. 加载 Ultralytics 官方权重\n\n`yolort` 兼容 Ultralytics 官方训练的 `.pt` 权重文件：\n\n```python\nfrom yolort.models import YOLOv5\n\n# 指定官方权重路径 (需先下载 yolov5s.pt)\nckpt_path_from_ultralytics = \"yolov5s.pt\"\n\n# 加载权重\nmodel = YOLOv5.load_from_yolov5(ckpt_path_from_ultralytics, score_thresh=0.25)\nmodel.eval()\n\n# 执行推理\nimg_path = \"test\u002Fassets\u002Fbus.jpg\"\npredictions = model.predict(img_path)\n```\n\n### 4. 部署后端示例\n\n`yolort` 的核心优势在于轻松部署到不同后端。\n\n**ONNX Runtime 推理:**\n```python\nfrom yolort.runtime import PredictorORT\n\nengine_path = \"yolov5n6.onnx\"\ny_runtime = PredictorORT(engine_path, device=\"cpu\")\npredictions = y_runtime.predict(\"bus.jpg\")\n```\n\n**TensorRT 推理:**\n```python\nimport torch\nfrom yolort.runtime import PredictorTRT\n\nengine_path = \"yolov5n6.engine\"\ndevice = torch.device(\"cuda\")\ny_runtime = PredictorTRT(engine_path, device=device)\npredictions = y_runtime.predict(\"bus.jpg\")\n```","某智能仓储团队正致力于将 YOLOv5 目标检测模型部署到边缘计算设备上，以实现实时包裹分类与异常监控。\n\n### 没有 yolort 时\n- **部署流程割裂**：预处理（如 Letterbox 缩放）和后处理（NMS 非极大值抑制）需在模型外部单独用 Python 或 C++ 实现，导致推理管线复杂且容易出错。\n- **动态尺寸支持差**：原生导出方案难以灵活适配不同分辨率的输入图像，往往需要固定输入尺寸，牺牲了检测精度或增加了填充计算开销。\n- **加速引擎适配难**：想要利用 TensorRT、TVM 或 NCNN 等专用加速器，需手动修改大量算子并重新编译，开发周期长达数周。\n- **端侧延迟高**：由于数据在 CPU 与加速器之间频繁拷贝，且缺乏图级优化，无法满足产线毫秒级的实时响应需求。\n\n### 使用 yolort 后\n- **端到端图融合**：yolort 将预处理和后处理直接嵌入模型计算图中，导出即为完整推理链路，大幅简化了边缘端的代码逻辑。\n- **原生动态形状**：得益于动态形状机制，模型可直接接受任意分辨率输入，无需强制缩放或填充，显著提升了小目标检测效果。\n- **一键多端部署**：通过统一接口即可轻松导出为 TensorRT、ONNX Runtime 或 LibTorch 格式，将原本数周的适配工作缩短至几小时。\n- **极致推理性能**：消除了多余的数据拷贝与非必要计算，在 Jetson 等边缘设备上实现了低延迟、高吞吐的实时检测。\n\nyolort 通过打通训练与推理的壁垒，让复杂的工业级目标检测部署变得像分类任务一样简单高效。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzhiqwang_yolort_6a5311e3.jpg","zhiqwang","Zhiqiang Wang","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fzhiqwang_819be284.jpg","Image processing!","axera","Beijing, China","zhiqwang@foxmail.com",null,"https:\u002F\u002Fzhiqwang.com","https:\u002F\u002Fgithub.com\u002Fzhiqwang",[83,87,91],{"name":84,"color":85,"percentage":86},"Python","#3572A5",82.8,{"name":88,"color":89,"percentage":90},"C++","#f34b7d",16,{"name":92,"color":93,"percentage":94},"CMake","#DA3434",1.2,729,154,"2026-04-02T06:03:51","GPL-3.0","未说明","推理阶段可选：CPU 或 NVIDIA GPU (用于 TensorRT 后端需 CUDA 环境)。训练需求未明确说明具体显存大小。",{"notes":102,"python":103,"dependencies":104},"该工具旨在简化 YOLOv5 的部署，支持动态形状机制，可将预处理和后处理嵌入模型图。支持导出为 TorchScript、ONNX 和 TensorRT 格式，并提供 LibTorch、ONNX Runtime 和 TensorRT 的 C++\u002FPython 推理示例。安装 PyTorch 需遵循官方指南。","3.6-3.10",[105,106,107],"torch>=1.8.0","torchvision>=0.9.0","pycocotools",[14,15],[110,111,112,113,114,115,116,117,118,119,120,121,122,64,123,124,125,126,127,128],"libtorch","yolov5","inference","torchscript","onnx","onnxruntime","tvm","pytorch","detection","jit","visualization","yolo","lightning","deployment","ncnn","tensorrt","graghsurgeon","trt","nms","2026-03-27T02:49:30.150509","2026-04-15T03:29:38.840564",[132,137,142,146,150,155,159],{"id":133,"question_zh":134,"answer_zh":135,"source_url":136},33521,"如何将 Ultralytics YOLOv5 模型（包含 NMS）导出为 ONNX 格式？","您可以参考以下教程进行导出和推理：\n1. 导出与推理笔记：https:\u002F\u002Fzhiqwang.com\u002Fyolov5-rt-stack\u002Fnotebooks\u002Fexport-onnx-inference-onnxruntime.html\n2. ONNXRuntime 部署用法：https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolov5-rt-stack\u002Ftree\u002Fmain\u002Fdeployment\u002Fonnxruntime#usage\n\n注意版本对应关系：Ultralytics v5.0 等同于 v4.0，v6.1 等同于 v6.0。如果您的模型是用 v5.0 训练的，设置 `upstream_version=\"r4.0\"`；如果是 v6.1 训练的，设置 `upstream_version=\"r6.0\"`。","https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort\u002Fissues\u002F159",{"id":138,"question_zh":139,"answer_zh":140,"source_url":141},33522,"使用自定义训练的 YOLOv5 模型时，遇到 'ModuleNotFoundError: No module named models' 或 'KeyError: model' 错误怎么办？","这是因为直接加载 Ultralytics 训练的 `.pt` 文件需要其原始代码结构。解决方法是先提取状态字典（state_dict）：\n\n1. 在 Ultralytics YOLOv5 环境中运行以下代码保存纯权重：\n```python\nimport torch\nfrom models.experimental import attempt_load\nmodel = attempt_load('best.pt', map_location='cpu')\ntorch.save(model.state_dict(), 'bn.pt')\n```\n\n2. 然后在 yolort 中更新模块状态：\n```python\nfrom yolort.utils import update_module_state_from_ultralytics\nmodel = update_module_state_from_ultralytics(arch='yolov5s', version='v4.0', custom_path_or_model=torch.load('.\u002Fbn.pt'), num_classes=1)\ntorch.save(model.state_dict(), 'yolov5s_updated.pt')\n```\n确保传入的是提取后的 state_dict 而非原始模型对象。","https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort\u002Fissues\u002F90",{"id":143,"question_zh":144,"answer_zh":145,"source_url":141},33523,"为什么 yolort 的推理结果与原版 Ultralytics YOLOv5 不一致？","这通常是由预处理步骤的差异引起的。主要区别在于颜色空间转换：\n1. 请确保在输入模型前将图像从 BGR 转换为 RGB。\n2. yolort 内部使用了 `YOLOTransform` 来复现原版的 `letterbox` 预处理，但实现方式不同（使用 Torch 算子而非 OpenCV），以确保可被 TorchScript 追踪。\n3. 如果导出为 TorchScript，调用方式应使用 `model.predict(img)` 而不是 `model(img)`。",{"id":147,"question_zh":148,"answer_zh":149,"source_url":141},33524,"支持哪些版本的 YOLOv5 架构（如 s, m, l, x）？","目前完美支持 yolov5s, yolov5m 和 yolov5l 架构。yolov5x 架构暂时未完全支持，但理论上只需少量修改即可运行。如果您需要支持 yolov5x，欢迎提交 PR。",{"id":151,"question_zh":152,"answer_zh":153,"source_url":154},33525,"在 C++ (LibTorch) 中加载模型时报错 'file not found: archive\u002Fconstants.pkl' 是什么原因？","这是因为导入模型时使用了错误的类。yolort 将 YOLOv5 封装在两个地方：`YOLO` 和 `YOLOModule`。\n- LibTorch 推理必须使用 `YOLOModule`。\n- 如果您在 Python 端导出或使用脚本时误用了 `YOLO` 类，会导致生成的模型文件缺少必要的序列化信息，从而在 C++ 加载时报错。\n请检查您的代码，确保实例化和导出时使用的是 `YOLOModule`。","https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort\u002Fissues\u002F142",{"id":156,"question_zh":157,"answer_zh":158,"source_url":154},33526,"yolort 的预处理（Pre-processing）与原版 YOLOv5 有何不同？","yolort 在 `YOLOModule` 中封装了预处理逻辑。原版 YOLOv5 使用 OpenCV (`cv2.resize`, `cv2.copyMakeBorder`) 实现 `letterbox`，但这无法被 `torch.jit.script` 追踪。\nyolort 使用纯 Torch 算子重新实现了相同的功能（称为 `YOLOTransform`），以保证模型可以顺利导出为 TorchScript 或 ONNX。虽然实现底层不同，但最终效果是一致的。",{"id":160,"question_zh":161,"answer_zh":162,"source_url":163},33527,"如何验证模型转换流程是否正确？","建议先在 CPU 环境下运行测试，确保流程无误。您可以参考项目的 CI 测试流程来验证操作步骤：\nhttps:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolov5-rt-stack\u002Fblob\u002F3eab7bee28ef23cd86012fe5d5a309a6dad7d56c\u002F.github\u002Fworkflows\u002Fci-test.yml#L122-L148\n如果在特定环境（如 GPU 或 C++）报错，请先确保基础 Python\u002FCPU 流程跑通。","https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolort\u002Fissues\u002F486",[165,170,175,180,185,190,195,200,205,210,215,220,225,230,235,240,245,250],{"id":166,"version":167,"summary_zh":168,"released_at":169},255716,"v0.6.3","本次发布主要针对 TensorRT C++ 示例（#389）和 Python 接口（#396）在 Windows 系统上的兼容性问题。此外，本版本还引入了名为 `is_module_available` 和 `requires_module` 的模块辅助函数，以支持第三方库的惰性初始化（#366、#367）。\n\n除此之外，我们还：\n\n- 修复了 `load_from_ultralytics` 的循环引用问题（#369、#373、#374）\n- 将 PyYAML 添加到依赖项中（#363）\n- 增加了一个用于将 YOLO 格式转换为 MSCOCO 格式的命令行工具（#375）\n- 升级了依赖项（#372、#386、#398）\n- 更新了徽章并修复了文档（#388、#391）\n\n我们非常感谢社区的支持，大家通过提交 issue 和 PR、提供反馈与建议，帮助我们不断改进 yolort。以下人员为本次发布贡献了补丁：\n\n@IamNaQi @mattpopovich @Yoh-Z @zhiqwang \n","2022-05-04T04:29:01",{"id":171,"version":172,"summary_zh":173,"released_at":174},255717,"v0.6.2","本次发布主要是针对 PyTorch 1.11.0 的**兼容性更新**（#359），并支持加载使用 YOLOv5 中的 AutoAnchor 机制训练得到的检查点（#285、#352）。\n\n此外，我们还：\n\n- 将偏置项的初始化从私有方法移至构造函数中（#351）\n- 将 PyTorch 的最低版本要求提升至 1.8.0（#359）\n- 增加对 Python 3.10 的支持（仅适用于 PyTorch 1.11）（#359）\n- 移除对 Lightning 的强依赖（#355、#358）\n- 使用 `Visualizer` 更新教程内容（#354）\n- 进行了一些语法和拼写的小修小补（#357）\n\n我们非常感谢社区的支持，大家通过提交 Issue 和 Pull Request、提供反馈与建议，帮助我们不断改进 yolort。以下几位为本次发布贡献了补丁：\n\n@mattpopovich @zhiqwang\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolov5-rt-stack\u002Fcompare\u002Fv0.6.1...v0.6.2","2022-03-12T06:09:59",{"id":176,"version":177,"summary_zh":178,"released_at":179},255718,"v0.6.1","本次发布新增了一个示例，展示如何使用 TorchVision 提供的模型库构建一个新的 YOLOv5 模型；引入了 `Visualizer` 工具用于显示预测结果，并修复了 YOLOv5 Detect 层中的一个不兼容性 bug。\n\n# 亮点\n\n## 通过 TorchVision 模型库构建新的 YOLOv5 模型\n\n我们新增了一个示例，演示如何以 TorchVision 预训练的 MobileNetV3-Small FPN 作为骨干网络，构建 YOLOv5-Lite 模型。\n\n```python\nimport torch\nfrom yolort.models.yolo_lite import yolov5_mobilenet_v3_small_fpn\n\nmodel = yolov5_mobilenet_v3_small_fpn()\nmodel = model.eval()\n\nimages = torch.rand(4, 3, 640, 640)\nout = model(images)\n```\n\n- 按照 YOLOv5 的模型规范使用 C3 模块 (#343)\n- 使用 TorchVision 的 MobileNetV3 骨干网络构建 YOLOv5 模型 (#342)\n\n## 引入新的可视化接口\n\n```python\nfrom torchvision.io import read_image\nfrom yolort.models import yolov5n6\nfrom yolort.utils import Visualizer\n\nmodel = yolov5n6(pretrained=True, score_thresh=0.45)\nmodel = model.eval()\nimg_path = \"bus.jpg\"\npreds = model.predict(img_path)\n\nmetalabels_path = \"coco.names\"\nimage = read_image(img_path)\nv = Visualizer(image, metalabels=metalabels_path)\nv.draw_instance_predictions(preds[0])\nv.imshow(scale=0.5)\n```\n\n- 添加用于可视化的 `Visualizer` 工具 (#341)\n\n# Bug 修复\n\n- 修复 YOLOv5 AnchorGenerator 的兼容性问题 (#345)\n- 在 export_tensorrt 函数中添加缺失的版本参数 (#335)\n\n# 代码质量\n\n- 更新文档和 PR 建议中的 Visualizer 相关内容 (#346)\n- 在 GitHub Actions 中升级版本号 (#344、#338、#337)\n\n# 贡献者\n\n我们非常感谢社区的支持，大家通过提交 issue 和 PR、提供反馈与建议，帮助我们不断改进 yolort。以下人员为本次发布贡献了补丁：\n\n@Luwill6、@zhiqwang\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fzhiqwang\u002Fyolov5-rt-stack\u002Fcompare\u002Fv0.6.0...v0.6.1","2022-03-08T15:32:58",{"id":181,"version":182,"summary_zh":183,"released_at":184},255719,"v0.6.0","本次发布同时提供了 Python 和 C++ 接口的 TensorRT 部署支持，并支持与官方 YOLOv5 的预处理对齐。\n\n# 亮点\n\n## 使用 yolort 在 TensorRT 上部署 YOLOv5\n\n与其他在 TensorRT 上处理 YOLOv5 的流水线不同，我们通过 TensorRT 的 `EfficientNMS_TRT` 插件将整个后处理嵌入到序列化的引擎中。这种流水线可以简化部署，并由于 TensorRT 对该插件的高效实现而提升速度。请参阅这篇 [教程](https:\u002F\u002Fzhiqwang.com\u002Fyolov5-rt-stack\u002Fnotebooks\u002Fonnx-graphsurgeon-inference-tensorrt.html)，其中详细介绍了 yolort 的模型转换及使用场景。以下是一个在 TensorRT 上部署 YOLOv5 的 Python 流水线。\n\n```python\nimport torch\nfrom yolort.runtime import PredictorTRT\n\n# 加载序列化的 TensorRT 引擎\nengine_path = \"yolov5n6.engine\"\ndevice = torch.device(\"cuda\")\ny_runtime = PredictorTRT(engine_path, device=device)\n\n# 对一张图像文件进行推理\npredictions = y_runtime.predict(\"bus.jpg\")\n```\n\n- 支持将 yolort 导出为 TensorRT 序列化引擎 (#238, #242, #243, #252, #254, #263, #275, #288, #311, #312, #326)\n- 添加 TensorRT Python 推理流水线 (#251, #253, #256, #259, #283, #290, #307, #309)\n- 添加 TensorRT C++ 推理示例 (#245, #257, #258, #261, #262, #305, #321, #323, #324)\n\n## 与官方 YOLOv5 预处理对齐\n\n预处理不一致一直是 yolort 落地的一个障碍，而在本次发布中我们已经解决了这个问题。\n\n- 修复预处理与 YOLOv5 的一致性 (#293)\n- 支持预处理中的固定形状推理 (#301)\n- 修复 TVM VM 推理的预处理问题 (#302)\n\n# 向后不兼容的更改\n\n- 将 relay 重命名为 relay (#313)\n- 将 Lightning 包装器移至 trainer 中 (#314)\n- 弃用 `PredictorORT` 中的 `run_on_image` 方法 (#327)\n\n# 改进\n\n- 支持加载最新版本的 YOLOv5 (#235)\n- 正式文档支持 (#224, #225, #292)\n- 清理 AnchorGenerator 和 PostProcess (#203)\n- 为保持下游兼容性，将 `SPPF` 恢复为 `SPP` (#240)\n- 支持导出 ONNX 模型时自定义图像尺寸 (#250, #264, #269)\n- 在 GH Actions 中升级到最新版 PyTorch (#255)\n- 在 TVM relay VM 教程中将 PyTorch 更新至 1.10 (#287)\n- 增强 `PredictorORT` 以适应更多场景 (#319, #320, #327)\n- 支持通过 GH Actions 将 🐍 发布到 PyPI.org 📦 (#229, #241, #306, #328, #329)\n\n# Bug 修复\n\n- 对 CONTRIBUTING 指南进行小幅修正 (#218)\n- 修复 ONNX Runtime C++ 示例中的类型转换问题 (#221)\n- 修复自定义检查点的 TorchScript 导出问题 (#267)\n- 修复教程中的非通用参数问题 (#284)\n- 修复一个 bug 并添加 RandomZoomOut 的文档说明 (#289)\n- 使 LibTorch 部署与 Windows 兼容 (#303)\n\n# 文档改进\n\n- 添加 YOLOv5 和 yolort 的对比文档 (#300)\n- 更新文档和 README 文件 (#223, #299, #304, #308, #315)\n- 将 Fidan 和 Shiquan 列为共同作者，以表彰他们的杰出贡献 (#231)","2022-02-19T10:08:48",{"id":186,"version":187,"summary_zh":188,"released_at":189},255720,"v0.5.2","本次发布主要支持上游 YOLOv5 v6.0 模型。\n\n# 亮点\n\n我们默认将模型版本设置为 r6.0，其余使用接口与之前保持一致。\n\n```python\nfrom yolort.models import yolov5n6\n\n# 加载模型\nmodel = yolov5n6(upstream_version=\"r6.0\", pretrained=True, score_thresh=0.45)\nmodel.eval()\n\n# 对单张图片进行推理\npredictions = model.predict(\"bus.jpg\")\n# 对多张图片列表进行推理\npredictions = model.predict([\"bus.jpg\", \"zidane.jpg\"])\n```\n\n## 新特性\n\n- 完全支持上游 YOLOv5 v6.0 模型 (#194, #195, #196, #199, #204, #206, #213, #215) 感谢 @deepage\n- 支持 PyTorch 1.10 (#207)\n- 导出 ONNX 时支持跳过预处理 (#193)\n\n## 向后不兼容的变更\n\n- 将 `main` 设置为基分支 (#200)\n- 将 `_yolov5_darknet_pan` 重命名为 `build_model` (#198)\n\n## 优化\n\n- 在单元测试中使用 `torch.jit.trace`，以便下游更易使用 (#205) 感谢 @nihui\n- 更新模型图可视化图片 (#212)\n- [pre-commit.ci] 自动更新 pre-commit (#191, #197)\n\n## Bug 修复\n\n- 修复 PyPI 上无法渲染的图片问题 (#209, #210)\n- 修复锚点配置机制 (#201, #202)\n- 对文档字符串进行小幅修复 (#208)\n","2021-10-27T09:02:27",{"id":191,"version":192,"summary_zh":193,"released_at":194},255721,"v0.5.2rc1","**最后修改日期：** 2021-10-26\n\n留出一块空间来存储模型检查点。\n\n_注意：此处的所有检查点均使用 sha256 哈希。_","2021-10-25T10:42:42",{"id":196,"version":197,"summary_zh":198,"released_at":199},255722,"v0.5.2-alpha","**最后修改日期：** 2021-10-24\n\n只需留出一块空间来存储模型检查点即可。\n\n_注：此处的所有检查点均使用 SHA-256 哈希。_","2021-10-17T04:08:35",{"id":201,"version":202,"summary_zh":203,"released_at":204},255723,"v0.5.1","此版本修复了依赖问题。  \n无功能变更。","2021-10-04T08:57:20",{"id":206,"version":207,"summary_zh":208,"released_at":209},255724,"v0.5.0","本次发布通过引入 `yolort.runtime` 接口并添加 C++ 接口示例，进一步增强了对 `ONNXRuntime` 的支持。同时，也改进了加载由 `ultralytics\u002Fyolov5` 训练的检查点的功能。\n\n# 亮点\n\n## 引入 yolort.runtime 接口\n\n我们引入了 `yolort.runtime` 接口，以加速 Python 前端的应用开发。例如，您可以按如下方式定义运行时并使用 `ONNXRuntime` 进行推理：\n\n```python\nfrom yolort.runtime import PredictorORT\n\ndetector = PredictorORT(\"best.onnx\")\nimg_path = \"bus.jpg\"\nscores, class_ids, boxes = detector.run_on_image(img_path)\n```\n\n## ONNXRuntime C++ 推理示例\n\n我们在导出 `ONNX` 模型时采用了动态形状机制，并在此过程中将预处理（`letterbox`）和后处理（`nms`）嵌入到模型图中，从而简化了部署策略。@itsnine 已经在 [这里](deployment\u002Fonnxruntime\u002FREADME.md) 提供了如何使用的示例。\n\n## 从官方 YOLOv5 加载检查点\n\n我们现在提供了一个接口，可以直接加载由官方 `yolov5` 训练得到的检查点权重。\n\n```python\nfrom yolort.models import YOLOv5\n\n# 'yolov5s.pt' 是从 https:\u002F\u002Fgithub.com\u002Fultralytics\u002Fyolov5\u002Freleases\u002Fdownload\u002Fv5.0\u002Fyolov5s.pt 下载的\nckpt_path_from_ultralytics = \"yolov5s.pt\"\nmodel = YOLOv5.load_from_yolov5(ckpt_path_from_ultralytics, score_thresh=0.25)\n\nmodel.eval()\nimg_path = \"test\u002Fassets\u002Fbus.jpg\"\npredictions = model.predict(img_path)\n```\n\n# 向后不兼容的更改\n\n- 将通用工具移至 `yolort.v5` (#167)\n- 将 `YOLOModule` 重命名为 `YOLOv5` (#179)\n- 将图可视化工具移至 `yolort.relaying` (#165)\n\n# 新特性\n\n- \\[原型\\] 添加 ncnn 部署示例 (#145)\n- \\[原型\\] 从头开始训练模型 (#115, #116, #124, #125, #128, #143)\n- 支持从官方 yolov5 加载检查点 (#167, #168, #169, #179)\n- 添加 ONNXRuntime C++ 推理示例 (#171, #172, #174, #186)，感谢 @itsnine 和 @xiguadong\n- 引入 `yolort.runtime` 接口 (#176, #178)\n- 添加 pre-commit.ci 钩子 (#182)\n- 添加用于导出 ONNX 模型的 CLI 工具 (#175)，感谢 @runrunrun1994\n- 添加用于评估 mAP 指标的 CLI 工具 (#148, #150)\n\n# 改进\n\n- 与 ultralytics yolov5 教程保持一致 (#117, #118, #121)，感谢 @xiguadong\n- 重构图可视化工具 (#126, #127, #165)，感谢 @xiguadong\n- 将 TorchVision C++ 接口更新至 0.9.0+ (#136, #138)，感谢 @xiguadong\n- 使用 cmdline 替代 cxxopts (#137)\n- 更新依赖项 (#161, #162, #163, #164, #181)\n- 简化单元测试 (#149, #151, #152)\n- 支持从 ultralytics 自动计算的先验框 (#120)，感谢 @Tomakko\n- 对 `YOLOTransform` 进行变通处理，以支持固定尺寸输入 (#109)\n- 统一 ONNX 和 JIT 的缩放实现 (#105)\n\n# Bug 修复\n\n- 修复异常 (#183)\n- 修复 AnchorGenerator 中的数据类型问题 (#111, #113, #166)，感谢 @dkloving\n- 使 targets 参数 i","2021-10-03T17:43:38",{"id":211,"version":212,"summary_zh":213,"released_at":214},255725,"v0.4.0","本次发布引入了针对 COCO 数据集的 mAP 指标，并对数据流水线进行了重构，使其对用户更加清晰易懂。\n\n## 添加 COCOEvaluator 并清理数据流水线\n\n- 清理并重构数据流水线 (#103, #88)\n- 修复 COCO 评估器的单元测试 (#91)\n- 在任务中添加 mAP 指标及验证方法 (#93, #89)\n\n## 向后不兼容的更改\n\n- 将 `YoloHead` 重命名为 `YOLOHead` (#82)\n- 将 `GeneralizedYOLOTransform` 重命名为 `YOLOTransform` (#103)\n\n## 新特性\n\n- 保持变换的一致性 (#102)\n- 添加基于 Transformer (TAN) 的模型结构 (#75, #81)\n- 支持使用原生模块进行训练 (#87)\n- 使用 Sphinx 添加文档 (#85)\n- 解耦 Notebook 中的路径依赖 (#84)\n- 允许加载用户训练的 Ultralytics 模型 (#79)，感谢 @dkloving\n- 将 PyTorch 1.8 加入 CI (#76)\n\n## Bug 修复\n\n- 修复 read_image_to_tensor 中的 bug (#97)，感谢 @stereomatchingkiss\n\n## 文档\n\n- 添加关于依赖项的注释 (#96)\n- 将 print 语句替换为日志库 (#95)，感谢 @itsabhianant\n- 更新徽章 (#83)\n- 添加关于最低 PyTorch 版本的说明 (#74)\n- 重命名参数以保持一致性 (#82)","2021-05-01T15:26:28",{"id":216,"version":217,"summary_zh":218,"released_at":219},255726,"v0.3.2","This is a minor release to support the upstream [ultralytics\u002Fyolov5](https:\u002F\u002Fgithub.com\u002Fultralytics\u002Fyolov5\u002Freleases\u002Ftag\u002Fv4.0) v4.0 release stacks\r\n\r\n- Add export friendly substitutions of SiLU (#69)\r\n- Support ultralytics released v4.0 stacks (#66)","2021-02-23T17:19:41",{"id":221,"version":222,"summary_zh":223,"released_at":224},255727,"v0.3.1","## Highlights\r\n\r\n### Support TVM backend inference\r\n\r\nThis release support TVM backend inference (#63, #53, #51, #50). Here is a rough comparison of inference time consumed on Jupyter notebook (iPython) (#54).\r\n\r\n- On the ONNXRuntime backend,\r\n\r\n  ```bash\r\n  CPU times: user 2.04 s, sys: 0 ns, total: 2.04 s\r\n  Wall time: 55.8 ms\r\n  ```\r\n\r\n- On the TorchScript backend,\r\n\r\n  ```bash\r\n  CPU times: user 2.03 s, sys: 32 ms, total: 2.06 s\r\n  Wall time: 60.5 ms\r\n  ```\r\n\r\n- On the PyTorch backend,\r\n\r\n  ```bash\r\n  CPU times: user 3.87 s, sys: 60 ms, total: 3.93 s\r\n  Wall time: 116 ms\r\n  ```\r\n\r\n- On the TVM backend,\r\n\r\n  ```bash\r\n  CPU times: user 528 ms, sys: 364 ms, total: 892 ms\r\n  Wall time: 22.3 ms\r\n  ```\r\n\r\n### Inherited from Lightning\r\n\r\nyolort module are now inherited from LightningModule (#62, #48, #46, #43). To read a source of image(s) and detect its objects just run as following.\r\n\r\n```python\r\nfrom yolort.models import yolov5s\r\n\r\n# Load model\r\nmodel = yolov5s(pretrained=True, score_thresh=0.45)\r\nmodel.eval()\r\n\r\n# Perform inference on an image file\r\npredictions = model.predict('bus.jpg')\r\n# Perform inference on a list of image files\r\npredictions = model.predict(['bus.jpg', 'zidane.jpg'])\r\n```\r\n\r\n## Backwards Incompatible Changes\r\n\r\n- Make `yolort` as a Python package (#55, #56)\r\n\r\n## New Features\r\n\r\n- Add flake8 lint unittest (#58)\r\n- Create codeql-analysis.yml (#37)\r\n- Refactor darknet backbone as separate modules (#33)\r\n- Add ISSUE_TEMPLATE and codecov workflows (#24)\r\n- Refactor model unittest (#23)\r\n- Replacing all torch.jit.annotations with typing (#22)\r\n- Add automatic rebase (#11)\r\n- Add torchscript export and model unittest (#8)\r\n- Support yolov5m and yolov5l models (#7)\r\n- Add essential scripts for training (#5)\r\n- Enable unittest in pytorch nightly version (#4)\r\n- Add half precision inference in libtorch (#1)\r\n\r\n## Bug Fixes\r\n\r\n- Rescale to original scale after post-processor (#47)\r\n- Suppress cpp language analysis (#40)\r\n- Fix inference inconsistency compare with ultralytics (#31)\r\n- Fix loss computation (#25)\r\n- Add missing Detection struct (#27)\r\n- Fix ops missing from upstream (#21)\r\n- Fixes ORT segfault in nightly version (#18)\r\n- Fix loading with coco and voc datasets (#12)\r\n- Correcting incorrect types (#3)\r\n\r\n## Documents\r\n\r\n- Update CODE_OF_CONDUCT.md (#61)\r\n- Cleanup requirements.txt (#57)\r\n- Update readme and setup instructions [skip ci] (#56, #19, #13)\r\n- Add ultralytics like model loading notebooks (#52)\r\n- Create CONTRIBUTING.md (#36) and CODE_OF_CONDUCT.md (#35) , thanks @BobinMathew !\r\n- Fix badge links of GH actions (#32)\r\n- Add statement of stable branch (#30)\r\n- Make it more readable (#20)\r\n- Update checkpoints updating information (#15)\r\n- Add design principle (#14)\r\n- Update Namespace arguments in updating checkpoints (#10)\r\n- Use yolov5s, yolov5m and yolov5l directly (#9)","2021-02-17T07:34:14",{"id":226,"version":227,"summary_zh":228,"released_at":229},255728,"v0.3.0","**Last modified date:** 2021-02-22\r\n\r\nJust leave a block of space to store the model checkpoints.\r\n\r\n_NOTE: All checkpoints here make use of MD5 hash._","2021-01-26T18:30:51",{"id":231,"version":232,"summary_zh":233,"released_at":234},255729,"v0.2.4","## New Features\r\n\r\n- Support `yolov5m` and `yolov5l` models (#7)","2020-12-01T07:12:01",{"id":236,"version":237,"summary_zh":238,"released_at":239},255730,"v0.2.3","## New Features\r\n\r\n- Add `libtorch` and `onnx` inference and export notebooks. *Nov.﻿ 21, 2020*.\r\n- Add graph visualization tools and notebooks. *Nov. 21, 2020*.","2020-11-21T06:34:38",{"id":241,"version":242,"summary_zh":243,"released_at":244},255731,"v0.2.2","## New Features\r\n\r\n- Refactor the `Backbone` modules, *Nov.﻿ 16, 2020*.\r\n- Support exporting to `onnx`, and doing inference using `onnxruntime`. *Nov. 17, 2020*.","2020-11-15T16:55:05",{"id":246,"version":247,"summary_zh":248,"released_at":249},255732,"v0.2.1","## New Features\r\n\r\n- Add `TorchScript` cpp interface example, *Nov. 4, 2020*.\r\n- Refactor the `YoloHead` and `AnchorGenerator` modules, *Nov.﻿ 11, 2020*.","2020-11-09T18:14:46",{"id":251,"version":252,"summary_zh":253,"released_at":254},255733,"v0.1.0","## New Features\r\n\r\n- Support exporting to `TorchScript` model, and doing inference using python interface, *Oct. 8, 2020*.\r\n- Support doing inference using `libtorch` cpp interface, *Oct. 10, 2020*.﻿","2020-10-10T16:24:39"]