全国免费咨询:

13245491521

VR图标白色 VR图标黑色
X

中高端软件定制开发服务商

与我们取得联系

13245491521     13245491521

2019-01-30_实时单人姿态估计,在自己手机上就能实现 ∶ ) 安卓和iOS都可以哦~

您的位置:首页 >> 新闻 >> 行业资讯

实时单人姿态估计,在自己手机上就能实现 ∶ ) 安卓和iOS都可以哦~ 选自GitHub 作者:edvardHua 参与:路 本文介绍了如何使用 TensorFlow 在智能机上(包括安卓和 iOS 设备)执行实时单人姿态估计。 GitHub 地址:https://github.com/edvardHua/PoseEstimationForMobile 该 repo 使用 TensorFlow 实现 CPM 和 Hourglass 模型。这里未使用常规的卷积,而是在模型内部使用了反向卷积(又叫 Mobilenet V2),以便执行实时推断。 注:你可以修改网络架构,来训练更高 PCKh 的模型。架构地址:https://github.com/edvardHua/PoseEstimationForMobile/tree/master/training/src 该库包含: 训练 CPM 和 Hourglass 模型的代码; 安卓 demo 的源代码; IOS demo 的源代码。 下面的 gif 是在 Mi Mix2s 上截取的(~60 FPS) 你可以下载以下 apk,在自己的设备上进行测试。 PoseEstimation-Mace.apk:https://raw.githubusercontent.com/edvardHua/PoseEstimationForMobile/master/release/PoseEstimation-Mace.apk PoseEstimation-TFlite.apk:https://raw.githubusercontent.com/edvardHua/PoseEstimationForMobile/master/release/PoseEstimation-TFlite.apk 训练 依赖项 Python3 TensorFlow = 1.4 Mace 数据集 训练数据集:https://drive.google.com/open?id=1zahjQWhuKIYWRRI2ZlHzn65Ug_jIiC4l 将其解压缩,获取以下文件结构: #root@ubuntuin~/hdd/ai_challenger $tree-L1.. ├──ai_challenger_train.json ├──ai_challenger_valid.json ├──train └──valid 该训练数据集仅包含单人图像,数据来源是 AI Challenger 竞赛。共包含 22446 个训练样本和 1500 个测试样本。 该 repo 作者使用 tf-pose-estimation 库中的数据增强代码将标注迁移为 COCO 格式。tf-pose-estimation 库:https://github.com/ildoonet/tf-pose-estimation 超参数 训练步骤中,使用 experiments 文件夹中的 cfg 文件传输超参数。 以下是 mv2_cpm.cfg 文件的内容: [Train] model:'mv2_cpm' checkpoint:False datapath:'/root/hdd/ai_challenger' imgpath:'/root/hdd/' visible_devices:'0,1,2' multiprocessing_num:8 max_epoch:1000 lr:'0.001' batchsize:5 decay_rate:0.95 input_width:192 input_height:192 n_kpoints:14 scale:2 modelpath:'/root/hdd/trained/mv2_cpm/models' logpath:'/root/hdd/trained/mv2_cpm/log' num_train_samples:20000 per_update_tensorboard_step:500 per_saved_model_step:2000 pred_image_on_tensorboard:True 该 cfg 文件覆盖模型的所有参数,在 network_mv2_cpm.py 中仍有一些参数。 使用 nvidia-docker 训练 通过以下命令构建 docker: cdtraining/docker dockerbuild-tsingle-pose. 或者 dockerpulledvardhua/single-pose 然后运行以下命令,训练模型: nvidia-dockerrun-it-d\ -vdataset_path:/data5-vtraining_code_path/training:/workspace\ -p6006:6006-eLOG_PATH=/root/hdd/trained/mv2_cpm/log\ -ePARAMETERS_FILE=experiments/mv2_cpm.cfgedvardhua/single-pose 此外,它还在 port 6006 上创建了 tensorboard。确保安装了 nvidia-docker。 按一般方法训练 1. 安装依赖项: cdtraining pip3install-rrequirements.txt 还需要安装 cocoapi (https://github.com/cocodataset/cocoapi)。 2. 编辑 experiments 文件夹中的参数文件,它包含几乎所有超参数和训练中需要定义的其他配置。之后,传输参数文件,开始训练: cdtraining python3src/train.pyexperiments/mv2_cpm.cfg 在 3 张英伟达 1080Ti 显卡上经过 12 个小时的训练后,该模型几乎收敛。以下是对应的 tensorboard 图。 基准(PCKh) 运行以下命令,评估 PCKh 值。 python3src/benchmark.py--frozen_pb_path=hourglass/model-360000.pb\ --anno_json_path=/root/hdd/ai_challenger/ai_challenger_valid.json\ --img_path=/root/hdd\ --output_node_name=hourglass_out_3 预训练模型 CPM:https://github.com/edvardHua/PoseEstimationForMobile/tree/master/release/cpm_model Hourglass:https://github.com/edvardHua/PoseEstimationForMobile/tree/master/release/hourglass_model 安卓 demo 由于 mace 框架,你可以使用 GPU 在安卓智能机上运行该模型。 按照以下命令将模型转换为 mace 格式: cdyour-mace-path#Youtranserhourglassorcpmmodelbychanging`yml`file. pythontools/converter.pyconvert--config=PoseEstimationForMobilePath/release/mace_ymls/cpm.yml 然后根据 mace 文档的说明,将模型集成到安卓设备中。 至于如何调用模型、解析输出,可以参见安卓源代码:https://github.com/edvardHua/PoseEstimationForMobile/tree/master/android_demo。 一些芯片的平均推断时间基准如下所示: 以下是该 repo 作者构建该 demo 的环境: 操作系统:macOS 10.13.6(mace 目前不支持 windows) Android Studio:3.0.1 NDK 版本:r16 在构建 mace-demo 时,不同环境可能会遇到不同的错误。为避免这种情况,作者建议使用 docker。 dockerpullregistry.cn-hangzhou.aliyuncs.com/xiaomimace/mace-dev-lite dockerrun-it --privileged-d--namemace-dev --net=host -vto/you/path/PoseEstimationForMobile/android_demo/demo_mace:/demo_mace registry.cn-hangzhou.aliyuncs.com/xiaomimace/mace-dev-lite dockerrun-it--privileged-d--namemace-dev--net=host\ -vto/you/path/PoseEstimationForMobile/android_demo/demo_mace:/demo_mace\ registry.cn-hangzhou.aliyuncs.com/xiaomimace/mace-dev-lite #Entertodocker dockerexec-itmace-devbash #Execcommandinsidethedockercd/demo_mace./gradlewbuild 或者将模型转换为 tflite: #Converttofrozenpb.cdtraining python3src/gen_frozen_pb.py\ --checkpoint=you_training_model_path/model-xxx--output_graph=you_output_model_path/model-xxx.pb\ --size=192--model=mv2_cpm_2 #Ifyouupdatetensorflowto1.9,runfollowingcommand. python3src/gen_tflite_coreml.py\ --frozen_pb=forzen_graph.pb\ --input_node_name='image'\ --output_node_name='Convolutional_Pose_Machine/stage_5_out'\ --output_path='./'\ --type=tflite #Converttotflite.#Seehttps://github.com/tensorflow/tensorflow/blob/master/tensorflow/docs_src/mobile/tflite/devguide.mdformoreinformation. bazel-bin/tensorflow/contrib/lite/toco/toco\ --input_file=you_output_model_path/model-xxx.pb\ --output_file=you_output_tflite_model_path/mv2-cpm.tflite\ --input_format=TENSORFLOW_GRAPHDEF--output_format=TFLITE\ --inference_type=FLOAT\ --input_shape="1,192,192,3"\ --input_array='image'\ --output_array='Convolutional_Pose_Machine/stage_5_out' 然后,将 tflite 文件放在 android_demo/app/src/main/assets 中,修改 ImageClassifierFloatInception.kt 中的参数。 ............//parametersneedtomodifyinImageClassifierFloatInception.kt/***CreateImageClassifierFloatInceptioninstance**@paramimageSizeXGettheimagesizealongthexaxis.*@paramimageSizeYGettheimagesizealongtheyaxis.*@paramoutputWTheoutputwidthofmodel*@paramoutputHTheoutputheightofmodel*@parammodelPathGetthenameofthemodelfilestoredinAssets.*@paramnumBytesPerChannelGetthenumberofbytesthatisusedtostoreasingle*colorchannelvalue.*/ funcreate( activity:Activity, imageSizeX:Int=192, imageSizeY:Int=192, outputW:Int=96, outputH:Int=96, modelPath:String="mv2-cpm.tflite", numBytesPerChannel:Int=4 ):ImageClassifierFloatInception= ImageClassifierFloatInception( activity, imageSizeX, imageSizeY, outputW, outputH, modelPath, numBytesPerChannel)............ 最后,将该项目导入 Android Studio,在智能机设备上运行。 iOS Demo 首先,将模型转换为 CoreML 模型: #Converttofrozenpb.cdtraining python3src/gen_frozen_pb.py\ --checkpoint=you_training_model_path/model-xxx--output_graph=you_output_model_path/model-xxx.pb\ --size=192--model=mv2_cpm_2 #Runthefollowingcommandtogetmlmodel python3src/gen_tflite_coreml.py\ --frozen_pb=forzen_graph.pb\ --input_node_name='image'\ --output_node_name='Convolutional_Pose_Machine/stage_5_out'\ --output_path='./'\ --type=coreml 然后,按照 PoseEstimation-CoreML 中的说明来操作(https://github.com/tucan9389/PoseEstimation-CoreML)。 本文为机器之心编译,转载请联系本公众号获得授权。 ?------------------------------------------------ 加入机器之心(全职记者 / 实习生):hr@jiqizhixin.com 投稿或寻求报道:content@jiqizhixin.com 广告 & 商务合作:bd@jiqizhixin.com

上一篇:2024-07-15_SmallRig斯莫格发布《影像行业通用结构合集》v1.0!整合规格尺寸,开放生态建设! 下一篇:2023-09-14_马拉松比赛竟被一家银行玩出了新高度

TAG标签:

15
网站开发网络凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设网站改版域名注册主机空间手机网站建设网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线:13245491521 13245491521 ,我们会详细为你一一解答你心中的疑难。
项目经理在线

相关阅读 更多>>

猜您喜欢更多>>

我们已经准备好了,你呢?
2022我们与您携手共赢,为您的企业营销保驾护航!

不达标就退款

高性价比建站

免费网站代备案

1对1原创设计服务

7×24小时售后支持

 

全国免费咨询:

13245491521

业务咨询:13245491521 / 13245491521

节假值班:13245491521()

联系地址:

Copyright © 2019-2025      ICP备案:沪ICP备19027192号-6 法律顾问:律师XXX支持

在线
客服

技术在线服务时间:9:00-20:00

在网站开发,您对接的直接是技术员,而非客服传话!

电话
咨询

13245491521
7*24小时客服热线

13245491521
项目经理手机

微信
咨询

加微信获取报价