diff --git a/PaddleCV/3d_vision/PointNet++/ext_op/src/gather_point_op.cc b/PaddleCV/3d_vision/PointNet++/ext_op/src/gather_point_op.cc index 0f41f1b3ad7cfc22e7fa7abfa8cbfa277ad9b136..d15136841fddcbe129d1d047982b0e493b43f074 100644 --- a/PaddleCV/3d_vision/PointNet++/ext_op/src/gather_point_op.cc +++ b/PaddleCV/3d_vision/PointNet++/ext_op/src/gather_point_op.cc @@ -94,15 +94,13 @@ public: using framework::SingleGradOpMaker::SingleGradOpMaker; protected: - std::unique_ptr Apply() const override { - auto* op = new T(); + void Apply(GradOpPtr op) const override { op->SetType("gather_point_grad"); op->SetInput("X", this->Input("X")); op->SetInput("Index", this->Input("Index")); op->SetInput(framework::GradVarName("Output"), this->OutputGrad("Output")); op->SetOutput(framework::GradVarName("X"), this->InputGrad("X")); op->SetAttrMap(this->Attrs()); - return std::unique_ptr(op); } }; diff --git a/PaddleCV/3d_vision/PointNet++/ext_op/src/group_points_op.cc b/PaddleCV/3d_vision/PointNet++/ext_op/src/group_points_op.cc index 7266c553b2d2da95a8fa6355a0ffa2250ba01f71..7708c57bdc907adc6e1bd86ce7d819b46c8603b7 100644 --- a/PaddleCV/3d_vision/PointNet++/ext_op/src/group_points_op.cc +++ b/PaddleCV/3d_vision/PointNet++/ext_op/src/group_points_op.cc @@ -102,15 +102,13 @@ class GroupPointsGradDescMaker : public framework::SingleGradOpMaker { using framework::SingleGradOpMaker::SingleGradOpMaker; protected: - std::unique_ptr Apply() const override { - auto* op = new T(); + void Apply(GradOpPtr op) const override { op->SetType("group_points_grad"); op->SetInput("X", this->Input("X")); op->SetInput("Idx", this->Input("Idx")); op->SetInput(framework::GradVarName("Out"), this->OutputGrad("Out")); op->SetOutput(framework::GradVarName("X"), this->InputGrad("X")); op->SetAttrMap(this->Attrs()); - return std::unique_ptr(op); } }; diff --git a/PaddleCV/3d_vision/PointNet++/ext_op/src/three_interp_op.cc b/PaddleCV/3d_vision/PointNet++/ext_op/src/three_interp_op.cc index b7bfbe7f935b74c46a795dd5370c814e4f5350c4..2b7a3be4b84c0d5d02a0389d74f8447ea7d02b97 100644 --- a/PaddleCV/3d_vision/PointNet++/ext_op/src/three_interp_op.cc +++ b/PaddleCV/3d_vision/PointNet++/ext_op/src/three_interp_op.cc @@ -117,8 +117,7 @@ public: using framework::SingleGradOpMaker::SingleGradOpMaker; protected: - std::unique_ptr Apply() const override { - auto* op = new T(); + void Apply(GradOpPtr op) const override { op->SetType("three_interp_grad"); op->SetInput("X", this->Input("X")); op->SetInput("Weight", this->Input("Weight")); @@ -126,7 +125,6 @@ protected: op->SetInput(framework::GradVarName("Out"), this->OutputGrad("Out")); op->SetOutput(framework::GradVarName("X"), this->InputGrad("X")); op->SetAttrMap(this->Attrs()); - return std::unique_ptr(op); } }; diff --git a/PaddleCV/README.md b/PaddleCV/README.md index 155dc96a357c6ac4a54c242a02c6a066ec621ef6..3548ede09f8844a45d709620dfffe6e30e1112cc 100644 --- a/PaddleCV/README.md +++ b/PaddleCV/README.md @@ -108,11 +108,9 @@ Network,ICNet)进行语义分割,相比其他分割算法,ICNet兼顾了准 视频分类是视频理解任务的基础,与图像分类不同的是,分类的对象不再是静止的图像,而是一个由多帧图像构成的、包含语音数据、包含运动信息等的视频对象,因此理解视频需要获得更多的上下文信息,不仅要理解每帧图像是什么、包含什么,还需要结合不同帧,知道上下文的关联信息。视频分类方法主要包含基于卷积神经网络、基于循环神经网络、或将这两者结合的方法。该任务中我们介绍基于Fluid的视频分类模型,目前包含Temporal Segment Network(TSN)模型,后续会持续增加更多模型。 - - [TSN](https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/video) - 目标跟踪 -------- @@ -120,3 +118,12 @@ Network,ICNet)进行语义分割,相比其他分割算法,ICNet兼顾了准 - [SiamFC](https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/tracking) - [ATOM](https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/tracking) + + +3D视觉 +------- + +计算机3D视觉技术是解决包含高度、宽度、深度信息的三维立体图像的分类、分割、检测、识别等任务的计算机技术,广泛地应用于如机器人、无人车、AR等领域。3D点云是3D图像数据的主要表达形式之一,基于3D点云的形状分类、语义分割、目标检测模型是3D视觉方向的基础任务。当前飞桨模型库开源了基于3D点云数据的用于分类、分割的PointNet++模型和用于检测的PointRCNN模型。 + +[PointNet++](https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/3d_vision/PointNet++) +[PointRCNN](https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/3d_vision/PointRCNN) diff --git a/README.md b/README.md index 26bc3e90ea5c3f4f374145c347eacddce5f3e7d9..3e311a5ba3b1333823c17919b9b6f877aa933e4e 100644 --- a/README.md +++ b/README.md @@ -144,6 +144,15 @@ PaddlePaddle 提供了丰富的计算单元,使得用户可以采用模块化 | [ETS](https://github.com/PaddlePaddle/models/tree/release/1.7/PaddleCV/video/models/ets) | 视频摘要生成领域的基准模型 | ActivityNet Captions | METEOR:10.0 | | [TALL](https://github.com/PaddlePaddle/models/tree/release/1.7/PaddleCV/video/models/tall) | 视频Grounding方向的BaseLine模型 | TACoS | R1@IOU5=0.13 | +### 3D视觉 + +计算机3D视觉技术是解决包含高度、宽度、深度三个方向信息的三维立体图像的分类、分割、检测、识别等任务的计算机技术,广泛地应用于如机器人、无人车、AR等领域。3D点云是3D图像数据的主要表达形式之一,基于3D点云的形状分类、语义分割、目标检测模型是3D视觉方向的基础任务。当前飞桨模型库开源了基于3D点云数据的用于分类、分割的PointNet++模型和用于检测的PointRCNN模型。 + +| 模型名称 | 模型简介 | 数据集 | 评估指标 | +| ------------------------------------------------------------ | ------------------------------------------------------------ | -------------------------- | ----------- | +| [PointNet++](https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/3d_vision/PointNet++) | 改进的PointNet网络,加入局部特征提取提高模型泛化能力 | ModelNet40(分类) / Indoor3D(分割) | 分类:Top-1 = 90% / 分割:Top-1 = 86% | +| [PointRCNN](https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/3d_vision/PointRCNN) | 自下而上的3D检测框生成方法 | KITTI(Car) | 3D AP@70(easy/median/hard) = 86.66/76.65/75.90 | + ## PaddleNLP [**PaddleNLP**](https://github.com/PaddlePaddle/models/tree/release/1.7/PaddleNLP) 是基于 PaddlePaddle 深度学习框架开发的自然语言处理 (NLP) 工具,算法,模型和数据的开源项目。百度在 NLP 领域十几年的深厚积淀为 PaddleNLP 提供了强大的核心动力。使用 PaddleNLP,您可以得到: