当前位置: 首页 > news >正文

20251114 DensePose深度姿势图像处理(简单易用)

目的:

detectron2的densepose代码很全,但是我不需要那么多功能,所以删繁就简

代码库:

https://gitee.com/lushengjie/densepose.git

效果图:

方式:代码调用 或者 flask api调用

简单的代码逻辑(无法直接运行!!,要运行,去代码仓库搭环境!!这里只是看逻辑)

from typing import Any, ClassVar, Dict
import torchfrom detectron2.config import get_cfg
from detectron2.engine.defaults import DefaultPredictorfrom densepose import add_densepose_config
from densepose.vis.base import CompoundVisualizer
from densepose.vis.bounding_box import ScoredBoundingBoxVisualizer
from densepose.vis.densepose_outputs_vertex import (DensePoseOutputsTextureVisualizer,DensePoseOutputsVertexVisualizer,get_texture_atlases,
)
from densepose.vis.densepose_results import (DensePoseResultsContourVisualizer,DensePoseResultsFineSegmentationVisualizer,DensePoseResultsUVisualizer,DensePoseResultsVVisualizer,
)
from densepose.vis.densepose_results_textures import (DensePoseResultsVisualizerWithTexture,get_texture_atlas,
)
from densepose.vis.extractor import (CompoundExtractor,create_extractor,
)VISUALIZERS: ClassVar[Dict[str, object]] = {"dp_contour": DensePoseResultsContourVisualizer,"dp_segm": DensePoseResultsFineSegmentationVisualizer,"dp_u": DensePoseResultsUVisualizer,"dp_v": DensePoseResultsVVisualizer,"dp_iuv_texture": DensePoseResultsVisualizerWithTexture,"dp_cse_texture": DensePoseOutputsTextureVisualizer,"dp_vertex": DensePoseOutputsVertexVisualizer,"bbox": ScoredBoundingBoxVisualizer,
}def get_dp_predictor():config_fpath = 'configs/densepose_rcnn_R_50_FPN_s1x.yaml'model_fpath = 'model_final_162be9.pkl'opts = []cfg = get_cfg()add_densepose_config(cfg)cfg.merge_from_file(config_fpath)cfg.merge_from_list(opts)cfg.MODEL.WEIGHTS = model_fpathcfg.freeze()predictor = DefaultPredictor(cfg)return cfg, predictordef get_outputs_by_predictor(dp_predictor, img_pil):import numpy as npimport cv2img_np = np.array(img_pil)img = cv2.cvtColor(img_np, cv2.COLOR_RGB2BGR)with torch.no_grad():outputs = dp_predictor(img)["instances"]return outputsdef create_context(cfg) -> Dict[str, Any]:visualizers = []extractors = []texture_atlas = get_texture_atlas(None)texture_atlases_dict = get_texture_atlases(None)vis = VISUALIZERS['dp_segm'](cfg=cfg,texture_atlas=texture_atlas,texture_atlases_dict=texture_atlases_dict,)visualizers.append(vis)extractor = create_extractor(vis)extractors.append(extractor)visualizer = CompoundVisualizer(visualizers)extractor = CompoundExtractor(extractors)context = {"extractor": extractor,"visualizer": visualizer,"entry_idx": 0,}return contextdef execute_on_outputs(context: Dict[str, Any], outputs, img_pil, 
):import cv2import numpy as npvisualizer = context["visualizer"]extractor = context["extractor"]img_np = np.array(img_pil)image = cv2.cvtColor(img_np, cv2.COLOR_RGB2GRAY)image = np.tile(image[:, :, np.newaxis], [1, 1, 3])bimg = np.zeros_like(image)data = extractor(outputs)image_vis = visualizer.visualize(image, data) # (1280, 1120, 3)bimage_vis = visualizer.visualize(bimg, data)image_vis = cv2.cvtColor(image_vis, cv2.COLOR_BGR2RGB)bimage_vis = cv2.cvtColor(bimage_vis, cv2.COLOR_BGR2RGB)return image_vis, bimage_visdef main():dp_cfg, dp_predictor = get_dp_predictor()from PIL import Imageimg_path = 'image.jpg'img_pil = Image.open(img_path).convert('RGB') dp_outputs = get_outputs_by_predictor(dp_predictor, img_pil)dp_context = create_context(dp_cfg)res_bg_dp, res_nobg_dp = execute_on_outputs(dp_context, dp_outputs, img_pil)res_bg_dp_pil = Image.fromarray(res_bg_dp)res_nobg_dp_pil = Image.fromarray(res_nobg_dp)return res_bg_dp_pil, res_nobg_dp_pilif __name__ == "__main__":main()

5步逻辑,删除源代码库中的无关代码

获得model -> 上下文配置 -> 获得 输出 -> 解析输出 -> 保存结果

flask api也是基于这个完成的

http://www.dtcms.com/a/610468.html

相关文章:

  • 网站开发的调研wordpress写了文章打不开
  • Java_泛型的继承和通配符
  • 如何在上线后出现重大故障时进行应急响应
  • 什么是布隆过滤器?如何解决高并发缓存穿透问题?
  • 可以做微信推送的网站wordpress模板 美容
  • 石家庄做网站排名手机版商城网站都有哪 些功能
  • window平台使用lama_factory Qlora微调qwen2.5-3B-instruct实践
  • 基于野火stm32f407实现多任务动态创建
  • C语言--详解--指针--下
  • Oracle查看正在rebuild online的索引
  • Odoo 19版 odoo.conf 配置参数概览
  • 做资源网站需要什么四川公共资源交易信息网
  • 企业网站营销典型案例wordpress作者排行
  • Bootstrap5 进度条
  • 鸿蒙Cordova插件架构与OnsenUI组件适配机制深度解析
  • 前端性能问题分析
  • wdcp怎么上传做好的网站俄罗斯外贸网站
  • 网站设计师工资一般多少北京海淀区网络科技有限公司
  • c++错误<RC Condition =“‘%(ResourceCompile.ExcludedFromBuild)‘!=‘true‘“
  • 《中医基础理论》- 2.哲学基础之藏象学说-肝系统详解
  • 快速建立平台网站开发网站模板设计如何将网站转成小程序
  • Pydantic Output Parser in LangChain
  • 临海企业网站建设公司青岛网站制作套餐
  • 逻辑回归:从基础理论到实践应用的全方位解读
  • ChatGPT回答用AI怎么怎么赚钱
  • 修车店怎么做网站深圳电子商务网站建设公司
  • 自己的网站打不开网页设计与制作教程杨选辉ppt
  • MySQL Join 的原理与优化实践
  • iBM(i2)绘制资金链路(五)
  • Mybatis操作数据库(进阶)