[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-vinits5--learning3d":3,"tool-vinits5--learning3d":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},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,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},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 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},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 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":80,"owner_email":81,"owner_twitter":82,"owner_website":83,"owner_url":84,"languages":85,"stars":102,"forks":103,"last_commit_at":104,"license":105,"difficulty_score":23,"env_os":106,"env_gpu":107,"env_ram":108,"env_deps":109,"category_tags":120,"github_topics":82,"view_count":23,"oss_zip_url":82,"oss_zip_packed_at":82,"status":16,"created_at":121,"updated_at":122,"faqs":123,"releases":154},2001,"vinits5\u002Flearning3d","learning3d","This is a complete package of recent deep learning methods for 3D point clouds in pytorch (with pretrained models).","Learning3d 是一个基于 PyTorch 的开源库，专为处理三维点云数据的深度学习任务而设计。它集成了当前主流的点云神经网络模型，涵盖分类、分割、配准、重建、光流估计和内点检测等核心任务，帮助用户快速搭建、训练和测试 3D 感知算法。传统点云处理依赖手工特征，而 Learning3d 提供了端到端的深度学习解决方案，显著提升了模型对复杂、稀疏或部分遮挡点云的感知能力。其模块化设计便于二次开发，支持自定义数据集，并内置多种预训练模型，大幅降低研究门槛。特别值得一提的是，它整合了 ChamferDistance、MaskNet++、CurveNet 等前沿损失函数与网络结构，增强了对不完整点云的鲁棒性。适合计算机视觉、机器人、自动驾驶等领域的研究人员和开发者使用，尤其适合希望快速实验最新点云算法、无需从零实现模型的用户。通过 pip 安装即可上手，是点云深度学习实践的实用工具箱。","\u003Cp align=\"center\">\n\t\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvinits5_learning3d_readme_32982e50a64f.png\" height=\"170\">\n\u003C\u002Fp>\n\n# Learning3D: A Modern Library for Deep Learning on 3D Point Clouds Data.\n\n**[Documentation](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d#documentation) | [Blog](https:\u002F\u002Fmedium.com\u002F@vinitsarode5\u002Flearning3d-a-modern-library-for-deep-learning-on-3d-point-clouds-data-48adc1fd3e0?sk=0beb59651e5ce980243bcdfbf0859b7a) | [Demo](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d\u002Fblob\u002Fmaster\u002Fexamples\u002Ftest_pointnet.py)**\n\nLearning3D is an open-source library that supports the development of deep learning algorithms that deal with 3D data. The Learning3D exposes a set of state of art deep neural networks in python. A modular code has been provided for further development. We welcome contributions from the open-source community.\n\n## Latest News:\n1. \\[28 Feb, 2025\\]: [CurveNet](https:\u002F\u002Fgithub.com\u002Ftiangexiang\u002FCurveNet) is now a part of learning3d library.\n2. \\[7 Apr, 2024\\]: Now, learning3d is available as pypi package.\n3. \\[24 Oct, 2023\\]: [MaskNet++](https:\u002F\u002Fgithub.com\u002Fzhouruqin\u002FMaskNet2) is now a part of learning3d library.\n4. \\[12 May, 2022\\]: [ChamferDistance](https:\u002F\u002Fgithub.com\u002Ffwilliams\u002Ffml) loss function is incorporated in learning3d. This is a purely pytorch based loss function.\n5. \\[24 Dec. 2020\\]: [MaskNet](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2010.09185.pdf) is now ready to enhance the performance of registration algorithms in learning3d for occluded point clouds.\n6. \\[24 Dec. 2020\\]: Loss based on the predicted and ground truth correspondences is added in learning3d after consideration of [Correspondence Matrices are Underrated](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2010.16085.pdf) paper.\n7. \\[24 Dec. 2020\\]: [PointConv](https:\u002F\u002Farxiv.org\u002Fabs\u002F1811.07246), latent feature estimation using convolutions on point clouds is now available in learning3d.\n8. \\[16 Oct. 2020\\]: [DeepGMR](https:\u002F\u002Fwentaoyuan.github.io\u002Fdeepgmr\u002F), registration using gaussian mixture models is now available in learning3d\n9. \\[14 Oct. 2020\\]: Now, use your own data in learning3d. (Check out [UserData](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d#use-your-own-data) functionality!)\n\n## PyPI package setup\n### Setup from pypi server\n```\npip install learning3d\n```\n\n### Setup using code\n```\ngit clone https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d.git\ncd learning3d\ngit checkout pypi_v0.1.0\npython3 -m pip install .\n```\n\n## Available Computer Vision Algorithms in Learning3D\n\n| Sr. No.       | Tasks         | Algorithms  |\n|:-------------:|:----------:|:-----|\n| 1 | [Classification](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d#use-of-classification--segmentation-network) | PointNet, DGCNN, PPFNet, [PointConv](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d#use-of-pointconv), [CurveNet](https:\u002F\u002Fgithub.com\u002Ftiangexiang\u002FCurveNet) |\n| 2 | [Segmentation](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d#use-of-classification--segmentation-network) | PointNet, DGCNN |\n| 3 | [Reconstruction](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d#use-of-point-completion-network) | Point Completion Network (PCN) |\n| 4 | [Registration](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d#use-of-registration-networks) | PointNetLK, PCRNet, DCP, PRNet, RPM-Net, DeepGMR |\n| 5 | [Flow Estimation](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d#use-of-flow-estimation-network) | FlowNet3D |\n| 6 | [Inlier Estimation](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d#use-of-inlier-estimation-network-masknet) | MaskNet, [MaskNet++](https:\u002F\u002Fgithub.com\u002Fzhouruqin\u002FMaskNet2) | \n\n## Available Pretrained Models\n1. PointNet\n2. PCN\n3. PointNetLK\n4. PCRNet\n5. DCP\n6. PRNet\n7. FlowNet3D\n8. RPM-Net (clean-trained.pth, noisy-trained.pth, partial-pretrained.pth)\n9. DeepGMR\n10. PointConv (Download from this [link](https:\u002F\u002Fgithub.com\u002FDylanWusee\u002Fpointconv_pytorch\u002Fblob\u002Fmaster\u002Fcheckpoints\u002Fcheckpoint.pth))\n11. MaskNet\n12. MaskNet++ \u002F MaskNet2\n13. CurveNet\n\n## Available Datasets\n1. ModelNet40\n\n## Available Loss Functions\n1. Classification Loss (Cross Entropy)\n2. Registration Losses (FrobeniusNormLoss, RMSEFeaturesLoss)\n3. Distance Losses (Chamfer Distance, Earth Mover's Distance)\n4. Correspondence Loss (based on this [paper](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2010.16085.pdf))\n\n## Technical Details\n### Supported OS\n1. Ubuntu 16.04\n2. Ubuntu 18.04\n3. Ubuntu 20.04.6\n4. Linux Mint\n5. macOS Sequoia 15.3.1\n\n### Requirements\n1. CUDA 10.0 or higher\n2. Pytorch 1.3 or higher\n3. Python 3.8\n\n## How to use this library?\n**Important Note: Clone this repository in your project. Please don't add your codes in \"learning3d\" folder.**\n\n1. All networks are defined in the module \"models\".\n2. All loss functions are defined in the module \"losses\".\n3. Data loaders are pre-defined in data_utils\u002Fdataloaders.py file.\n4. All pretrained models are provided in learning3d\u002Fpretrained folder.\n\n## Documentation\nB: Batch Size, N: No. of points and C: Channels.\n####  Use of Point Embedding Networks:\n> from learning3d.models import PointNet, DGCNN, PPFNet\\\n> pn = PointNet(emb_dims=1024, input_shape='bnc', use_bn=False)\\\n> dgcnn = DGCNN(emb_dims=1024, input_shape='bnc')\\\n> ppf = PPFNet(features=['ppf', 'dxyz', 'xyz'], emb_dims=96, radius='0.3', num_neighbours=64)\n\n| Sr. No. | Variable | Data type | Shape | Choices | Use |\n|:---:|:---:|:---:|:---:|:---:|:---:|\n| 1. | emb_dims | Integer | Scalar | 1024, 512 | Size of feature vector for the each point|\n| 2. | input_shape | String | - | 'bnc', 'bcn' | Shape of input point cloud|\n| 3. | output | tensor | BxCxN | - | High dimensional embeddings for each point|\n| 4. | features | List of Strings | - | ['ppf', 'dxyz', 'xyz'] | Use of various features |\n| 5. | radius | Float | Scalar | 0.3 | Radius of cluster for computing local features |\n| 6. | num_neighbours | Integer | Scalar | 64 | Maximum number of points to consider per cluster |\n\n#### Use of Classification \u002F Segmentation Network:\n> from learning3d.models import Classifier, PointNet, Segmentation\\\n> classifier = Classifier(feature_model=PointNet(), num_classes=40)\\\n> seg = Segmentation(feature_model=PointNet(), num_classes=40)\n\n| Sr. No. | Variable | Data type | Shape | Choices | Use |\n|:---:|:---:|:---:|:---:|:---:|:---:|\n| 1. | feature_model | Object | - | PointNet \u002F DGCNN | Point cloud embedding network |\n| 2. | num_classes | Integer | Scalar | 10, 40 | Number of object categories to be classified |\n| 3. | output | tensor | Classification: Bx40, Segmentation: BxNx40 | 10, 40 | Probabilities of each category or each point |\n\n#### Use of Registration Networks:\n> from learning3d.models import PointNet, PointNetLK, DCP, iPCRNet, PRNet, PPFNet, RPMNet\\\n> pnlk = PointNetLK(feature_model=PointNet(), delta=1e-02, xtol=1e-07, p0_zero_mean=True, p1_zero_mean=True, pooling='max')\\\n> dcp = DCP(feature_model=PointNet(), pointer_='transformer', head='svd')\\\n> pcrnet = iPCRNet(feature_moodel=PointNet(), pooling='max')\\\n> rpmnet = RPMNet(feature_model=PPFNet())\\\n> deepgmr = DeepGMR(use_rri=True, feature_model=PointNet(), nearest_neighbors=20)\n\n| Sr. No. | Variable | Data type | Choices | Use | Algorithm |\n|:---:|:---:|:---:|:---:|:---:|:---:|\n| 1. | feature_model | Object | PointNet \u002F DGCNN | Point cloud embedding network | PointNetLK | \n| 2. | delta | Float | Scalar | Parameter to calculate approximate jacobian | PointNetLK |\n| 3. | xtol | Float | Scalar | Check tolerance to stop iterations | PointNetLK |\n| 4. | p0_zero_mean | Boolean | True\u002FFalse | Subtract mean from template point cloud |  PointNetLK |\n| 5. | p1_zero_mean | Boolean | True\u002FFalse | Subtract mean from source point cloud | PointNetLK |\n| 6. | pooling | String | 'max' \u002F 'avg' | Type of pooling used to get global feature vectror | PointNetLK |\n| 7. | pointer_ | String | 'transformer' \u002F 'identity' | Choice for Transformer\u002FAttention network | DCP |\n| 8. | head | String | 'svd' \u002F 'mlp' | Choice of module to estimate registration params | DCP |\n| 9. | use_rri | Boolean | True\u002FFalse | Use nearest neighbors to estimate point cloud features. | DeepGMR |\n| 10. | nearest_neighbores | Integer | 20\u002Fany integer | Give number of nearest neighbors used to estimate features | DeepGMR |\n\n#### Use of Inlier Estimation Network (MaskNet):\n> from learning3d.models import MaskNet, PointNet, MaskNet2\\\n> masknet = MaskNet(feature_model=PointNet(), is_training=True)\n> masknet2 = MaskNet2(feature_model=PointNet(), is_training=True)\n\n| Sr. No. | Variable | Data type | Choices | Use |\n|:---:|:---:|:---:|:---:|:---:|\n| 1. | feature_model | Object | PointNet \u002F DGCNN | Point cloud embedding network |\n| 2. | is_training | Boolean | True \u002F False | Specify if the network will undergo training or testing |\n\n#### Use of Point Completion Network:\n> from learning3d.models import PCN\\\n> pcn = PCN(emb_dims=1024, input_shape='bnc', num_coarse=1024, grid_size=4, detailed_output=True)\n\n| Sr. No. | Variable | Data type | Choices | Use |\n|:---:|:---:|:---:|:---:|:---:|\n| 1. | emb_dims | Integer | 1024, 512 | Size of feature vector for each point | \n| 2. | input_shape | String | 'bnc' \u002F 'bcn' | Shape of input point cloud |\n| 3. | num_coarse | Integer | 1024 | Shape of output point cloud |\n| 4. | grid_size | Integer | 4, 8, 16 | Size of grid used to produce detailed output | \n| 5. | detailed_output | Boolean | True \u002F False | Choice for additional module to create detailed output point cloud|\n\n#### Use of PointConv:\nUse the following to create pretrained model provided by authors.\n> from learning3d.models import create_pointconv\\\n> PointConv = create_pointconv(classifier=True, pretrained='path of checkpoint')\\\n> ptconv = PointConv(emb_dims=1024, input_shape='bnc', input_channel_dim=6, classifier=True)\n\n**OR**\\\nUse the following to create your own PointConv model.\n\n> PointConv = create_pointconv(classifier=False, pretrained=None)\\\n> ptconv = PointConv(emb_dims=1024, input_shape='bnc', input_channel_dim=3, classifier=True)\n\nPointConv variable is a class. Users can use it to create a sub-class to override *create_classifier* and *create_structure* methods in order to change PointConv's network architecture.\n\n| Sr. No. | Variable | Data type | Choices | Use |\n|:---:|:---:|:---:|:---:|:---:|\n| 1. | emb_dims | Integer | 1024, 512 | Size of feature vector for each point | \n| 2. | input_shape | String | 'bnc' \u002F 'bcn' | Shape of input point cloud |\n| 3. | input_channel_dim | Integer | 3\u002F6 | Define if point cloud contains only xyz co-ordinates or normals and colors as well |\n| 4. | classifier | Boolean | True \u002F False | Choose if you want to use a classifier with PointConv |\n| 5. | pretrained | Boolean | String | Give path of the pretrained classifier model (only use it for weights given by authors) |\n\n#### Use of Flow Estimation Network:\n> from learning3d.models import FlowNet3D\\\n> flownet = FlowNet3D()\n\n#### Use of Data Loaders:\n> from learning3d.data_utils import ModelNet40Data, ClassificationData, RegistrationData, FlowData\\\n> modelnet40 = ModelNet40Data(train=True, num_points=1024, download=True)\\\n> classification_data = ClassificationData(data_class=ModelNet40Data())\\\n> registration_data = RegistrationData(algorithm='PointNetLK', data_class=ModelNet40Data(), partial_source=False, partial_template=False, noise=False)\\\n> flow_data = FlowData()\n\n| Sr. No. | Variable | Data type | Choices | Use |\n|:---:|:---:|:---:|:---:|:---:|\n| 1. | train | Boolean | True \u002F False | Split data as train\u002Ftest set |\n| 2. | num_points | Integer | 1024 | Number of points in each point cloud |\n| 3. | download | Boolean | True \u002F False | If data not available then download it |\n| 4. | data_class | Object | - | Specify which dataset to use |\n| 5. | algorithm | String | 'PointNetLK', 'PCRNet', 'DCP', 'iPCRNet' | Algorithm used for registration |\n| 6. | partial_source | Boolean | True \u002F False | Create partial source point cloud |\n| 7. | partial_template | Boolean | True \u002F False | Create partial template point cloud |\n| 8. | noise | Boolean | True \u002F False | Add noise in source point cloud |\n\n#### Use Your Own Data:\n> from learning3d.data_utils import UserData\\\n> dataset = UserData(application, data_dict)\n\n|Sr. No. | Application | Required Key | Respective Value |\n|:---:|:---:|:---:|:---:|\n| 1. | 'classification' | 'pcs' | Point Clouds (BxNx3) |\n|    |                  | 'labels' | Ground Truth Class Labels (BxN) |\n| 2. | 'registration' | 'template' | Template Point Clouds (BxNx3) |\n|    |                | 'source' | Source Point Clouds (BxNx3) |\n|    |                | 'transformation' | Ground Truth Transformation (Bx4x4)|\n| 3. | 'flow_estimation' | 'frame1' | Point Clouds (BxNx3) |\n|    |                   | 'frame2' | Point Clouds (BxNx3) |\n|    |                   | 'flow' | Ground Truth Flow Vector (BxNx3)|\n\n#### Use of Loss Functions:\n> from learning3d.losses import RMSEFeaturesLoss, FrobeniusNormLoss, ClassificationLoss, EMDLoss, ChamferDistanceLoss, CorrespondenceLoss\\\n> rmse = RMSEFeaturesLoss()\\\n> fn_loss = FrobeniusNormLoss()\\\n> classification_loss = ClassificationLoss()\\\n> emd = EMDLoss()\\\n> cd = ChamferDistanceLoss()\\\n> corr = CorrespondenceLoss()\n\n| Sr. No. | Loss Type | Use |\n|:---:|:---:|:---:|\n| 1. | RMSEFeaturesLoss | Used to find root mean square value between two global feature vectors of point clouds |\n| 2. | FrobeniusNormLoss | Used to find frobenius norm between two transfromation matrices |\n| 3. | ClassificationLoss | Used to calculate cross-entropy loss | \n| 4. | EMDLoss | Earth Mover's distance between two given point clouds |\n| 5. | ChamferDistanceLoss | Chamfer's distance between two given point clouds |\n| 6. | CorrespondenceLoss | Computes cross entropy loss using the predicted correspondence and ground truth correspondence for each source point |\n\n### To run codes from examples:\n1. Copy the file from \"examples\" folder outside of the directory \"learning3d\"\n2. Now, run the file. (ex. python test_pointnet.py)\n- Your Directory\u002FLocation\n\t- learning3d\n\t- test_pointnet.py\n\n### References:\n1. [PointNet:](https:\u002F\u002Farxiv.org\u002Fabs\u002F1612.00593) Deep Learning on Point Sets for 3D Classification and Segmentation\n2. [Dynamic Graph CNN](https:\u002F\u002Farxiv.org\u002Fabs\u002F1801.07829) for Learning on Point Clouds\n3. [PPFNet:](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1802.02669.pdf) Global Context Aware Local Features for Robust 3D Point Matching\n4. [PointConv:](https:\u002F\u002Farxiv.org\u002Fabs\u002F1811.07246) Deep Convolutional Networks on 3D Point Clouds\n5. [PointNetLK:](https:\u002F\u002Farxiv.org\u002Fabs\u002F1903.05711) Robust & Efficient Point Cloud Registration using PointNet\n6. [PCRNet:](https:\u002F\u002Farxiv.org\u002Fabs\u002F1908.07906) Point Cloud Registration Network using PointNet Encoding\n7. [Deep Closest Point:](https:\u002F\u002Farxiv.org\u002Fabs\u002F1905.03304) Learning Representations for Point Cloud Registration\n8. [PRNet:](https:\u002F\u002Farxiv.org\u002Fabs\u002F1910.12240) Self-Supervised Learning for Partial-to-Partial Registration\n9. [FlowNet3D:](https:\u002F\u002Farxiv.org\u002Fabs\u002F1806.01411) Learning Scene Flow in 3D Point Clouds\n10. [PCN:](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1808.00671.pdf) Point Completion Network\n11. [RPM-Net:](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2003.13479.pdf) Robust Point Matching using Learned Features\n12. [3D ShapeNets:](https:\u002F\u002Fpeople.csail.mit.edu\u002Fkhosla\u002Fpapers\u002Fcvpr2015_wu.pdf) A Deep Representation for Volumetric Shapes\n13. [DeepGMR:](https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.09088) Learning Latent Gaussian Mixture Models for Registration\n14. [CMU:](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2010.16085.pdf) Correspondence Matrices are Underrated\n15. [MaskNet:](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2010.09185.pdf) A Fully-Convolutional Network to Estimate Inlier Points\n16. [MaskNet++:](https:\u002F\u002Fwww.sciencedirect.com\u002Fscience\u002Farticle\u002Fabs\u002Fpii\u002FS0097849322000085) Inlier\u002Foutlier identification for two point clouds\n17. [CurveNet:](https:\u002F\u002Fgithub.com\u002Ftiangexiang\u002FCurveNet) Walk in the Cloud: Learning Curves for Point Clouds Shape Analysis","\u003Cp align=\"center\">\n\t\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvinits5_learning3d_readme_32982e50a64f.png\" height=\"170\">\n\u003C\u002Fp>\n\n# Learning3D：用于三维点云数据深度学习的现代库。\n\n**[文档](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d#documentation) | [博客](https:\u002F\u002Fmedium.com\u002F@vinitsarode5\u002Flearning3d-a-modern-library-for-deep-learning-on-3d-point-clouds-data-48adc1fd3e0?sk=0beb59651e5ce980243bcdfbf0859b7a) | [示例](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d\u002Fblob\u002Fmaster\u002Fexamples\u002Ftest_pointnet.py)**\n\nLearning3D 是一个开源库，支持开发处理三维数据的深度学习算法。Learning3D 以 Python 提供了一系列最先进的深度神经网络。我们还提供了一个模块化的代码框架，方便进一步开发。欢迎开源社区贡献！\n\n## 最新动态：\n1. \\[2025年2月28日\\]：[CurveNet](https:\u002F\u002Fgithub.com\u002Ftiangexiang\u002FCurveNet) 现已加入 Learning3D 库。\n2. \\[2024年4月7日\\]：Learning3D 现已作为 PyPI 包发布。\n3. \\[2023年10月24日\\]：[MaskNet++](https:\u002F\u002Fgithub.com\u002Fzhouruqin\u002FMaskNet2) 现已加入 Learning3D 库。\n4. \\[2022年5月12日\\]：ChamferDistance（[fwilliams\u002Ffml](https:\u002F\u002Fgithub.com\u002Ffwilliams\u002Ffml)）损失函数现已集成到 Learning3D 中。这是一个完全基于 PyTorch 的损失函数。\n5. \\[2020年12月24日\\]：[MaskNet](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2010.09185.pdf) 现已准备就绪，可提升 Learning3D 中针对遮挡点云的配准算法性能。\n6. \\[2020年12月24日\\]：在考虑了 [Correspondence Matrices are Underrated](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2010.16085.pdf) 论文后，Learning3D 增加了基于预测与真实对应关系的损失函数。\n7. \\[2020年12月24日\\]：[PointConv](https:\u002F\u002Farxiv.org\u002Fabs\u002F1811.07246)，利用点云上的卷积进行潜在特征估计的功能现已加入 Learning3D。\n8. \\[2020年10月16日\\]：[DeepGMR](https:\u002F\u002Fwentaoyuan.github.io\u002Fdeepgmr\u002F)，基于高斯混合模型的配准功能现已加入 Learning3D。\n9. \\[2020年10月14日\\]：现在，您可以在 Learning3D 中使用自己的数据。（请查看 [UserData](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d#use-your-own-data) 功能！）\n\n## PyPI 包安装\n### 从 PyPI 服务器安装\n```\npip install learning3d\n```\n\n### 使用代码安装\n```\ngit clone https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d.git\ncd learning3d\ngit checkout pypi_v0.1.0\npython3 -m pip install .\n```\n\n## Learning3D 中可用的计算机视觉算法\n\n| 序号       | 任务         | 算法  |\n|:-------------:|:----------:|:-----|\n| 1 | [分类](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d#use-of-classification--segmentation-network) | PointNet, DGCNN, PPFNet, [PointConv](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d#use-of-pointconv), [CurveNet](https:\u002F\u002Fgithub.com\u002Ftiangexiang\u002FCurveNet) |\n| 2 | [分割](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d#use-of-classification--segmentation-network) | PointNet, DGCNN |\n| 3 | [重建](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d#use-of-point-completion-network) | 点云补全网络 (PCN) |\n| 4 | [配准](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d#use-of-registration-networks) | PointNetLK, PCRNet, DCP, PRNet, RPM-Net, DeepGMR |\n| 5 | [光流估计](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d#use-of-flow-estimation-network) | FlowNet3D |\n| 6 | [内点估计](https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d#use-of-inlier-estimation-network-masknet) | MaskNet, [MaskNet++](https:\u002F\u002Fgithub.com\u002Fzhouruqin\u002FMaskNet2) | \n\n## 可用的预训练模型\n1. PointNet\n2. PCN\n3. PointNetLK\n4. PCRNet\n5. DCP\n6. PRNet\n7. FlowNet3D\n8. RPM-Net (clean-trained.pth, noisy-trained.pth, partial-pretrained.pth)\n9. DeepGMR\n10. PointConv (从 [此链接](https:\u002F\u002Fgithub.com\u002FDylanWusee\u002Fpointconv_pytorch\u002Fblob\u002Fmaster\u002Fcheckpoints\u002Fcheckpoint.pth) 下载）\n11. MaskNet\n12. MaskNet++ \u002F MaskNet2\n13. CurveNet\n\n## 可用的数据集\n1. ModelNet40\n\n## 可用的损失函数\n1. 分类损失（交叉熵）\n2. 配准损失（FrobeniusNormLoss、RMSEFeaturesLoss）\n3. 距离损失（Chamfer Distance、Earth Mover's Distance）\n4. 对应关系损失（基于 [这篇论文](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2010.16085.pdf)）\n\n## 技术细节\n### 支持的操作系统\n1. Ubuntu 16.04\n2. Ubuntu 18.04\n3. Ubuntu 20.04.6\n4. Linux Mint\n5. macOS Sequoia 15.3.1\n\n### 要求\n1. CUDA 10.0 或更高版本\n2. PyTorch 1.3 或更高版本\n3. Python 3.8\n\n## 如何使用这个库？\n**重要提示：请将本仓库克隆到您的项目中。请勿将您的代码添加到 \"learning3d\" 文件夹中。**\n\n1. 所有网络均定义在模块 \"models\" 中。\n2. 所有损失函数均定义在模块 \"losses\" 中。\n3. 数据加载器已在 data_utils\u002Fdataloaders.py 文件中预定义。\n4. 所有预训练模型均提供在 learning3d\u002Fpretrained 文件夹中。\n\n## 文档\nB：批量大小，N：点数，C：通道。\n#### 点嵌入网络的使用：\n> from learning3d.models import PointNet, DGCNN, PPFNet\\\n> pn = PointNet(emb_dims=1024, input_shape='bnc', use_bn=False)\\\n> dgcnn = DGCNN(emb_dims=1024, input_shape='bnc')\\\n> ppf = PPFNet(features=['ppf', 'dxyz', 'xyz'], emb_dims=96, radius='0.3', num_neighbours=64)\n\n| 序号 | 变量 | 数据类型 | 形状 | 选项 | 使用 |\n|:---:|:---:|:---:|:---:|:---:|:---:|\n| 1. | emb_dims | 整数 | 标量 | 1024, 512 | 每个点的特征向量大小 |\n| 2. | input_shape | 字符串 | - | 'bnc', 'bcn' | 输入点云的形状 |\n| 3. | output | 张量 | BxCxN | - | 每个点的高维嵌入 |\n| 4. | features | 字符串列表 | - | ['ppf', 'dxyz', 'xyz'] | 各种特征的使用 |\n| 5. | radius | 浮点数 | 标量 | 0.3 | 计算局部特征的聚类半径 |\n| 6. | num_neighbours | 整数 | 标量 | 64 | 每个聚类最多考虑的点数 |\n\n#### 分类\u002F分割网络的使用：\n> from learning3d.models import Classifier, PointNet, Segmentation\\\n> classifier = Classifier(feature_model=PointNet(), num_classes=40)\\\n> seg = Segmentation(feature_model=PointNet(), num_classes=40)\n\n| 序号 | 变量 | 数据类型 | 形状 | 选项 | 使用 |\n|:---:|:---:|:---:|:---:|:---:|:---:|\n| 1. | feature_model | 对象 | - | PointNet \u002F DGCNN | 点云嵌入网络 |\n| 2. | num_classes | 整数 | 标量 | 10, 40 | 要分类的对象类别数 |\n| 3. | output | 张量 | 分类：Bx40，分割：BxNx40 | 10, 40 | 每个类别或每个点的概率 |\n\n#### 配准网络的使用：\n> from learning3d.models import PointNet, PointNetLK, DCP, iPCRNet, PRNet, PPFNet, RPMNet\\\n> pnlk = PointNetLK(feature_model=PointNet(), delta=1e-02, xtol=1e-07, p0_zero_mean=True, p1_zero_mean=True, pooling='max')\\\n> dcp = DCP(feature_model=PointNet(), pointer_='transformer', head='svd')\\\n> pcrnet = iPCRNet(feature_moodel=PointNet(), pooling='max')\\\n> rpmnet = RPMNet(feature_model=PPFNet())\\\n> deepgmr = DeepGMR(use_rri=True, feature_model=PointNet(), nearest_neighbors=20)\n\n| 序号 | 变量 | 数据类型 | 选项 | 用途 | 算法 |\n|:---:|:---:|:---:|:---:|:---:|:---:|\n| 1. | feature_model | 对象 | PointNet \u002F DGCNN | 点云嵌入网络 | PointNetLK | \n| 2. | delta | 浮点数 | 标量 | 用于计算近似雅可比矩阵的参数 | PointNetLK |\n| 3. | xtol | 浮点数 | 标量 | 迭代停止时的检查容差 | PointNetLK |\n| 4. | p0_zero_mean | 布尔值 | 真\u002F假 | 从模板点云中减去均值 | PointNetLK |\n| 5. | p1_zero_mean | 布尔值 | 真\u002F假 | 从源点云中减去均值 | PointNetLK |\n| 6. | pooling | 字符串 | 'max' \u002F 'avg' | 用于获取全局特征向量的池化类型 | PointNetLK |\n| 7. | pointer_ | 字符串 | 'transformer' \u002F 'identity' | Transformer\u002F注意力网络的选择 | DCP |\n| 8. | head | 字符串 | 'svd' \u002F 'mlp' | 用于估计配准参数的模块选择 | DCP |\n| 9. | use_rri | 布尔值 | 真\u002F假 | 使用最近邻来估计点云特征 | DeepGMR |\n| 10. | nearest_neighbores | 整数 | 20\u002F任意整数 | 指定用于估计特征的最近邻数量 | DeepGMR |\n\n#### 内部点估计网络（MaskNet）的使用：\n> from learning3d.models import MaskNet, PointNet, MaskNet2\\\n> masknet = MaskNet(feature_model=PointNet(), is_training=True)\n> masknet2 = MaskNet2(feature_model=PointNet(), is_training=True)\n\n| 序号 | 变量 | 数据类型 | 选项 | 用途 |\n|:---:|:---:|:---:|:---:|:---:|\n| 1. | feature_model | 对象 | PointNet \u002F DGCNN | 点云嵌入网络 |\n| 2. | is_training | 布尔值 | 真 \u002F 假 | 指定网络是进行训练还是测试 |\n\n#### 点云补全网络的使用：\n> from learning3d.models import PCN\\\n> pcn = PCN(emb_dims=1024, input_shape='bnc', num_coarse=1024, grid_size=4, detailed_output=True)\n\n| 序号 | 变量 | 数据类型 | 选项 | 用途 |\n|:---:|:---:|:---:|:---:|:---:|\n| 1. | emb_dims | 整数 | 1024, 512 | 每个点的特征向量大小 |\n| 2. | input_shape | 字符串 | 'bnc' \u002F 'bcn' | 输入点云的形状 |\n| 3. | num_coarse | 整数 | 1024 | 输出点云的形状 |\n| 4. | grid_size | 整数 | 4, 8, 16 | 用于生成详细输出的网格大小 |\n| 5. | detailed_output | 布尔值 | 真 \u002F 假 | 是否选择附加模块以生成详细的输出点云|\n\n#### PointConv的使用：\n使用以下代码创建作者提供的预训练模型。\n> from learning3d.models import create_pointconv\\\n> PointConv = create_pointconv(classifier=True, pretrained='checkpoint路径')\\\n> ptconv = PointConv(emb_dims=1024, input_shape='bnc', input_channel_dim=6, classifier=True)\n\n**或者**  \n使用以下代码创建您自己的PointConv模型。\n\n> PointConv = create_pointconv(classifier=False, pretrained=None)\\\n> ptconv = PointConv(emb_dims=1024, input_shape='bnc', input_channel_dim=3, classifier=True)\n\nPointConv变量是一个类。用户可以使用它创建子类，以覆盖*create_classifier*和*create_structure*方法，从而改变PointConv的网络架构。\n\n| 序号 | 变量 | 数据类型 | 选项 | 用途 |\n|:---:|:---:|:---:|:---:|:---:|\n| 1. | emb_dims | 整数 | 1024, 512 | 每个点的特征向量大小 |\n| 2. | input_shape | 字符串 | 'bnc' \u002F 'bcn' | 输入点云的形状 |\n| 3. | input_channel_dim | 整数 | 3\u002F6 | 指定点云是否仅包含xyz坐标，或同时包含法线和颜色 |\n| 4. | classifier | 布尔值 | 真 \u002F 假 | 是否希望在PointConv中使用分类器 |\n| 5. | pretrained | 布尔值 | 字符串 | 提供预训练分类器模型的路径（仅用于作者提供的权重） |\n\n#### 流场估计网络的使用：\n> from learning3d.models import FlowNet3D\\\n> flownet = FlowNet3D()\n\n#### 数据加载器的使用：\n> from learning3d.data_utils import ModelNet40Data, ClassificationData, RegistrationData, FlowData\\\n> modelnet40 = ModelNet40Data(train=True, num_points=1024, download=True)\\\n> classification_data = ClassificationData(data_class=ModelNet40Data())\\\n> registration_data = RegistrationData(algorithm='PointNetLK', data_class=ModelNet40Data(), partial_source=False, partial_template=False, noise=False)\\\n> flow_data = FlowData()\n\n| 序号 | 变量 | 数据类型 | 选项 | 用途 |\n|:---:|:---:|:---:|:---:|:---:|\n| 1. | train | 布尔值 | 真 \u002F 假 | 将数据划分为训练集和测试集 |\n| 2. | num_points | 整数 | 1024 | 每个点云中的点数 |\n| 3. | download | 布尔值 | 真 \u002F 假 | 如果数据不存在则下载 |\n| 4. | data_class | 对象 | - | 指定使用哪个数据集 |\n| 5. | algorithm | 字符串 | 'PointNetLK', 'PCRNet', 'DCP', 'iPCRNet' | 用于配准的算法 |\n| 6. | partial_source | 布尔值 | 真 \u002F 假 | 创建部分源点云 |\n| 7. | partial_template | 布尔值 | 真 \u002F 假 | 创建部分模板点云 |\n| 8. | noise | 布尔值 | 真 \u002F 假 | 在源点云中添加噪声 |\n\n#### 使用您自己的数据：\n> from learning3d.data_utils import UserData\\\n> dataset = UserData(application, data_dict)\n\n|序号 | 应用 | 必需键 | 对应值 |\n|:---:|:---:|:---:|:---:|\n| 1. | 'classification' | 'pcs' | 点云（BxNx3） |\n|    |                  | 'labels' | 真实类别标签（BxN） |\n| 2. | 'registration' | 'template' | 模板点云（BxNx3） |\n|    |                | 'source' | 源点云（BxNx3） |\n|    |                | 'transformation' | 真实变换矩阵（Bx4x4）|\n| 3. | 'flow_estimation' | 'frame1' | 点云（BxNx3） |\n|    |                   | 'frame2' | 点云（BxNx3） |\n|    |                   | 'flow' | 真实流场向量（BxNx3）|\n\n#### 损失函数的使用：\n> from learning3d.losses import RMSEFeaturesLoss, FrobeniusNormLoss, ClassificationLoss, EMDLoss, ChamferDistanceLoss, CorrespondenceLoss\\\n> rmse = RMSEFeaturesLoss()\\\n> fn_loss = FrobeniusNormLoss()\\\n> classification_loss = ClassificationLoss()\\\n> emd = EMDLoss()\\\n> cd = ChamferDistanceLoss()\\\n> corr = CorrespondenceLoss()\n\n| 序号 | 损失类型 | 用途 |\n|:---:|:---:|:---:|\n| 1. | RMSEFeaturesLoss | 用于计算两个点云全局特征向量之间的均方根值 |\n| 2. | FrobeniusNormLoss | 用于计算两个变换矩阵之间的弗罗贝尼乌斯范数 |\n| 3. | ClassificationLoss | 用于计算交叉熵损失 |\n| 4. | EMDLoss | 两个给定点云之间的地球移动距离 |\n| 5. | ChamferDistanceLoss | 两个给定点云之间的切比雪夫距离 |\n| 6. | CorrespondenceLoss | 使用预测对应关系和真实对应关系，为每个源点计算交叉熵损失 |\n\n\n\n### 运行示例代码：\n1. 将“examples”文件夹中的文件复制到“learning3d”目录之外。\n2. 现在运行该文件。（例如：python test_pointnet.py）\n- 您的目录\u002F位置\n\t- learning3d\n\t- test_pointnet.py\n\n### 参考文献：\n1. [PointNet：](https:\u002F\u002Farxiv.org\u002Fabs\u002F1612.00593) 用于三维分类与分割的点集深度学习\n2. [动态图CNN](https:\u002F\u002Farxiv.org\u002Fabs\u002F1801.07829) 用于点云学习\n3. [PPFNet：](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1802.02669.pdf) 全局上下文感知的局部特征，用于鲁棒的三维点匹配\n4. [PointConv：](https:\u002F\u002Farxiv.org\u002Fabs\u002F1811.07246) 三维点云上的深度卷积网络\n5. [PointNetLK：](https:\u002F\u002Farxiv.org\u002Fabs\u002F1903.05711) 使用PointNet实现鲁棒且高效的点云配准\n6. [PCRNet：](https:\u002F\u002Farxiv.org\u002Fabs\u002F1908.07906) 基于PointNet编码的点云配准网络\n7. [深度最近点：](https:\u002F\u002Farxiv.org\u002Fabs\u002F1905.03304) 用于点云配准的表示学习\n8. [PRNet：](https:\u002F\u002Farxiv.org\u002Fabs\u002F1910.12240) 部分到部分配准的自监督学习\n9. [FlowNet3D：](https:\u002F\u002Farxiv.org\u002Fabs\u002F1806.01411) 三维点云中场景流的学习\n10. [PCN：](https:\u002F\u002Farxiv.org\u002Fpdf\u002F1808.00671.pdf) 点云补全网络\n11. [RPM-Net：](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2003.13479.pdf) 使用学习特征的鲁棒点匹配\n12. [3D ShapeNets：](https:\u002F\u002Fpeople.csail.mit.edu\u002Fkhosla\u002Fpapers\u002Fcvpr2015_wu.pdf) 体素形状的深度表示\n13. [DeepGMR：](https:\u002F\u002Farxiv.org\u002Fabs\u002F2008.09088) 学习潜在高斯混合模型用于配准\n14. [CMU：](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2010.16085.pdf) 对应矩阵被低估了\n15. [MaskNet：](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2010.09185.pdf) 一种全卷积网络用于估计内点\n16. [MaskNet++：](https:\u002F\u002Fwww.sciencedirect.com\u002Fscience\u002Farticle\u002Fabs\u002Fpii\u002FS0097849322000085) 两组点云的内点\u002F外点识别\n17. [CurveNet：](https:\u002F\u002Fgithub.com\u002Ftiangexiang\u002FCurveNet) 在点云中漫步：用于点云形状分析的曲线学习","# Learning3D 快速上手指南\n\n## 环境准备\n\n- **操作系统**：Ubuntu 16.04\u002F18.04\u002F20.04.6、Linux Mint、macOS Sequoia 15.3.1  \n- **CUDA**：10.0 或更高版本  \n- **PyTorch**：1.3 或更高版本  \n- **Python**：3.8  \n\n> 推荐使用 NVIDIA 显卡 + CUDA 环境以获得最佳性能。如需加速下载，可配置 PyPI 镜像源（如清华源）：  \n> `pip install -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple learning3d`\n\n## 安装步骤\n\n### 方式一：通过 PyPI 安装（推荐）\n```bash\npip install learning3d\n```\n\n### 方式二：从源码安装\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d.git\ncd learning3d\ngit checkout pypi_v0.1.0\npython3 -m pip install .\n```\n\n## 基本使用\n\n### 1. 点云分类（使用 PointNet）\n\n```python\nfrom learning3d.models import PointNet, Classifier\nfrom learning3d.data_utils import ModelNet40Data\n\n# 加载数据\ndataset = ModelNet40Data(train=True, num_points=1024, download=True)\n\n# 创建 PointNet 特征提取器\npointnet = PointNet(emb_dims=1024, input_shape='bnc')\n\n# 创建分类器（40 类）\nclassifier = Classifier(feature_model=pointnet, num_classes=40)\n\n# 示例输入（B=1, N=1024, C=3）\nimport torch\npoints = torch.randn(1, 1024, 3)\nlogits = classifier(points)\nprint(logits.shape)  # 输出: torch.Size([1, 40])\n```\n\n### 2. 点云配准（使用 PointNetLK）\n\n```python\nfrom learning3d.models import PointNet, PointNetLK\nfrom learning3d.data_utils import RegistrationData\n\n# 加载配准数据\ndata = RegistrationData(algorithm='PointNetLK', data_class=ModelNet40Data())\n\n# 创建 PointNetLK 配准网络\npointnet = PointNet(emb_dims=1024, input_shape='bnc')\npnlk = PointNetLK(feature_model=pointnet, delta=1e-2, xtol=1e-7, pooling='max')\n\n# 输入：源点云和目标点云（均为 BxNx3）\nsource = torch.randn(1, 1024, 3)\ntarget = torch.randn(1, 1024, 3)\ntransform = pnlk(source, target)\nprint(transform.shape)  # 输出: torch.Size([1, 4, 4]) —— 4x4 变换矩阵\n```\n\n> 所有模型均位于 `learning3d.models`，数据加载器位于 `learning3d.data_utils`，预训练模型存于 `learning3d\u002Fpretrained`。  \n> 请勿将自定义代码直接写入 `learning3d` 文件夹内，建议在项目根目录下独立编写。","某自动驾驶初创公司正在开发高精度3D点云语义分割系统，用于识别道路中的障碍物（如锥桶、路缘石），但团队仅有2名工程师，缺乏3D深度学习经验，且项目周期紧张。\n\n### 没有 learning3d 时\n- 团队需从零实现PointNet或DGCNN的PyTorch代码，耗时近3周仍无法稳定训练。\n- 缺乏预训练模型，每次训练都要从随机初始化开始，收敛慢、效果差，mIoU仅52%。\n- 注册模块需对齐激光雷达前后帧，但手动实现PCRNet或DCP算法错误频出，配准误差超0.3米。\n- Chamfer距离等关键损失函数需自行编写，调试困难，训练过程不稳定。\n- 无法快速接入自定义数据集，数据加载和预处理逻辑重复造轮子，开发效率低下。\n\n### 使用 learning3d 后\n- 仅用3天就通过`pip install learning3d`集成PointNet和DGCNN，直接调用API完成模型搭建。\n- 下载预训练的PointNet模型微调，mIoU在一周内提升至81%，显著优于基线。\n- 直接调用PCRNet进行点云配准，误差降至0.08米，满足L4级自动驾驶精度要求。\n- 内置ChamferDistance损失函数开箱即用，训练稳定，无需手动推导梯度。\n- 通过`UserData`接口快速加载自研激光雷达数据，仅需5行代码完成数据管道重构。\n\nlearning3d 让一支小团队在极短时间内构建出工业级3D点云处理系统，将原本需要数月的开发周期压缩至两周内完成。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fvinits5_learning3d_2038011e.png","vinits5","ViNiT SaRoDe","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fvinits5_3d641493.jpg","\"Vinit is a computer scientist and roboticist. His research focuses on making machines intelligent.\"","Robotics Institute, CMU","Pittsburgh, Pennsylvania","vinitsarode5@gmail.com",null,"https:\u002F\u002Fvinitsarode.weebly.com\u002F","https:\u002F\u002Fgithub.com\u002Fvinits5",[86,90,94,98],{"name":87,"color":88,"percentage":89},"Python","#3572A5",81.6,{"name":91,"color":92,"percentage":93},"Cuda","#3A4E3A",12.1,{"name":95,"color":96,"percentage":97},"C++","#f34b7d",5.5,{"name":99,"color":100,"percentage":101},"C","#555555",0.8,854,108,"2026-04-02T07:30:34","MIT","Linux, macOS","需要 NVIDIA GPU，CUDA 10.0+，显存未明确说明，建议 8GB+","未说明",{"notes":110,"python":111,"dependencies":112},"建议使用 pip 安装，首次运行可能需下载预训练模型（约数GB），推荐在 Linux 或 macOS 环境中使用，Windows 未被支持；使用自定义数据时需遵循指定数据格式。","3.8+",[113,114,115,116,117,118,119],"torch>=1.3","numpy","scipy","matplotlib","tqdm","plyfile","h5py",[14,13,54],"2026-03-27T02:49:30.150509","2026-04-06T05:16:38.842500",[124,129,134,139,144,149],{"id":125,"question_zh":126,"answer_zh":127,"source_url":128},9040,"如何下载 ModelNet40 数据集，当官方链接失效时？","可以使用以下两个替代链接下载 ModelNet40 数据集：1. Google Drive: https:\u002F\u002Fdrive.google.com\u002Fdrive\u002Ffolders\u002F17YHlezqGWkKMU2m_YU2hM2uWag_6OAu6?usp=sharing；2. Hugging Face: https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FMsun\u002Fmodelnet40\u002Fresolve\u002Fmain\u002Fmodelnet40_ply_hdf5_2048.zip","https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d\u002Fissues\u002F23",{"id":130,"question_zh":131,"answer_zh":132,"source_url":133},9041,"运行 examples 时出现 ModuleNotFoundError: No module named 'learning3d'，如何解决？","在运行 examples 目录下的脚本前，需在项目根目录执行 `pip install -e .` 来将 learning3d 安装为可导入的本地包，或在脚本开头添加 `import sys; sys.path.append('..')` 以正确导入模块。","https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d\u002Fissues\u002F12",{"id":135,"question_zh":136,"answer_zh":137,"source_url":138},9042,"使用 EMD 损失时报错 No module named 'emd'，如何解决？","EMD 损失依赖 CUDA 编译的自定义模块，需在项目根目录执行 `python3 setup.py install` 进行编译安装。确保已安装 CUDA 和 PyTorch GPU 版本，否则无法使用 EMD 损失。","https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d\u002Fissues\u002F13",{"id":140,"question_zh":141,"answer_zh":142,"source_url":143},9043,"运行 test_masknet.py 时出现 SyntaxError: invalid syntax，如何修复？","修改文件路径导入方式：将 `from learning3d.models import MaskNet` 改为 `from models import MaskNet`，并将所有模型文件中 `from ..ops` 或 `from ..utils` 的导入语句中的 `..` 删除，改为 `from ops` 和 `from utils`。","https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d\u002Fissues\u002F8",{"id":145,"question_zh":146,"answer_zh":147,"source_url":148},9044,"如何在代码中使用自己的点云数据集？","参考项目 README 中的 'Use Your Own Data' 部分，需自定义一个继承 `torch.utils.data.Dataset` 的类，重写 `__getitem__` 方法返回点云数据和标签，并确保数据格式为 Nx3 的 NumPy 数组（N 为点数）。","https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d\u002Fissues\u002F1",{"id":150,"question_zh":151,"answer_zh":152,"source_url":153},9045,"为什么运行代码时出现 'Error raised in pointnet2 module in utils!'，如何解决？","该错误通常因 PointNet2 的 CUDA 扩展未正确编译导致。请进入 `learning3d\u002Fpointnet2` 目录，执行 `python setup.py install` 重新编译，确保使用与 PyTorch 匹配的 CUDA 版本。","https:\u002F\u002Fgithub.com\u002Fvinits5\u002Flearning3d\u002Fissues\u002F7",[]]