mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-19 06:54:41 +08:00
2.4 KiB
2.4 KiB
Vision
Vision是FastDeploy中的视觉模型模块,包含processors
和utils
两个公共模块,以及模型模块。
processors 图像处理模块
processors
提供了常见的图像处理操作,并为各操作实现不同的后端,如当前支持的CPU以及GPU两种处理方式,在模型中预算中,开发者调用processors
提供的API,即可快速在不同的处理后端进行切换。
默认在CPU上进行处理
namespace vis = fastdeploy::vision;
im = cv2.imread("test.jpg");
vis::Mat mat(im);
assert(vis::Resize::Run(&mat, 224, 224));
assert(vis::Normalize::Run(&mat, {0.5, 0.5, 0.5}, {0.5, 0.5, 0.5}));
assert(vis::HWC2CHW::Run(&mat));
切换为CUDA GPU进行处理
namespace vis = fastdeploy::vision;
vis::Processor::default_lib = vis::ProcessorLib::OPENCV_CUDA;
im = cv2.imread("test.jpg");
vis::Mat mat(im);
assert(vis::Resize::Run(&mat, 224, 224));
assert(vis::Normalize::Run(&mat, {0.5, 0.5, 0.5}, {0.5, 0.5, 0.5}));
assert(vis::HWC2CHW::Run(&mat));
在处理过程中,通过fastdeploy::vision::Mat
作为传递的数据结构
struct Mat {
Mat(cv::Mat); // 通过`cv::Mat`进行构造
FDDataType Type(); // 数值类型
int Channels(); // 通道数
int Width(); // 宽
int Height(); // 高
// 获取图像,如Mat在GPU上,则会拷贝到CPU上再返回
cv::Mat GetCpuMat();
// 获取图像,如Mat在CPU上,则会拷贝到GPU上再返回
cv::cuda::GpuMat GetGpuMat();
void ShareWithTensor(FDTensor* tensor); // 构造一个FDTensor,并共享内存
bool CopyToTensor(FDTensor* tensor); // 构造一个CPU上的FDTensor,并将数据拷贝过去
Layout layout; // 数据排布,支持Layout::HWC / Layout::CHW
Device device; // 数据存放设备,支持Device::CPU / Device::GPU
};
utilities模块 工具模块
提供一些常见的函数,如分类模型常用的TopK
选择,检测模型的NMS
操作。同样后面可以考虑将后处理的实现也有不同后端
visualize 可视化模块
提供一些可视化函数,如检测、分割、OCR都需要这种函数来看可视化的效果
模型模块
这个是Vision
中最重要的模块,所有的模块均通过域名
+ 模型名
来划分,如
- vision::ppdet::YOLOv3 // PaddleDetection的YOLOv3模型
- vision::ppdet::RCNN // PaddleDetection的RCNN类模型
- vision::ultralytics::YOLOv5 // https://github.com/ultralytics/yolov5 YOLOv5模型
模型的增加参考模型开发