[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-Shank2358--GGHL":3,"tool-Shank2358--GGHL":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 真正成长为懂上",160784,2,"2026-04-19T11:32:54",[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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",109154,"2026-04-18T11:18:24",[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":75,"owner_twitter":75,"owner_website":78,"owner_url":79,"languages":80,"stars":114,"forks":115,"last_commit_at":116,"license":117,"difficulty_score":118,"env_os":119,"env_gpu":120,"env_ram":121,"env_deps":122,"category_tags":134,"github_topics":135,"view_count":32,"oss_zip_url":75,"oss_zip_packed_at":75,"status":17,"created_at":146,"updated_at":147,"faqs":148,"releases":178},9721,"Shank2358\u002FGGHL","GGHL","This is the implementation of GGHL (A General Gaussian Heatmap Label Assignment for Arbitrary-Oriented Object Detection)","GGHL 是一套专为任意方向目标检测设计的开源算法实现，其核心在于提出了一种通用的“高斯热力图标签分配”策略。在遥感图像、场景文字识别等领域，物体往往呈现倾斜或非规则排列，传统基于水平框的检测方法难以精准定位，而现有的旋转框检测方法又常受限于标签分配不均的问题。GGHL 通过构建自适应的高斯热力图，将分类与回归任务更紧密地结合，有效解决了旋转目标在训练过程中正负样本匹配困难、定位精度不足的痛点，显著提升了模型对密集及大角度变化目标的检测能力。\n\n该项目不仅提供了完整的训练代码和预训练模型，还包含了详细的文档说明，并衍生出了针对 TensorRT C++ 及 Nvidia Jetson 嵌入式设备的部署教程，极大地降低了从理论研究到实际落地的门槛。此外，基于 GGHL 改进的后续研究（如 TS-Conv）及相关知识蒸馏探索也已陆续开源，展现了良好的生态扩展性。GGHL 非常适合计算机视觉领域的研究人员、算法工程师以及需要处理复杂场景下旋转目标检测任务的开发者使用。无论是希望深入理解前沿标签分配机制的学者，还是寻求高效解决方案的工程团队，都能从中获得有价值的参考与实践工具。","# GGHL: A General Gaussian Heatmap Label Assignment for Arbitrary-Oriented Object Detection  \n\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002F\">\n    \u003Cimg alt=\"Version\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVersion-1.3.0-blue\" \u002F>\n  \u003C\u002Fa>\n  \n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002Fblob\u002Fmain\u002FLICENSE\">\n    \u003Cimg alt=\"GPLv3.0 License\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-GPLv3.0-blue\" \u002F>\n  \u003C\u002Fa>\n  \n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FShank2358\" target=\"_blank\">\n  \u003Cimg src=\"https:\u002F\u002Fvisitor-badge.glitch.me\u002Fbadge?page_id=gghl.visitor-badge&right_color=blue\"\n  alt=\"Visitor\" \u002F>\n\u003C\u002Fa> \n\n\u003Ca href=\"mailto:zhanchao.h@outlook.com\" target=\"_blank\">\n   \u003Cimg alt=\"E-mail\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTo-Email-blue\" \u002F>\n\u003C\u002Fa> \n\n## This is the implementation of GGHL 👋👋👋\n[[Arxiv](https:\u002F\u002Farxiv.org\u002Fabs\u002F2109.12848)] [[IEEE TIP](https:\u002F\u002Fieeexplore.ieee.org\u002Fdocument\u002F9709203)] [[Google Drive](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F16k7JW-eb3jbga1xzq6B6r60gl2XniXfn?usp=sharing)][[Baidu Disk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F12MD7XAL6iwVUHMHRkEcLWA) (password: yn04)]  \n\n#### IEEE的正式版排版丑死了（不得不吐槽），有的图还显示有问题，还是下载arxiv版本的吧，我已经更新了arxiv，内容和正式版一样。  \n\n####  [TensorRT C++部署版本教程](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F551057399)和[Nvidia Jetson嵌入式部署版本教程](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F558747842)看这里！！！  感谢最最亲爱的师弟[Crescent-Ao](https:\u002F\u002Fgithub.com\u002FCrescent-Ao)和[haohaoolalahao](https:\u002F\u002Fgithub.com\u002Fhaohaoolalahao)\n\n####  GGHL基础上改进的标签分配写到了新论文[TS-Conv](https:\u002F\u002Farxiv.org\u002Fabs\u002F2209.02200)里，[TS-Conv的代码](https:\u002F\u002Fgithub.com\u002FShank2358\u002FTS-Conv)放出来了在这里（还在更新完善中）  \n\n#### GGHL做知识蒸馏的一些尝试的论文[DKED](https:\u002F\u002Fieeexplore.ieee.org\u002Fdocument\u002F9747798)在这里（用来Social和旅游的会议），这个等年底有空了扩写和更新代码  \n\n  ### Give a ⭐️ if this project helped you. If you use it, please consider citing:\n  ```IEEE TIP\n  @ARTICLE{9709203,\n  author={Huang, Zhanchao and Li, Wei and Xia, Xiang-Gen and Tao, Ran},\n  journal={IEEE Transactions on Image Processing}, \n  title={A General Gaussian Heatmap Label Assignment for Arbitrary-Oriented Object Detection}, \n  year={2022},\n  volume={31},\n  number={},\n  pages={1895-1910},\n  doi={10.1109\u002FTIP.2022.3148874}}\n  ```\n\n### Clone不Star,都是耍流氓 🤡🤡🤡\n  \n\u003Cp algin=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShank2358_GGHL_readme_f86e7b9a2095.png\" width=\"380\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShank2358_GGHL_readme_893766e0250e.png\" width=\"430\">\n\u003C\u002Fp>\n\u003Cp algin=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShank2358_GGHL_readme_c783350d8cdf.png\" width=\"700\">\n\u003C\u002Fp>\n\n## 0. Something Important 🦞 🦀 🦑 \n* #### 💖💖💖 Thanks to [Crescent-Ao](https:\u002F\u002Fgithub.com\u002FCrescent-Ao) and [haohaoolalahao](https:\u002F\u002Fgithub.com\u002Fhaohaoolalahao) for contributions to the GGHL repository, thanks to [Crescent-Ao](https:\u002F\u002Fgithub.com\u002FCrescent-Ao) for the GGHL deployment Version. Relevant warehouses will continue to be updated, so stay tuned.  \n    #### 打个广告，GGHL部署版本[GGHL-Deployment](https:\u002F\u002Fgithub.com\u002FCrescent-Ao\u002FGGHL-Deployment)已经上线，欢迎大家使用~~ 感谢我最亲爱的师弟[Crescent-Ao](https:\u002F\u002Fgithub.com\u002FCrescent-Ao)和[haohaolalahao](https:\u002F\u002Fgithub.com\u002Fhaohaolalahao)对GGHL仓库的贡献，感谢[Crescent-Ao](https:\u002F\u002Fgithub.com\u002FCrescent-Ao)完成的GGHL部署版本。相关仓库还会持续更新中，敬请期待。\n\n* #### 😺😺😺 Welcome everyone to pay attention to the MGAR completed by [haohaoolalahao](https:\u002F\u002Fgithub.com\u002Fhaohaoolalahao) in cooperation with me, which has been accepted by [IEEE TGRS](https:\u002F\u002Fieeexplore.ieee.org\u002Fdocument\u002F9912396).  \n    #### 再打个广告，欢迎大家关注[haohaolalahao](https:\u002F\u002Fgithub.com\u002Fhaohaolalahao)与我合作完成的遥感图像目标检测工作 MGAR: Multi-Grained Angle Representation for Remote Sensing Object Detection，论文已经正式接收[IEEE TGRS](https:\u002F\u002Fieeexplore.ieee.org\u002Fdocument\u002F9912396) [Arxiv](https:\u002F\u002Farxiv.org\u002Fabs\u002F2209.02884), 感谢大家引用：\n  ```IEEE TGRS\n    @ARTICLE{9912396,\n      author={Wang, Hao and Huang, Zhanchao and Chen, Zhengchao and Song, Ying and Li, Wei},\n      journal={IEEE Transactions on Geoscience and Remote Sensing}, \n      title={Multi-Grained Angle Representation for Remote Sensing Object Detection}, \n      year={2022},\n      volume={},\n      number={},\n      pages={1-1},\n      doi={10.1109\u002FTGRS.2022.3212592}}\n  ```  \n* #### 🙆‍♂️🙆‍♂️Fixed multi-scale training bugs when torch>=1.7 and using distributed training. Please update the pytorch to version1.11. Thanks to [@haohaolalahao](https:\u002F\u002Fgithub.com\u002Fhaohaolalahao).\n* #### 最近在学习MMRotate，后续有计划在MMRotate框架下写一版GGHL,先立个FLAG🤖🤖    \n* #### 关于在去年年底前出GGHLv2的FLAG不出所料的倒掉了🤣🤣🤣，我是大鸽子🕊️🕊️🕊️🕊️咕咕咕。写论文对我来说好难啊啊啊啊，重新扶起这个FLAG，两个月后把论文写完吧（...实验早跑完了，现在每天憋出100个字）  \n* #### 谢谢大家的反馈和ISSUES里面的各种意见，非常感谢🥰🥰🥰   \n* #### 🧸 The OpenCV version needs to be >=4.5.3, the label conversion script is .\u002Fdatasets_tools\u002F[DOTA2Train.py](https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002Fblob\u002Fmain\u002Fdatasets_tools\u002FDOTA2Train.py)\n* #### 🚀 See [issues #4](https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002Fissues\u002F4) for distributed training (pytorch==1.11).\n* #### 🌟 I have updated the function of polyiou and polynms. The code of latest evaluator is in [.\u002FevalR\u002FevaluatorGGHL_new.py](https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002Fblob\u002Fmain\u002FevalR\u002FevaluatorGGHL_new.py)\n* #### 🥂 Thanks [@trungpham2606](https:\u002F\u002Fgithub.com\u002Ftrungpham2606), [@lalalagogogo](https:\u002F\u002Fgithub.com\u002Flalalagogogochong), [@zhuyh1223](https:\u002F\u002Fgithub.com\u002Fzhuyh1223) and [@aiboys](https:\u002F\u002Fgithub.com\u002Faiboys) for the suggestions and feedback.  \n* #### 🦄 Thanks to my collaborator [@haohaolalahao](https:\u002F\u002Fgithub.com\u002Fhaohaolalahao) for his great contribution to this project. The discussion of “Refined approximation of OBBs” in the revised paper was proposed by [@haohaolalahao](https:\u002F\u002Fgithub.com\u002Fhaohaolalahao) and I when we participated in a remote sensing object detection competition in 2020.  \n* #### 🤖 Thanks to [@Crescent-Ao](https:\u002F\u002Fgithub.com\u002FCrescent-Ao) for his suggestions on the revised manuscript and his great contribution to publicizing this work.  \n* #### 😸 I am very grateful for every discussion between [@haohaolalahao](https:\u002F\u002Fgithub.com\u002Fhaohaolalahao), [@Crescent-Ao](https:\u002F\u002Fgithub.com\u002FCrescent-Ao) and me. Thank you for making this work grow. Although it is not mature yet, I believe it will get better and better with our efforts.  \n* #### 中文版的说明可以看知乎上[@Crescent-Ao](https:\u002F\u002Fgithub.com\u002FCrescent-Ao)写的文章：[Gaussian heatmap label assignment](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F452595960)，[GGHL代码解读](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F465668926)和[Oriented-bounding-box representation component (ORC)](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F448339670)，还在陆续更新中。欢迎大家点赞、喜欢、收藏三连。\n\n## 🌈 1.Environments\nLinux (Ubuntu 18.04, GCC>=5.4) & Windows (Win10)   \nCUDA > 11.1, Cudnn > 8.0.4\n\nFirst, install CUDA, Cudnn, and Pytorch.\nSecond, install the dependent libraries in [requirements.txt](https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002Fblob\u002Fmain\u002Frequirements.txt). \n\n```python\nconda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch \npip install -r requirements.txt  \n```\n    \n## 🌟 2.Installation\n1. git clone this repository    \n\n2. Polygen NMS  \nThe poly_nms in this version is implemented using shapely and numpy libraries to ensure that it can work in different systems and environments without other dependencies. But doing so will slow down the detection speed in dense object scenes. If you want faster speed, you can compile and use the poly_iou library (C++ implementation version) in datasets_tools\u002FDOTA_devkit. The compilation method is described in detail in [DOTA_devkit](https:\u002F\u002Fgithub.com\u002FCAPTAIN-WHU\u002FDOTA_devkit) .\n\n```bash\ncd datasets_tools\u002FDOTA_devkit\nsudo apt-get install swig\nswig -c++ -python polyiou.i\npython setup.py build_ext --inplace \n```   \n  \n## 🎃 3.Datasets\n1. [DOTA dataset](https:\u002F\u002Fcaptain-whu.github.io\u002FDOTA\u002Fdataset.html) and its [devkit](https:\u002F\u002Fgithub.com\u002FCAPTAIN-WHU\u002FDOTA_devkit)  \n\n#### (1) Training Format  \nYou need to write a script to convert them into the train.txt file required by this repository and put them in the .\u002FdataR folder.  \nFor the specific format of the train.txt file, see the example in the \u002FdataR folder.   \n\n```txt\nimage_path xmin,ymin,xmax,ymax,class_id,x1,y1,x2,y2,x3,y3,x4,y4,area_ratio,angle[0,180) xmin,ymin,xmax,ymax,class_id,x1,y1,x2,y2,x3,y3,x4,y4,area_ratio,angle[0,180)...\n```  \nThe calculation method of angle is explained in [Issues #1](https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002Fissues\u002F1) and our paper.\n\n#### (2) Validation & Testing Format\nThe same as the Pascal VOC Format\n\n#### (3) DataSets Files Structure\n  ```\n  cfg.DATA_PATH = \"\u002Fopt\u002Fdatasets\u002FDOTA\u002F\"\n  ├── ...\n  ├── JPEGImages\n  |   ├── 000001.png\n  |   ├── 000002.png\n  |   └── ...\n  ├── Annotations (DOTA Dataset Format)\n  |   ├── 000001.txt (class_idx x1 y1 x2 y2 x3 y3 x4 y4)\n  |   ├── 000002.txt\n  |   └── ...\n  ├── ImageSets\n      ├── test.txt (testing filename)\n          ├── 000001\n          ├── 000002\n          └── ...\n  ```  \nThere is a DOTA2Train.py file in the datasets_tools folder that can be used to generate training and test format labels.\nFirst, you need to use [DOTA_devkit](https:\u002F\u002Fgithub.com\u002FCAPTAIN-WHU\u002FDOTA_devkit) , the official tools of the DOTA dataset, for image and label splitting. Then, run DOTA2Train.py to convert them to the format required by GGHL. For the use of DOTA_devkit, please refer to the tutorial in the official repository.\n\n## 🌠🌠🌠 4.Usage Example\n#### (1) Training  \n```python\npython train_GGHL.py\n```\n\n#### (2) For Distributed Training  \n\n```bash\nsh train_GGHL_dist.sh\n```\n\n#### (3) Testing  \n```python\npython test.py\n```\n  \n  \n## ☃️❄️ 5.Weights\n假装有表格...懒得画了  \n1）The trained model for DOTA dataset is available from [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F13yrGQTcA3xLf6TPsAA1cVTF0rAUk6Keg\u002Fview?usp=sharing) or [Baidu Disk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1aZ-bnNUAqJHqfOThK4tm5A) (password: 2dm8)  \nPut them in. \u002Fweight folder\n\n2）The trained model for SKU dataset is available from [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1l3FzZCUWpWL9adKIovQXi1EaHHzaOdAW\u002Fview?usp=sharing) or [Baidu Disk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1i8821aD0B-YNBkKXo-_CJg)(password: c3jv)   \n\n3）The trained model for SKU dataset is available from [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F19-dlqNaXJyKboJ5bH-UUiXEVJqrdNyAt\u002Fview?usp=sharing) or [Baidu Disk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1n7siqE0w49rkOqtTvkZaIA)(password: vdf5)  \n\n4）The pre-trained weights of Darknet53 on ImageNet are available from [Google_Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1vfUDVeI12cBCgSgKMBz39gxkD1Z7kmFd\u002Fview?usp=sharing) or [Baidu_Disk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1DZhooaEClu6rOnC7lE0Aiw)(password:0blv)  \n\n5）The trained model for DOTAv1.5 dataset is available from [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1PdRfWPbdT4mY6DYBOkhBGF6dMq4IB8PC\u002Fview?usp=sharing) or [Baidu Disk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1NRDjXeGixUhDm87-2DXBLQ)(password: wxlj)\n\n6）The trained model for DOTAv2.0 dataset is available from [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1Gq0bKYg4DA9RpIE0XxAtMfxnetpb4dV8\u002Fview?usp=sharing) or [Baidu Disk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F12io6rkVUGptVaoGfAaI99g)(password: dmu7)  \n\n\n## 💖💖💖 6.Reference\nhttps:\u002F\u002Fgithub.com\u002FPeterisfar\u002FYOLOV3  \nhttps:\u002F\u002Fgithub.com\u002Fargusswift\u002FYOLOv4-pytorch  \nhttps:\u002F\u002Fgithub.com\u002Fultralytics\u002Fyolov5  \nhttps:\u002F\u002Fgithub.com\u002Fjinfagang\u002FDCNv2_latest  \n\n  \n## 📝 License  \nCopyright © 2021 [Shank2358](https:\u002F\u002Fgithub.com\u002FShank2358).\u003Cbr \u002F>\nThis project is [GNU General Public License v3.0](https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002Fblob\u002Fmain\u002FLICENSE) licensed.\n\n## 🤐 To be continued \n\n## 🎃 Update Log\n* #### 👻👻 最近大家提问和反馈比较多的是论文里对ORC做refined approximaation（RA） 的问题，这里额外解释一下。  \nORC和Gliding Vertex有很多相似之处，对于Gliding Vertex，当凸四边形OBB的四个顶点不全部落在外接HBB上时是无法表示的，因此Gliding Vertex是先利用cv2.minRect函数将DOTA标注的凸四边形OBB转换为旋转矩形，然后在利用在HBB上的滑动顶点进行表示以保证OBB所有四个顶点都落在HBB上，具体见他们仓库的issue https:\u002F\u002Fgithub.com\u002FMingtaoFu\u002Fgliding_vertex\u002Fissues\u002F21#issuecomment-647935655. 在此基础上有了Oriented R-CNN的进一步简化用delta alpha和delta beta表示（因为内接OBB都已经近似成矩形了，两边是轴对称的，只需要预测在内接矩形相邻两条边的滑动距离即可）。但是这样的近似实际预测的还是旋转矩形而不是任意凸四边形，近似本身就会在GT上带来更多误差，误差更大的GT作为学习目标自然会影响预测准确性。因此，GGHL的RA只对那些该表示无法处理的凸四边形（即顶点不全落在HBB上的四边形）进行近似，而其他凸四边形都可以直接用ORC表示无需再近似成最小矩形，论文中也提到根据统计“only 4.79% of the OBBs need to be approximated”，这样可以保证ORC表示法在生成GT时引入的误差可以最小，论文表5的实验也证明了其有效性。更具体地，这些4.79%无法用ORC直接表示的凸四边形我们也不是全部用cv2.minRect做近似，而是精细地把他们分成16种情况进行讨论和分别处理，这样做目的是尽可能地减小因为近似带来的误差。大家也可以把上述近似和cv2.minRect近似的四边形画出来对比一下它们俩的误差。具体方案见论文图7和代码。\n\n* #### 👹👹 找了个动图，这样更好理解ORC和Gaussian的关系（外边是凸四边形的滑动，里面是高斯椭圆），很遗憾论文没能把完整的几何证明给出，后续版本会更新。 \n![img1](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShank2358_GGHL_readme_0b9367d5fb55.gif)  \n顺便再解释一下这个，这个动图是为了解释自适应调整高斯分布的，高斯根据ORC的顶点滑动（或者说凸四边形的变化）改变。根据OBB生成高斯通常是将OBB视为矩形，然后根据矩形的中心点坐标和长宽来得到高斯椭圆，但是如上RA问题的解释所述，GGHL的OBB不一定是矩形，而是任意凸四边形（有一部分对ORC无效的做了上述近似），那么要如何生成高斯？一种做法是仍然将凸四边形近为旋转举行计算高斯，另外一种就是我们给出的动图这样的做法。在我们最新的工作中会对这个进行更详细的讨论，快出来了（😒😒已经鸽了一年了），敬请期待。篇幅所限在GGHL论文中没地方写了，原文因为投稿TIP已经一再压缩😢😢，很多细节和几何证明放不下了，连作者照片都没放全🤣🤣🤣，我只能说我真是尽力且费劲心思把放不下的东西尽量在原文中留下一些线索了，有兴趣的可以慢慢去发现，我很乐意随时交流讨论。\n\n* #### 12.31 I have updated the function of polyiou and polynms. Happy new year!!!  \n* #### 12.28 I have updated the requirements.txt file because the distributed training may prompt that some dependent libraries are missing. \n* 更新了requirements.txt文件，因为DDP分布式训练时可能提示缺少一些依赖库。如果遇到这种情况，请根据提示pip安装补全相应的库即可。\n\n* #### 12.25 🎅🎅🎅 Merry Christmas！\nThe latest and improved embedded version of GGHL will be launched soon. 嵌入式端的最新改进版本即将上线。\n\n* #### 12.24 🏜️🏜️ The label assignment of FCOS-R and GGHL-FCOS are online.\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShank2358_GGHL_readme_11a37f2988c5.png\" width=\"520\">\n\n* #### 🐦🐦 12.23 Centernet and GGHL-CenterNet are online. FCOS will be launched soon. This GitHub repository is still being updated and optimized. Centernet和GGHL-CenterNet上线。FCOS即将上线。,最近会持续更新优化这个仓库。  \n\u003Cp algin=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShank2358_GGHL_readme_c47eb0bbd1ef.png\" width=\"260\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShank2358_GGHL_readme_bf42c023b8ab.png\" width=\"520\">\n\u003C\u002Fp>\n \n* #### 😺😺 12.23 因为论文还在审稿阶段的原因，消融实验还差一些代码没有完全更新完，稍安勿躁，持续更新中。  \n有问题真的真的可以在issues里面留言不一定非得邮件，我都会回的，这里可能比邮件还快的。邮件最近又有被放到垃圾箱的情况了，真的非常抱歉。有谁知道怎么关闭邮件拦截，恳请教我一下。另外，请不要做伸手党直接要代码或者让我直接帮忙写代码，这真的让人心情不美丽😩，论文里该有的代码这个仓库里都会有的，其他的我也很乐意和大家一起讨论，不断更新这个仓库让它越来越好。在这里咱们定个约定，如果需要额外的代码和问题解答，请将遇到的问题具体准确的描述清楚，我也会尽己所能去解答和更新，如果只是伸手党要这要那的请恕我不打捞垃圾邮件了。真的求求了，issues里就可以说的问题没必要加微信吧，确实要加也行的吧至少告诉我你们是谁，谢谢。  \n\n* #### 🙉🙉 12.23 我不喜欢过度的评价别人的方法，我觉得每个工作都有它的闪光点和值得学习的地方，我学习论文和审稿也都是这样要求自己的，所以我个人拒绝回答觉得和xxx工作比起来怎么样这种问题，请见谅。GGHL这个工作欢迎任何批评和评价，我都会虚心接受作为激励。  \n \n* #### 12.17 🧑‍🚀 今天没有更新。感慨一句，对于一个深度学习任务而言，有一个成熟的benchmark是一件幸事也是最大的不幸，当大家乐此不疲于此，这个领域就死掉了。\n\n* #### 12.15 🤪 The trained models for DOTAv1.5 and DOTAv2.0 dataset are available. [Google Drive](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F16k7JW-eb3jbga1xzq6B6r60gl2XniXfn?usp=sharing) or [Baidu Disk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F12MD7XAL6iwVUHMHRkEcLWA)(password: yn04)  *\n🐾 🐾 🐾 DOTAv1.5和DOTAv2.0的权重可以下载啦。这版本的结果是没调参，没数据增强，没多尺度测试的，后续有空会再精调和加tricks，应该还会涨点。  \n😝😝😝 其实每天事儿挺多的，做科研都是见缝插针，github这边就更顾不上了，使用教程和代码注释更新慢还请见谅，过年期间会加油更新。另外，有问题可以在issues里面留言，为什么都喜欢发邮件啊，邮件经常会莫名其妙的跑到垃圾邮件里，因此可能会有延迟，实在抱歉，我打捞出来就会立即回复的。 \n \n* #### 12.13 😭 改论文改的头昏脑胀，补了一堆实验和解释，改论文比写论文难产多了~\u002F(ㄒoㄒ)\u002F~我可以选择剖腹产吗...\n\n* #### 12.11 😁 修复了两个索引的bug。调整了学习率重新训练了，conf_thresh调到0.005，DOTA数据集精度能到79+了。顺便回复一句，总是有人问area normalization那个公式设计怎么来的，我睡觉梦到的。 \n\n* #### 12.9 😳 终于收到一审的审稿意见了，感谢审稿人大大。\n\n* #### 11.22 👺 Notice. Due to a bug in the cv2.minAreaRect() function of different versions of opencv, I updated datasets_obb.py, datasets_obb_pro.py, augmentations.py, and DOTA2Train.py. Opencv supports version 4.5.3 and above. Please note the update. Thank you. Thanks @Fly-dream12 for the feedback.  \n不同版本opencv的cv2.minAreaRect()函数不一致且存在一些角度转换的bug (我用的低版本角度是(0,-90]，新版的是[0,90]，所以可能有一些bug，我全部更新统一到新版了现在。还有就是cv2.minAreaRect()函数本身的一些bug，有很多博客介绍过了我就不重复了，由于我的原版为了解决这些bug做的判断函数和新版cv2.minAreaRect()的输出不太一样，这里也有一些问题，我也修改了)，我更新了datasets_obb.py, datasets_obb_pro.py, augmentations.py, DOTA2Train.py文件，全部按长边表示法计算（角度范0,180)），请大家及时更新，opencv版本也请更新到4.5.3及以上。谢谢。\n\n* #### 🧐 广告：招募可以一起维护更新这个仓库的小伙伴。或者大家fork更新了以后麻烦推上来一下啊，感激不尽。  \n\n* #### 11.21 😸😸 Thanks @trungpham2606 for the suggestions and feedback. \n\n* #### 11.20 ❤️ 修复了一些bug，谢谢大家的建议。大家有啥问题可以在issues里面详细描述，我会及时回复，你的问题也可能帮助到其他人。\n\n* #### 11.19 😶 During label conversion, it should be noted that the vertices in the paper are in order (see the paper for details).\n11.19-11.20 更新修复了标签转换脚本的一些bug (对于custom data的顶点顺序可能与DOTA不一致的问题)\n\n\u003Cp algin=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShank2358_GGHL_readme_83e637bd50e8.png\" width=\"320\">\n\u003C\u002Fp>\n\n* #### 11.18 😺 Fixed some bugs, please update the codes\n\n* #### 🙏🙏🙏 11.17 Release Notes\nThere are still some uncompleted content that is being continuously updated. Thank you for your feedback and suggestions. \n\n* #### 🐟 🐡 11.16 The script for generating datasets in the format required by GGHL is added in .\u002Fdatasets_tools\u002FDOTA2Train.py\n更新了用于生成GGHL所需格式数据集的工具(.\u002Fdatasets_tools\u002FDOTA2Train.py)\n论文里的Refine Approx.在代码里面有详细的分类讨论。\n\n* #### 👾 11.15 The models for the SKU dataset are available \n其他数据的权重近期会陆续上传和更新\n\n* #### 🤖 11.14 更新预告 \n即将更新更多的backbone和模型，以及mosaic数据增强,一周内更完。下周会更新第一版的代码注释和教程，即dataloadR\u002Fdatasets_obb.py文件，主要是GGHL中最重要的标签分配策略。\n另外GGHLv2.0正在准备和实验中，立个flag今年更新完。\n\n* #### 🎅 11.10 Add DCNv2 for automatic mixed precision (AMP) training. \n增加了DCNv2的混合精度训练和onnx转换 (推理阶段要记得把offsets改成FP16)\n\n* #### 🐣 🐤 🐥 11.9: The model weight has been released. You can download it and put it in the .\u002Fweight folder, and then modify the weight path in test.py to test and get the results reported in the paper. The download link is given in the introduction later.  \n论文结果对应的模型权重可以下载了（终于发工资把网盘续上了~）\n\n* #### 🐞 11.8：I plan to write a tutorial on data preprocessing and explanation of algorithms and codes, which is expected to be launched in December   \n打算写一个数据预处理的教程和算法、代码的讲解，预计12月上线  \n\n* #### 🦄 11.7: All updates of GGHL have been completed. Welcome to use it. If you have any questions, you can leave a message at the issue. Thank you.\n1.0版本全部更新完成了，欢迎使用，有任何问题可以在issue留言，谢谢。接下来会不断更新和完善  \n\n#### 💣 11.6 更新了标签分配和dataload。更新了pytorch1.10版本的支持。预告一下，下周会更新分布式训练的内容。\n（预训练权重的链接在NPMMR-Det和LO-Det的仓库说明里）\n  \n#### 🙈 正文开始前的惯例的碎碎念（可以跳过直接看正文使用说明）\n投稿排队实在太慢了，三个月了还在形式审查没分配AE,555~ 先在arxiv上挂出来了。  \n我会尽最大努力帮助大家跑通代码和复现出接近论文报道结果的实验，因为我自己也被坑多了，好多遥感领域的论文不开源代码或者根本复现不出来，或者就是模型复杂到眼花缭乱换个数据\u002F参数就失灵，实在是太难了。论文里关于NPMMR-Det和LO-Det的实验代码会在那两个仓库里面更新，NPMMRDet的baseline目前已经更新完了，你们可以试试看能不能跑。LO-Det的正在更新中，可以看那边的说明(11.1也更新了)。 \n万一有AE或者审稿人大佬看到这个仓库，跪求千万别忘了审稿啊~ 求求，希望能顺利毕业😭😭😭 \n\n#### 😸😸 10.24 终于分配AE和审稿人了🐌🐌🐌，不容易啊。这投稿流程可太慢了，担心能不能赶上毕业，真的是瑟瑟发抖😭😭😭  \n\n#### 🙉🙉 关于论文超参数和实验的一些说明。\n🐛 论文里报道的训练超参数都没有精调，就选的对比方法一样的默认参数，也没有选最好的epoch的结果，直接固定了最大epoch，选择最后五个epoch的平均结果。精调学习率、训练策略合最好轮次还会涨点，最近有空闲的机器我试了一下。但是我觉得像很多论文那样为了state-of-the-art（SOTA）而SOTA没有必要，所以最后没那样做，后续如果审稿意见有这个建议我可能会再修改，如果没有我会把更多的实验结果在github和arxiv上展示出来。反思自己最近的工作，确实比不上各位大佬前辈的创新想法，这点还要继续努力。由于我也是自己一路磕磕绊绊摸索着进入科研领域的，也踩过很多坑，也被各种卷王卷的透不过气，所以我想追求的是想做一些踏实的、简单实用的工作，设计一个皮实、经得起折腾的模型，而不想去卷什么SOTA（😭😭😭 实话是我也卷不过。。。。）。   \n🐰🐰 说一个我对目标检测的理解，请大家批评指正。在我看来，目标检测只是一个更庞大的视觉系统的入口任务而不是最终结果。我觉得大多数检测任务的目标是快速、粗略地在图像\u002F视频中定位到目标候选区域，为后续更精细的比如分割、跟踪等其他任务服务，简化它们的输入。从这个视角来看，检测平均精度差距那么一两个点真的没论文里吹的那么重要，反而检测效率（速度）、模型的复杂度与鲁棒性、易用性（无论是对工程人员还是新入门的研究人员而言）的提升对于社区的贡献会更实际一些。最近几个月我也一直在反思自己，目标检测的初心是什么，目标检测完了然后呢，原来我写论文以为的终点很多时候只是我以为的，原来我想错了。深度学习火了这么些年，很多任务或许也是这样的吧，毕竟论文实验里的SOTA是有标准答案的考试，而它们的开花结果是一个开放性问题。这是接下来的努力方向，我相信哪怕道阻且长，行则将至，而且行而不辍，未来一定可期。\n\n另外，请不要做伸手党，如果你们想训练自己的数据集，以下已经详细描述了GGHL的数据格式和使用说明，在tools文件夹中提供了转换脚本。我也在许多论文以外的数据集和大家提供的数据集上进行了实验，都可以正常工作，请花些时间阅读说明和issues #1中的一些解释，如果还有疑问可以在issues中留言给我，都会得到回复。我没有义务直接帮你们改代码和训练你们的数据。\n","# GGHL: 一种用于任意方向目标检测的通用高斯热图标签分配方法  \n\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002F\">\n    \u003Cimg alt=\"版本\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVersion-1.3.0-blue\" \u002F>\n  \u003C\u002Fa>\n  \n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002Fblob\u002Fmain\u002FLICENSE\">\n    \u003Cimg alt=\"GPLv3.0 许可证\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-GPLv3.0-blue\" \u002F>\n  \u003C\u002Fa>\n  \n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FShank2358\" target=\"_blank\">\n  \u003Cimg src=\"https:\u002F\u002Fvisitor-badge.glitch.me\u002Fbadge?page_id=gghl.visitor-badge&right_color=blue\"\n  alt=\"访问者\" \u002F>\n\u003C\u002Fa> \n\n\u003Ca href=\"mailto:zhanchao.h@outlook.com\" target=\"_blank\">\n   \u003Cimg alt=\"电子邮件\" src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F发送邮件-蓝色\" \u002F>\n\u003C\u002Fa> \n\n## 这是GGHL的实现 👋👋👋\n[[Arxiv](https:\u002F\u002Farxiv.org\u002Fabs\u002F2109.12848)] [[IEEE TIP](https:\u002F\u002Fieeexplore.ieee.org\u002Fdocument\u002F9709203)] [[Google Drive](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F16k7JW-eb3jbga1xzq6B6r60gl2XniXfn?usp=sharing)][[百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F12MD7XAL6iwVUHMHRkEcLWA) (提取码: yn04)]  \n\n#### IEEE的正式版排版丑死了（不得不吐槽），有的图还显示有问题，还是下载arxiv版本的吧，我已经更新了arxiv，内容和正式版一样。  \n\n####  [TensorRT C++部署版本教程](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F551057399)和[Nvidia Jetson嵌入式部署版本教程](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F558747842)看这里！！！  感谢最最亲爱的师弟[Crescent-Ao](https:\u002F\u002Fgithub.com\u002FCrescent-Ao)和[haohaoolalahao](https:\u002F\u002Fgithub.com\u002Fhaohaoolalahao)\n\n####  GGHL基础上改进的标签分配写到了新论文[TS-Conv](https:\u002F\u002Farxiv.org\u002Fabs\u002F2209.02200)里，[TS-Conv的代码](https:\u002F\u002Fgithub.com\u002FShank2358\u002FTS-Conv)放出来了在这里（还在更新完善中）  \n\n#### GGHL做知识蒸馏的一些尝试的论文[DKED](https:\u002F\u002Fieeexplore.ieee.org\u002Fdocument\u002F9747798)在这里（用来Social和旅游的会议），这个等年底有空了扩写和更新代码  \n\n  ### 如果该项目对您有所帮助，请给个⭐️。如果您使用了它，请考虑引用：\n  ```IEEE TIP\n  @ARTICLE{9709203,\n  author={Huang, Zhanchao and Li, Wei and Xia, Xiang-Gen and Tao, Ran},\n  journal={IEEE Transactions on Image Processing}, \n  title={A General Gaussian Heatmap Label Assignment for Arbitrary-Oriented Object Detection}, \n  year={2022},\n  volume={31},\n  number={},\n  pages={1895-1910},\n  doi={10.1109\u002FTIP.2022.3148874}}\n  ```\n\n### 不克隆不加星，都是耍流氓 🤡🤡🤡\n  \n\u003Cp algin=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShank2358_GGHL_readme_f86e7b9a2095.png\" width=\"380\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShank2358_GGHL_readme_893766e0250e.png\" width=\"430\">\n\u003C\u002Fp>\n\u003Cp algin=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShank2358_GGHL_readme_c783350d8cdf.png\" width=\"700\">\n\u003C\u002Fp>\n\n## 0. 一些重要事项 🦞 🦀 🦑 \n* #### 💖💖💖 感谢[Crescent-Ao](https:\u002F\u002Fgithub.com\u002FCrescent-Ao)和[haohaoolalahao](https:\u002F\u002Fgithub.com\u002Fhaohaoolalahao)对GGHL仓库的贡献，感谢[Crescent-Ao](https:\u002F\u002Fgithub.com\u002FCrescent-Ao)完成的GGHL部署版本。相关仓库还会持续更新中，敬请期待。\n    #### 打个广告，GGHL部署版本[GGHL-Deployment](https:\u002F\u002Fgithub.com\u002FCrescent-Ao\u002FGGHL-Deployment)已经上线，欢迎大家使用~~ 感谢我最亲爱的师弟[Crescent-Ao](https:\u002F\u002Fgithub.com\u002FCrescent-Ao)和[haohaolalahao](https:\u002F\u002Fgithub.com\u002Fhaohaolalahao)对GGHL仓库的贡献，感谢[Crescent-Ao](https:\u002F\u002Fgithub.com\u002FCrescent-Ao)完成的GGHL部署版本。相关仓库还会持续更新中，敬请期待。\n\n* #### 😺😺😺 欢迎大家关注[haohaoolalahao](https:\u002F\u002Fgithub.com\u002Fhaohaoolalahao)与我合作完成的遥感图像目标检测工作 MGAR: Multi-Grained Angle Representation for Remote Sensing Object Detection，论文已经正式接收[IEEE TGRS](https:\u002F\u002Fieeexplore.ieee.org\u002Fdocument\u002F9912396) [Arxiv](https:\u002F\u002Farxiv.org\u002Fabs\u002F2209.02884), 感谢大家引用：\n  ```IEEE TGRS\n    @ARTICLE{9912396,\n      author={Wang, Hao and Huang, Zhanchao and Chen, Zhengchao and Song, Ying and Li, Wei},\n      journal={IEEE Transactions on Geoscience and Remote Sensing}, \n      title={Multi-Grained Angle Representation for Remote Sensing Object Detection}, \n      year={2022},\n      volume={},\n      number={},\n      pages={1-1},\n      doi={10.1109\u002FTGRS.2022.3212592}}\n  ```  \n* #### 🙆‍♂️🙆‍♂️修复了torch>=1.7且使用分布式训练时的多尺度训练bug。请将pytorch更新至1.11版本。感谢[@haohaoolalahao](https:\u002F\u002Fgithub.com\u002Fhaohaoolalahao)。\n* #### 最近在学习MMRotate，后续有计划在MMRotate框架下写一版GGHL,先立个FLAG🤖🤖    \n* #### 关于在去年年底前出GGHLv2的FLAG不出所料的倒掉了🤣🤣🤣，我是大鸽子🕊️🕊️🕊️🕊️咕咕咕。写论文对我来说好难啊啊啊啊，重新扶起这个FLAG，两个月后把论文写完吧（...实验早跑完了，现在每天憋出100个字）  \n* #### 谢谢大家的反馈和ISSUES里面的各种意见，非常感谢🥰🥰🥰   \n* #### 🧸 OpenCV版本需≥4.5.3，标签转换脚本为.\u002Fdatasets_tools\u002F[DOTA2Train.py](https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002Fblob\u002Fmain\u002Fdatasets_tools\u002FDOTA2Train.py)\n* #### 🚀 分布式训练详情请参见[issues #4](https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002Fissues\u002F4)（pytorch==1.11）。\n* #### 🌟 我已更新polyiou和polynms的功能。最新评估器的代码位于[.\u002FevalR\u002FevaluatorGGHL_new.py](https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002Fblob\u002Fmain\u002FevalR\u002FevaluatorGGHL_new.py)\n* #### 🥂 感谢[@trungpham2606](https:\u002F\u002Fgithub.com\u002Ftrungpham2606), [@lalalagogogo](https:\u002F\u002Fgithub.com\u002Flalalagogogochong), [@zhuyh1223](https:\u002F\u002Fgithub.com\u002Fzhuyh1223)和[@aiboys](https:\u002F\u002Fgithub.com\u002Faiboys)提出的建议和反馈。  \n* #### 🦄 感谢我的合作者[@haohaoolalahao](https:\u002F\u002Fgithub.com\u002Fhaohaoolalahao)对该项目的巨大贡献。修订后的论文中关于“OBB的精细化近似”的讨论，正是我和[@haohaoolalahao](https:\u002F\u002Fgithub.com\u002Fhaohaoolalahao)在2020年参加遥感目标检测竞赛时提出的。  \n* #### 🤖 感谢[@Crescent-Ao](https:\u002F\u002Fgithub.com\u002FCrescent-Ao)对修订稿的建议以及他对推广这项工作的巨大贡献。  \n* #### 😸 我非常感激[@haohaoolalahao](https:\u002F\u002Fgithub.com\u002Fhaohaoolalahao), [@Crescent-Ao](https:\u002F\u002Fgithub.com\u002FCrescent-Ao)和我之间的每一次讨论。感谢你们让这项工作不断成长。虽然目前还不成熟，但我相信随着我们的努力，它会越来越好。  \n* #### 中文版的说明可以看知乎上[@Crescent-Ao](https:\u002F\u002Fgithub.com\u002FCrescent-Ao)写的文章：[Gaussian heatmap label assignment](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F452595960)，[GGHL代码解读](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F465668926)和[Oriented-bounding-box representation component (ORC)](https:\u002F\u002Fzhuanlan.zhihu.com\u002Fp\u002F448339670)，还在陆续更新中。欢迎大家点赞、喜欢、收藏三连。\n\n## 🌈 1.运行环境\nLinux (Ubuntu 18.04, GCC>=5.4) & Windows (Win10)   \nCUDA > 11.1, Cudnn > 8.0.4\n\n首先，安装CUDA、Cudnn和Pytorch。\n其次，安装[requirements.txt](https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002Fblob\u002Fmain\u002Frequirements.txt)中的依赖库。 \n\n```python\nconda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch \npip install -r requirements.txt  \n```\n\n## 🌟 2. 安装\n1. 使用 `git clone` 克隆本仓库。\n\n2. Polygen NMS  \n当前版本中的 poly_nms 是使用 shapely 和 numpy 库实现的，这样可以确保它在不同系统和环境中运行，而无需其他依赖。不过，这种方式会在密集目标场景中降低检测速度。如果希望提升速度，可以在 `datasets_tools\u002FDOTA_devkit` 中编译并使用 poly_iou 库（C++ 实现版本）。编译方法已在 [DOTA_devkit](https:\u002F\u002Fgithub.com\u002FCAPTAIN-WHU\u002FDOTA_devkit) 中详细说明。\n\n```bash\ncd datasets_tools\u002FDOTA_devkit\nsudo apt-get install swig\nswig -c++ -python polyiou.i\npython setup.py build_ext --inplace \n```   \n\n## 🎃 3. 数据集\n1. [DOTA 数据集](https:\u002F\u002Fcaptain-whu.github.io\u002FDOTA\u002Fdataset.html) 及其 [devkit](https:\u002F\u002Fgithub.com\u002FCAPTAIN-WHU\u002FDOTA_devkit)  \n\n#### (1) 训练格式  \n你需要编写脚本来将数据转换为本仓库所需的 `train.txt` 文件，并将其放置在 `.\u002FdataR` 文件夹中。`train.txt` 文件的具体格式请参考 `dataR` 文件夹中的示例。\n\n```txt\nimage_path xmin,ymin,xmax,ymax,class_id,x1,y1,x2,y2,x3,y3,x4,y4,area_ratio,angle[0,180) xmin,ymin,xmax,ymax,class_id,x1,y1,x2,y2,x3,y3,x4,y4,area_ratio,angle[0,180)...\n```  \n角度的计算方法已在 [Issues #1](https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002Fissues\u002F1) 和我们的论文中解释过。\n\n#### (2) 验证与测试格式  \n与 Pascal VOC 格式相同。\n\n#### (3) 数据集文件结构  \n  ```\n  cfg.DATA_PATH = \"\u002Fopt\u002Fdatasets\u002FDOTA\u002F\"\n  ├── ...\n  ├── JPEGImages\n  |   ├── 000001.png\n  |   ├── 000002.png\n  |   └── ...\n  ├── Annotations (DOTA 数据集格式)\n  |   ├── 000001.txt (class_idx x1 y1 x2 y2 x3 y3 x4 y4)\n  |   ├── 000002.txt\n  |   └── ...\n  ├── ImageSets\n      ├── test.txt (测试文件名)\n          ├── 000001\n          ├── 000002\n          └── ...\n  ```  \n在 `datasets_tools` 文件夹中有一个名为 `DOTA2Train.py` 的文件，可用于生成训练和测试格式的标签。首先，需要使用 DOTA 数据集的官方工具 [DOTA_devkit](https:\u002F\u002Fgithub.com\u002FCAPTAIN-WHU\u002FDOTA_devkit) 对图像和标签进行分割，然后运行 `DOTA2Train.py` 将其转换为 GGHL 所需的格式。关于 DOTA_devkit 的使用，请参阅官方仓库中的教程。\n\n## 🌠🌠🌠 4. 使用示例\n#### (1) 训练  \n```python\npython train_GGHL.py\n```  \n\n#### (2) 分布式训练  \n\n```bash\nsh train_GGHL_dist.sh\n```  \n\n#### (3) 测试  \n```python\npython test.py\n```  \n\n## ☃️❄️ 5. 权重\n假装有表格...懒得画了  \n1）用于 DOTA 数据集的训练模型可从 [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F13yrGQTcA3xLf6TPsAA1cVTF0rAUk6Keg\u002Fview?usp=sharing) 或 [Baidu Disk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1aZ-bnNUAqJHqfOThK4tm5A)（提取码：2dm8）获取，将其放入 `\u002Fweight` 文件夹中。\n\n2）用于 SKU 数据集的训练模型可从 [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1l3FzZCUWpWL9adKIovQXi1EaHHzaOdAW\u002Fview?usp=sharing) 或 [Baidu Disk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1i8821aD0B-YNBkKXo-_CJg)（提取码：c3jv）获取。\n\n3）用于 SKU 数据集的训练模型可从 [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F19-dlqNaXJyKboJ5bH-UUiXEVJqrdNyAt\u002Fview?usp=sharing) 或 [Baidu Disk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1n7siqE0w49rkOqtTvkZaIA)（提取码：vdf5）获取。\n\n4）Darknet53 在 ImageNet 上的预训练权重可从 [Google_Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1vfUDVeI12cBCgSgKMBz39gxkD1Z7kmFd\u002Fview?usp=sharing) 或 [Baidu_Disk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1DZhooaEClu6rOnC7lE0Aiw)（提取码：0blv）获取。\n\n5）用于 DOTAv1.5 数据集的训练模型可从 [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1PdRfWPbdT4mY6DYBOkhBGF6dMq4IB8PC\u002Fview?usp=sharing) 或 [Baidu Disk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1NRDjXeGixUhDm87-2DXBLQ)（提取码：wxlj）获取。\n\n6）用于 DOTAv2.0 数据集的训练模型可从 [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1Gq0bKYg4DA9RpIE0XxAtMfxnetpb4dV8\u002Fview?usp=sharing) 或 [Baidu Disk](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F12io6rkVUGptVaoGfAaI99g)（提取码：dmu7）获取。\n\n## 💖💖💖 6. 参考文献\nhttps:\u002F\u002Fgithub.com\u002FPeterisfar\u002FYOLOV3  \nhttps:\u002F\u002Fgithub.com\u002Fargusswift\u002FYOLOv4-pytorch  \nhttps:\u002F\u002Fgithub.com\u002Fultralytics\u002Fyolov5  \nhttps:\u002F\u002Fgithub.com\u002Fjinfagang\u002FDCNv2_latest  \n\n## 📝 许可证  \n版权所有 © 2021 [Shank2358](https:\u002F\u002Fgithub.com\u002FShank2358)。\u003Cbr \u002F>\n本项目采用 [GNU 通用公共许可证 v3.0](https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002Fblob\u002Fmain\u002FLICENSE) 许可证。\n\n## 🤐 待续\n\n## 🎃 更新日志\n* #### 👻👻 最近大家提问和反馈比较多的是论文里对ORC做refined approximaation（RA） 的问题，这里额外解释一下。  \nORC和Gliding Vertex有很多相似之处，对于Gliding Vertex，当凸四边形OBB的四个顶点不全部落在外接HBB上时是无法表示的，因此Gliding Vertex是先利用cv2.minRect函数将DOTA标注的凸四边形OBB转换为旋转矩形，然后在利用在HBB上的滑动顶点进行表示以保证OBB所有四个顶点都落在HBB上，具体见他们仓库的issue https:\u002F\u002Fgithub.com\u002FMingtaoFu\u002Fgliding_vertex\u002Fissues\u002F21#issuecomment-647935655. 在此基础上有了Oriented R-CNN的进一步简化用delta alpha和delta beta表示（因为内接OBB都已经近似成矩形了，两边是轴对称的，只需要预测在内接矩形相邻两条边的滑动距离即可）。但是这样的近似实际预测的还是旋转矩形而不是任意凸四边形，近似本身就会在GT上带来更多误差，误差更大的GT作为学习目标自然会影响预测准确性。因此，GGHL的RA只对那些该表示无法处理的凸四边形（即顶点不全落在HBB上的四边形）进行近似，而其他凸四边形都可以直接用ORC表示无需再近似成最小矩形，论文中也提到根据统计“only 4.79% of the OBBs need to be approximated”，这样可以保证ORC表示法在生成GT时引入的误差可以最小，论文表5的实验也证明了其有效性。更具体地，这些4.79%无法用ORC直接表示的凸四边形我们也不是全部用cv2.minRect做近似，而是精细地把他们分成16种情况进行讨论和分别处理，这样做目的是尽可能地减小因为近似带来的误差。大家也可以把上述近似和cv2.minRect近似的四边形画出来对比一下它们俩的误差。具体方案见论文图7和代码。\n\n* #### 👹👹 找了个动图，这样更好理解ORC和Gaussian的关系（外边是凸四边形的滑动，里面是高斯椭圆），很遗憾论文没能把完整的几何证明给出，后续版本会更新。 \n![img1](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShank2358_GGHL_readme_0b9367d5fb55.gif)  \n顺便再解释一下这个，这个动图是为了解释自适应调整高斯分布的，高斯根据ORC的顶点滑动（或者说凸四边形的变化）改变。根据OBB生成高斯通常是将OBB视为矩形，然后根据矩形的中心点坐标和长宽来得到高斯椭圆，但是如上RA问题的解释所述，GGHL的OBB不一定是矩形，而是任意凸四边形（有一部分对ORC无效的做了上述近似），那么要如何生成高斯？一种做法是仍然将凸四边形近为旋转举行计算高斯，另外一种就是我们给出的动图这样的做法。在我们最新的工作中会对这个进行更详细的讨论，快出来了（😒😒已经鸽了一年了），敬请期待。篇幅所限在GGHL论文中没地方写了，原文因为投稿TIP已经一再压缩😢😢，很多细节和几何证明放不下了，连作者照片都没放全🤣🤣🤣，我只能说我真是尽力且费劲心思把放不下的东西尽量在原文中留下一些线索了，有兴趣的可以慢慢去发现，我很乐意随时交流讨论。\n\n* #### 12.31 我已更新了 polyiou 和 polynms 的功能。新年快乐！！！  \n* #### 12.28 我已更新了 requirements.txt 文件，因为分布式训练可能会提示缺少某些依赖库。  \n更新了 requirements.txt 文件，因为 DDP 分布式训练时可能提示缺少一些依赖库。如果遇到这种情况，请根据提示使用 `pip install` 补齐相应的库即可。\n\n* #### 12.25 🎅🎅🎅 圣诞快乐！  \nGGHL 的最新改进嵌入式版本即将上线。\n\n* #### 12.24 🏜️沙漠景象 The label assignment of FCOS-R and GGHL-FCOS are online.\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShank2358_GGHL_readme_11a37f2988c5.png\" width=\"520\">\n\n* #### 🐦🐦 12月23日 Centernet和GGHL-CenterNet已上线。FCOS即将上线。此GitHub仓库仍在持续更新和优化中。Centernet和GGHL-CenterNet上线。FCOS即将上线。,最近会持续更新优化这个仓库。  \n\u003Cp algin=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShank2358_GGHL_readme_c47eb0bbd1ef.png\" width=\"260\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShank2358_GGHL_readme_bf42c023b8ab.png\" width=\"520\">\n\u003C\u002Fp>\n \n* #### 😺😺 12月23日 由于论文尚处于审稿阶段，消融实验的相关代码尚未完全更新完毕，请大家耐心等待，我们会持续进行更新。  \n如有任何问题，欢迎在issues中留言，无需一定通过邮件联系，我都会一一回复，而且在这里的响应速度可能比邮件更快。近期确实有邮件被误判为垃圾邮件的情况，对此深表歉意。如果有人知道如何关闭邮件拦截功能，恳请告知。另外，请不要直接索要代码或要求我代写代码，这种做法实在令人不快😩。论文中所需的代码都将在此仓库中提供，其他方面我也非常乐意与大家共同探讨，不断优化仓库内容。在此约定：如需额外代码或解答疑问，请详细准确地描述遇到的问题，我会尽力协助并及时更新；若只是单纯索取，则恕无法处理此类请求。有些问题完全可以在issues中讨论，无需添加微信，当然如果您确实希望加微信，也请先告知身份，谢谢。\n\n* #### 🙉🙉 12月23日 我不喜欢对他人方法进行过度评价，我认为每项工作都有其闪光点和值得学习之处。我在阅读论文和审稿时也始终秉持这一原则，因此对于“与XXX工作相比如何”这类问题，我将不予回答，敬请谅解。GGHL项目欢迎任何形式的批评与建议，我将虚心接受并以此激励自己不断进步。\n\n* #### 12月17日 🧑‍🚀 今日暂无更新。感慨一句，对于深度学习任务而言，拥有一个成熟的benchmark既是幸事，也是最大的不幸——当所有人都沉迷于其中时，这个领域便失去了活力。\n\n* #### 12月15日 🤪 DOTAv1.5和DOTAv2.0数据集的预训练模型现已可用。[Google Drive](https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F16k7JW-eb3jbga1xzq6B6r60gl2XniXfn?usp=sharing) 或 [百度网盘](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F12MD7XAL6iwVUHMHRkEcLWA)(提取码: yn04)  *\n🐾 🐾 🐾 DOTAv1.5和DOTAv2.0的权重可以下载啦。这版本的结果是没调参，没数据增强，没多尺度测试的，后续有空会再精调和加tricks，应该还会涨点。  \n😝😝😝 其实每天事儿挺多的，做科研都是见缝插针，github这边就更顾不上了，使用教程和代码注释更新慢还请见谅，过年期间会加油更新。另外，有问题可以在issues里面留言，为什么都喜欢发邮件啊，邮件经常会莫名其妙的跑到垃圾邮件里，因此可能会有延迟，实在抱歉，我打捞出来就会立即回复的。 \n \n* #### 12月13日 😭 改论文改的头昏脑胀，补了一堆实验和解释，改论文比写论文难产多了~\u002F(ㄒoㄒ)\u002F~我可以选择剖腹产吗...\n\n* #### 12月11日 😁 修复了两个索引的bug。调整了学习率重新训练了，conf_thresh调到0.005，DOTA数据集精度能到79+了。顺便回复一句，总是有人问area normalization那个公式设计怎么来的，我睡觉梦到的。 \n\n* #### 12月9日 😳 终于收到一审的审稿意见了，感谢审稿人大大。\n\n* #### 11月22日 👺 注意事项。由于不同版本OpenCV中cv2.minAreaRect()函数存在差异及一些角度转换的bug（我使用的低版本角度范围是(0,-90]，而新版本则是[0,90]，因此可能存在兼容性问题，现均已统一更新至新版本）。此外，cv2.minAreaRect()函数本身也存在一些已知的bug，许多博客已有相关介绍，此处不再赘述。由于我原版代码中为解决这些问题所编写的判断逻辑与新版cv2.minAreaRect()的输出略有不同，这也导致了一些问题，现已全部修正。目前，datasets_obb.py、datasets_obb_pro.py、augmentations.py以及DOTA2Train.py文件均已按长边表示法计算（角度范围0-180度），请大家及时更新，并确保OpenCV版本不低于4.5.3。感谢@Fly-dream12提供的反馈。\n\n* #### 🧐 广告：招募可以一起维护更新这个仓库的小伙伴。或者大家fork更新了以后麻烦推上来一下啊，感激不尽。  \n\n* #### 11月21日 😸😸 感谢@trungpham2606提出的建议和反馈。\n\n* #### 11月20日 ❤️ 修复了一些bug，谢谢大家的建议。大家有啥问题可以在issues里面详细描述，我会及时回复，你的问题也可能帮助到其他人。\n\n* #### 11月19日 😶 在标签转换过程中，需要注意的是，论文中的顶点顺序是有规定的（详情请参阅论文）。\n11月19日至20日更新修复了标签转换脚本的一些bug（针对自定义数据的顶点顺序可能与DOTA标准不一致的问题）\n\n\u003Cp algin=\"center\">\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShank2358_GGHL_readme_83e637bd50e8.png\" width=\"320\">\n\u003C\u002Fp>\n\n* #### 11月18日 😺 修复了一些bug，请各位及时更新代码\n\n* #### 🙏🙏🙏 11月17日 发布说明\n目前仍有部分内容未完成，我们将持续进行更新。感谢大家的反馈与建议。\n\n* #### 🐟 🐡 11月16日 在.\u002Fdatasets_tools\u002FDOTA2Train.py中新增了用于生成GGHL所需格式数据集的脚本。\n更新了用于生成GGHL所需格式数据集的工具(.\u002Fdatasets_tools\u002FDOTA2Train.py)\n论文里的Refine Approx.在代码里面有详细的分类讨论。\n\n* #### 👾 11月15日 SKU数据集的模型现已可用 \n其他数据的权重近期会陆续上传和更新\n\n* #### 🤖 11月14日 更新预告 \n即将更新更多的backbone和模型，以及mosaic数据增强,一周内更完。下周会更新第一版的代码注释和教程，即dataloadR\u002Fdatasets_obb.py文件，主要是GGHL中最重要的标签分配策略。\n另外GGHLv2.0正在准备和实验中，立个flag今年更新完。\n\n* #### 🎅 11月10日 增加DCNv2以支持自动混合精度（AMP）训练。 \n增加了DCNv2的混合精度训练和onnx转换 (推理阶段要记得把offsets改成FP16)\n\n* #### 🐣 🐤 🐥 11月9日：模型权重已发布。您可以将其下载并放入.\u002Fweight文件夹中，然后修改test.py中的权重路径进行测试，即可获得论文中报告的结果。下载链接将在后续介绍中给出。  \n论文结果对应的模型权重可以下载了（终于发工资把网盘续上了~）\n\n* #### 🐞 11月8日：我计划编写一份关于数据预处理以及算法和代码讲解的教程，预计将于12月上线。  \n打算写一个数据预处理的教程和算法、代码的讲解，预计12月上线  \n\n* #### 🦄 11月7日：GGHL的所有更新已完成。欢迎大家使用。如有任何问题，欢迎在issue中留言，谢谢。  \n1.0版本全部更新完成了，欢迎使用，有任何问题可以在issue留言，谢谢。接下来会不断更新和完善  \n\n#### 💣 11月6日 更新了标签分配和dataload。更新了pytorch1.10版本的支持。预告一下，下周会更新分布式训练的内容。\n（预训练权重的链接在NPMMR-Det和LO-Det的仓库说明里）\n  \n#### 🙈 正文开始前的惯例的碎碎念（可以跳过直接看正文使用说明）\n投稿排队实在太慢了，三个月了还在形式审查没分配AE,555~ 先在arxiv上挂出来了。  \n我会尽最大努力帮助大家跑通代码和复现出接近论文报道结果的实验，因为我自己也被坑多了，好多遥感领域的论文不开源代码或者根本复现不出来，或者就是模型复杂到眼花缭乱换个数据\u002F参数就失灵，实在是太难了。论文里关于NPMMR-Det和LO-Det的实验代码会在那两个仓库里面更新，NPMMRDet的baseline目前已经更新完了，你们可以试试看能不能跑。LO-Det的正在更新中，可以看那边的说明(11.1也更新了)。 \n万一有AE或者审稿人大佬看到这个仓库，跪求千万别忘了审稿啊~ 求求，希望能顺利毕业😭😭😭 \n\n#### 😸😸 10月24日 终于分配AE和审稿人了🐌🐌🐌，不容易啊。这投稿流程可太慢了，担心能不能赶上毕业，真的是瑟瑟发抖😭😭😭  \n\n#### 🙉🙉 关于论文超参数和实验的一些说明。\n🐛 论文里报道的训练超参数都没有精调，就选的对比方法一样的默认参数，也没有选最好的epoch的结果，直接固定了最大epoch，选择最后五个epoch的平均结果。精调学习率、训练策略合最好轮次还会涨点，最近有空闲的机器我试了一下。但是我觉得像很多论文那样为了state-of-the-art（SOTA）而SOTA没有必要，所以最后没那样做，后续如果审稿意见有这个建议我可能会再修改，如果没有我会把更多的实验结果在github和arxiv上展示出来。反思自己最近的工作，确实比不上各位大佬前辈的创新想法，这点还要继续努力。由于我也是自己一路磕磕绊绊摸索着进入科研领域的，也踩过很多坑，也被各种卷王卷的透不过气，所以我想追求的是想做一些踏实的、简单实用的工作，设计一个皮实、经得起折腾的模型，而不想去卷什么SOTA（😭😭😭 实话是我也卷不过。。。。）。   \n🐰🐰 说一个我对目标检测的理解，请大家批评指正。在我看来，目标检测只是一个更庞大的视觉系统的入口任务而不是最终结果。我觉得大多数检测任务的目标是快速、粗略地在图像\u002F视频中定位到目标候选区域，为后续更精细的比如分割、跟踪等其他任务服务，简化它们的输入。从这个视角来看，检测平均精度差距那么一两个点真的没论文里吹的那么重要，反而检测效率（速度）、模型的复杂度与鲁棒性、易用性（无论是对工程人员还是新入门的研究人员而言）的提升对于社区的贡献会更实际一些。最近几个月我也一直在反思自己，目标检测的初心是什么，目标检测完了然后呢，原来我写论文以为的终点很多时候只是我以为的，原来我想错了。深度学习火了这么些年，很多任务或许也是这样的吧，毕竟论文实验里的SOTA是有标准答案的考试，而它们的开花结果是一个开放性问题。这是接下来的努力方向，我相信哪怕道阻且长，行则将至，而且行而不辍，未来一定可期。\n\n另外，请不要做伸手党，如果你们想训练自己的数据集，以下已经详细描述了GGHL的数据格式和使用说明，在tools文件夹中提供了转换脚本。我也在许多论文以外的数据集和大家提供的数据集上进行了实验，都可以正常工作，请花些时间阅读说明和issues #1中的一些解释，如果还有疑问可以在issues中留言给我，都会得到回复。我没有义务直接帮你们改代码和训练你们的数据。","# GGHL 快速上手指南\n\nGGHL (General Gaussian Heatmap Label Assignment) 是一个用于任意方向目标检测的通用高斯热图标签分配工具，特别适用于遥感图像等场景。\n\n## 1. 环境准备\n\n### 系统要求\n- **操作系统**: Linux (Ubuntu 18.04+) 或 Windows 10\n- **编译器**: GCC >= 5.4 (Linux)\n- **CUDA**: > 11.1\n- **cuDNN**: > 8.0.4\n- **OpenCV**: >= 4.5.3\n- **PyTorch**: 推荐版本 1.11 (修复了多尺度训练和分布式训练的 Bug)\n\n### 依赖安装\n建议先安装 CUDA、cuDNN 和 PyTorch，然后安装其他依赖。国内用户可使用清华或阿里镜像加速。\n\n```bash\n# 使用 conda 安装 PyTorch (根据实际 CUDA 版本调整 cudatoolkit)\nconda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch\n\n# 安装项目所需的其他依赖库\npip install -r requirements.txt\n```\n\n## 2. 安装步骤\n\n### 第一步：克隆仓库\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL.git\ncd GGHL\n```\n\n### 第二步：编译 Poly IoU\u002FNMS (可选但推荐)\n默认版本使用 `shapely` 和 `numpy` 实现多边形 NMS，兼容性好但在密集场景下速度较慢。如需提升检测速度，建议编译 C++ 版本的 `poly_iou` 库。\n\n```bash\ncd datasets_tools\u002FDOTA_devkit\n\n# 安装 swig 工具\nsudo apt-get install swig\n\n# 生成包装文件并编译\nswig -c++ -python polyiou.i\npython setup.py build_ext --inplace \n```\n\n### 第三步：数据集准备\n以 DOTA 数据集为例：\n1. 下载 [DOTA 数据集](https:\u002F\u002Fcaptain-whu.github.io\u002FDOTA\u002Fdataset.html) 及其 [devkit](https:\u002F\u002Fgithub.com\u002FCAPTAIN-WHU\u002FDOTA_devkit)。\n2. 使用官方 devkit 对图片和标签进行切片分割。\n3. 运行项目提供的转换脚本生成训练所需的 `train.txt` 和测试格式标签：\n   ```bash\n   python datasets_tools\u002FDOTA2Train.py\n   ```\n4. 确保目录结构如下：\n   ```text\n   \u002Fopt\u002Fdatasets\u002FDOTA\u002F\n   ├── JPEGImages       # 图片文件\n   ├── Annotations      # 原始标注文件\n   ├── ImageSets        # 包含 test.txt 等索引文件\n   └── dataR            # 存放生成的 train.txt (需在配置中指定路径)\n   ```\n\n## 3. 基本使用\n\n### 模型训练\n单卡训练：\n```python\npython train_GGHL.py\n```\n\n多卡分布式训练 (需 PyTorch >= 1.11)：\n```bash\nsh train_GGHL_dist.sh\n```\n\n### 模型测试\n```python\npython test.py\n```\n\n### 预训练权重\n将下载的预训练权重文件放入 `.\u002Fweight` 文件夹即可使用。\n- **DOTA 数据集模型**: [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F13yrGQTcA3xLf6TPsAA1cVTF0rAUk6Keg\u002Fview?usp=sharing) | [百度网盘 (密码: 2dm8)](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1aZ-bnNUAqJHqfOThK4tm5A)\n- **ImageNet Darknet53  backbone**: [Google Drive](https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F1vfUDVeI12cBCgSgKMBz39gxkD1Z7kmFd\u002Fview?usp=sharing) | [百度网盘 (密码: 0blv)](https:\u002F\u002Fpan.baidu.com\u002Fs\u002F1DZhooaEClu6rOnC7lE0Aiw)\n- 更多版本 (DOTA v1.5\u002Fv2.0, SKU 等) 请参考原仓库 README 第 5 节。\n\n> **提示**: 如需 TensorRT C++ 部署或 Jetson 嵌入式部署教程，可参考原作者在知乎发布的相关文章。","某遥感技术团队正在开发一套用于港口监控的船舶检测系统，需要精准识别密集停靠且朝向各异的货轮。\n\n### 没有 GGHL 时\n- **角度定位模糊**：传统水平框算法无法有效处理任意角度的船舶，导致对斜向停靠船只的包围盒过大，包含大量背景噪声。\n- **密集目标漏检**：在船只紧密排列的场景下，常规标签分配策略难以区分相邻目标，造成严重的漏检或误将两船识别为一船。\n- **训练收敛缓慢**：由于正负样本划分不够智能，模型需要耗费更多 epoch 才能学习到有效的特征，延长了研发周期。\n- **小目标检测率低**：对于远处的微小船只，固定阈值的热图分配方式往往将其忽略，导致关键目标丢失。\n\n### 使用 GGHL 后\n- **任意朝向精准贴合**：GGHL 引入通用高斯热图标签分配机制，生成的热力图能自适应船舶的旋转角度，显著提升了倾斜目标的定位精度。\n- **密集场景清晰分离**：通过高斯分布的动态调整，GGHL 有效增强了相邻船舶间的特征区分度，解决了密集停靠时的粘连和漏检问题。\n- **训练效率大幅提升**：更合理的样本权重分配让模型更快聚焦于难例，大幅减少了达到最佳性能所需的训练时间。\n- **微小目标敏锐捕捉**：优化的热图响应机制增强了对小尺度目标的敏感度，确保远距离船只也能被稳定检出。\n\nGGHL 通过革新标签分配策略，彻底解决了任意方向物体检测中的定位不准与密集干扰难题，让遥感监测更加精准高效。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FShank2358_GGHL_c783350d.png","Shank2358","Zhanchao Huang","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FShank2358_75eed63d.jpg",null,"Beijing Institute of Technology","Beijing, China","https:\u002F\u002Fwww.webofscience.com\u002Fwos\u002Fauthor\u002Frecord\u002F2162959","https:\u002F\u002Fgithub.com\u002FShank2358",[81,85,89,93,97,101,105,109,111],{"name":82,"color":83,"percentage":84},"Python","#3572A5",62.9,{"name":86,"color":87,"percentage":88},"C++","#f34b7d",20,{"name":90,"color":91,"percentage":92},"Cuda","#3A4E3A",12.2,{"name":94,"color":95,"percentage":96},"C","#555555",3.2,{"name":98,"color":99,"percentage":100},"Cython","#fedf5b",1.6,{"name":102,"color":103,"percentage":104},"CMake","#DA3434",0.1,{"name":106,"color":107,"percentage":108},"Shell","#89e051",0,{"name":110,"color":75,"percentage":108},"SWIG",{"name":112,"color":113,"percentage":108},"Makefile","#427819",607,107,"2026-04-01T14:23:23","GPL-3.0",4,"Linux (Ubuntu 18.04), Windows (Win10)","需要 NVIDIA GPU，CUDA > 11.1，cuDNN > 8.0.4","未说明",{"notes":123,"python":124,"dependencies":125},"1. 分布式训练建议使用 PyTorch 1.11 版本以修复多尺度训练 bug。2. OpenCV 版本必须 >= 4.5.3。3. 若需提升密集场景检测速度，需手动编译 C++ 版的 poly_iou 库（依赖 swig），否则默认使用较慢的 Python 版实现。4. 数据集需使用 DOTA_devkit 进行分割，并运行提供的脚本转换为特定格式。","未说明 (需配合 PyTorch 安装)",[126,127,128,129,130,131,132,133],"pytorch>=1.11 (推荐)","torchvision","torchaudio","cudatoolkit=11.3","opencv-python>=4.5.3","shapely","numpy","swig",[14,15],[136,137,138,139,140,141,142,143,144,145],"pytorch","oriented-object-detection","object-detection","deep-learning","anchor-free","nvidia-jetson-xavier","nvidia-jetson-tx2","fcos-r","remote-sensing","centernet","2026-03-27T02:49:30.150509","2026-04-20T04:06:07.336825",[149,154,158,163,168,173],{"id":150,"question_zh":151,"answer_zh":152,"source_url":153},43650,"训练时加载预训练模型报错 'DataParallel' object has no attribute 'load_darknet_weights' 怎么办？","这是 PyTorch 版本兼容性问题。不同版本的 torch（如 1.7, 1.8, 1.10）在 DDP（分布式数据并行）函数上存在差异。建议将 PyTorch 版本切换为 1.8.1 进行测试，用户反馈从 1.8.0 升级到 1.8.1 后问题解决。同时请检查 train_GGHL_dist.py 中 local rank 的设置是否正确。","https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002Fissues\u002F4",{"id":155,"question_zh":156,"answer_zh":157,"source_url":153},43651,"如何修改模型权重的默认保存路径？","模型默认保存在当前项目路径下的 .\u002Fweight 文件夹中。如需修改，可以在 train_GGHL.py 和 train_GGHL_dist.py 文件的参数解析部分（parser.add_argument）中找到 self.weight_path 参数进行设置。该参数默认与预训练模型路径相同，您可以传入新参数将其修改为其他路径。",{"id":159,"question_zh":160,"answer_zh":161,"source_url":162},43652,"GGHL 在检测极长物体时效果不佳，有什么优化建议？","对于极长物体的检测，GGHL 的表现可能不如预期。建议尝试以下优化：1. 增加相关部分（如 s1-s4）的损失权重（例如增加 3 倍）；2. 调整超参数，在标签分配过程中，由于此类物体较大，它们通常被分配到 mask_l 层；3. 尝试使用 PIOU 算法来处理长物体，实验证明这对长物体检测更有效。","https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002Fissues\u002F1",{"id":164,"question_zh":165,"answer_zh":166,"source_url":167},43653,"如何在 FCOS + GGHL 框架中复现 OLA 模块及标签分配策略？","在复现 FCOS + GGHL 的 OLA 模块时，建议采用 centerness 的 max(ltbr) 分层策略，并将分层阈值设置为 [0, 64, 128, inf]。实验表明，这种策略比单纯使用高斯概率采样效果更好，因为它能将目标的不同正样本点分配到更适合各层感受野的层级，避免某层回归极端值。代码参考 datasets_new.py，高斯分配可使用论文 Algorithm 1 完整版，gh_thresh 设为 0.05。","https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002Fissues\u002F8",{"id":169,"question_zh":170,"answer_zh":171,"source_url":172},43654,"使用提供的权重在 DOTA 数据集测试时，计算 mAP\u002FmPA 结果为 nan 如何解决？","mAP\u002FmPA 计算结果为 nan 通常是因为 voc_eval 中的分母 npos 为 0，这意味着测试集的标签文件（ground truth）未被正确读取或格式有误。虽然预测结果（predictionR\u002Fvoc）已生成，但请重点检查转换后的测试集标签 TXT 文件格式是否正确（类别名称、坐标格式等），确保评估脚本能正确解析测试集的真实标签。","https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002Fissues\u002F25",{"id":174,"question_zh":175,"answer_zh":176,"source_url":177},43655,"如何使用预训练权重直接预测 DOTA 数据集的结果？","若要直接使用预训练权重预测 DOTA 数据集，通常需要修改 demo 或测试脚本中的配置文件（如 config.py），将类别列表替换为 DOTA1.0 的类别。运行 test.py 前，请确保数据已转换为项目要求的 TXT 格式并放置在正确的目录（如 dataR 下）。如果报错，请检查可视化结果确认数据转换是否正确，并对比生成的 TXT 与原始标签格式是否一致。","https:\u002F\u002Fgithub.com\u002FShank2358\u002FGGHL\u002Fissues\u002F23",[179],{"id":180,"version":181,"summary_zh":182,"released_at":183},343283,"weights","DOTA数据集的权重","2021-11-15T02:58:54"]