应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

使用MindStudio进行FOMM模型推理全流程详解

  使用MindStudio进行FOMM模型推理
  使用MindStudio对FOMM模型进行ONNX推理
  本次实验使用MindStudio开发工具进行SSH远程连接、编译、开发等操作,MindStudio的安装配置请参照:
  https:www。hiascend。comdocumentdetailzhmindstudio50RC2progressiveknowledgeindex。html
  MindStudio提供了AI开发所需的一站式开发环境,支持模型开发、算子开发以及应用开发三个主流程中的开发任务。依靠模型可视化、算力测试、IDE本地仿真调试等功能,MindStudio能够帮助您在一个工具上就能高效便捷地完成AI应用开发。MindStudio采用了插件化扩展机制,开发者可以通过开发插件来扩展已有功能。
  一、模型简介
  FOMM模型最早是AliaksandrSiarohin等人在发表的《FirstOrderMotionModelforImageAnimation》一文中提到的用于图像动画化(imageanimation)的模型。图像动画化任务是指给定一张原图片和一个驱动视频,通过视频合成,生成主角为原图片,而动画效果和驱动视频一样的视频。以往的视频合成往往依赖于预训练模型来提取特定于对象的表示,而这些预训练模型是使用昂贵的真实数据注释构建的,并且通常不适用于任意对象类别。而FOMM的提出很好的解决了这个问题。
  FOMM主要依赖于两个模型:kpdetector和generator。顾名思义,第一个模型的作用是关键点检测,第二个模型的作用是视频生成。而本次FOMM模型推理实验也是主要围绕这两个模型来进行。
  本文详细介绍了在310P(昇腾显卡)和T4(nvidia显卡)两种机器上,使用MindStudio对FOMM模型进行onnx模型推理的具体步骤。
  二、MindStudio项目初始化
  1新建项目
  首先在Name一栏输入项目名:
  然后我们需要配置项目的CANN工具包依赖。尤其是我们第一次使用MindStudio的时候,这一步是不可省略的。
  选择CANNVersion一栏后面的Change选项,配置我们项目的CANN工具包依赖。在该界面,首先选择我们的项目开发所使用的服务器,然后选择服务器上CANN工具包的安装路径,最后点击Finish,保存配置。
  MindStudio在创建新项目这一界面为我们提供了一个昇腾APP应用Pyhton框架空工程,这能帮助我们更加方便地管理和开发我们的应用,即下图中的ACLProject(Python),我们选择这一项,点击Finish。
  2下载github源码仓
  进入项目界面后在底部选择终端,执行如下命令:
  gitclonehttps:github。comAliaksandrSiarohinfirstordermodel。git
  等待下载完成
  这里为了方便,我们将下载下来的源码从firstordermodel文件夹中提出来,直接放在FOMM1(我们的项目目录)下,并删除空的firstordermodel文件夹。
  3配置conda环境,安装项目所需依赖
  源码仓的readme建议使用pipinstallrrequirements。txt安装项目所需依赖。
  但由于其依赖版本过低,所以此处不建议直接使用源码仓中的requirements。txt进行安装。具体依赖和版本如下:
  依赖名称
  版本
  cloudpickle
  2。1。0
  cycler
  0。11。0
  dask
  2022。2。0
  decorator
  5。1。1
  imageio
  2。21。0
  imageioffmpeg
  0。4。7
  kiwisolver
  1。4。4
  matplotlib
  3。3。2
  mmcvfull
  1。5。0
  networkx
  2。7。1
  numpy
  1。21。5
  onnx
  1。12。0
  onnxruntime
  1。12。1
  opencvpython
  4。6。0。66
  pandas
  1。3。5
  pillow
  9。2。0
  pycparser
  2。21
  pyparsing
  3。0。9
  python
  3。7
  pytz
  2022。1
  pytorch
  1。11。0
  pywavelets
  1。3。0
  pyyaml
  6。0
  scikitimage
  0。18。0
  scikitlearn
  1。0。2
  scipy
  1。7。3
  six
  1。16。0
  skl2onnx
  1。12
  sympy
  1。10。1
  toolz
  0。12。0
  torchaudio
  0。11。0
  torchvision
  0。12。0
  tqdm
  4。64。0
  其中需要注意的是,scikitimage的版本必须低于0。19。0。
  另外,根据源码仓readme,需要额外从github上下载一些依赖包:
  在我们的项目目录下运行如下命令:
  gitclonehttps:github。com1adrianbfacealignment
  cdfacealignment
  pythonsetup。pyinstall
  cd。。
  gitclonerecursivehttps:github。comAliaksandrSiarohinposeevaluation
  gitclonehttps:github。comfacebookresearchmaskrcnnbenchmark
  cdmaskrcnnbenchmark
  pythonsetup。pyinstall
  4下载数据集
  为了方便下载,这里提供了已经预处理好的taichi数据集(。mp4格式)。
  https:pan。baidu。coms1zSDFYXwrBvCfw2NAIxQAYg
  提取码:mind
  下载整个taichi文件夹,将下载后的taichi文件夹放入FOMM1data。
  三、配置远程服务器
  1添加SSH配置
  点击左上角file,选择setting
  在左侧选择tools,在下拉菜单中选择SSHConfigurations,点击
  在新建的空白配置页面输入服务器ip,用户名,密码;
  勾选savepassword保存密码;
  点击testconnection测试是否能连接服务器;
  最后点击下面的ok配置完成。
  配置好SSH服务器后回到项目界面,点击上方菜单栏中的tools,在下拉菜单中点击startSHHsession,选择刚才配置好的SSH连接,即可成功连接SSH服务器,并弹出远程操作终端:
  2管理CANN工具包
  如果我们在使用过程中需要更换我们所要使用的CANN工具,则可按照以下步骤更换。
  首先,如下图所示,点击MindStudio界面上端的CANNmanager按钮,打开CANN管理界面:
  按下图所示,先在弹出的界面选择changeCANN,然后在新弹出的界面选择我们使用的远程服务器:
  然后如下图所示,选择服务器上CANN工具包安装的目录,我这里是homeinfname46Ascendascendtoolkit5。1。RC2,选择好后点击ok:
  最后点击finish,等待部署完毕即可:
  配置好后,重启MindStudio。
  3部署项目至服务器
  在顶部菜单栏选择Tools,在下拉菜单中选择Deployment,再选择Configuration:
  在弹出的配置页面中,首先点击,输入配置名称,点击OK:
  然后在右侧SSHconfiguration处选择项目部署的服务器,之后同样点击testConnection测试连接是否成功,然后选择Mappings配置项目映射目录:
  在mapping中配置路径映射关系,配置好后点击ok提交:
  最后,完成了服务器的一切配置之后,需要将项目部署到服务器上。在MindStudio项目界面,右键选择我们的项目,选择Deployment,Uploadto,选择目标服务器:
  文件开始上传:
  最后,我们可以通过ToolsDeploymentAutomaticUpload来设置自动部署。设置好自动部署后,每当我们在本地对程序进行修改后,按CtrlS保存,MindStudio便会自动将编辑过的文件自动上传至服务器。
  4配置远程SSH解释器
  该步骤的目的是可以在本地的windows系统上使用MindStudio运行调试在远程服务器上运行的程序。
  首先点击MindStudio右上角的齿轮,在弹出的列表中选择ProjectStructure:
  在弹出的设置界面,选择左侧菜单栏的SDK,点击,选择AddPythonSDK:
  在弹出的界面选择SSHInterpreter;选择项目部署的服务器;选择服务器上所使用的conda虚拟环境的安装路径;最后点击OK保存配置:
  5设置项目的默认python环境
  首先进入projectstructure界面,左侧然后左侧选择project,再project的SDK选项下选择我们要使用的python环境,具体如下图:
  然后再选择projectstructure界面中的modules,在该界面配置modulesSDK,额然后点击ok保存配置即可:
  四、模型转换
  1生成onnx模型
  在项目中创建以下目录:
  checkpoint
  taichionnx
  taichionnxoms
  然后根据作者提供的链接下载所需的。pth。tar格式的模型参数文件,保存在checkpoint文件夹中。
  模型参数文件的链接如下:
  https:drive。google。comopen?id1PyQJmkdCsAkOYwUyajll0asiLDgeH
  编写将。pth。tar格式的checkpoint转化为onnx模型的程序getonnxbs1。py,放在项目根目录下。
  实现思路很简单,用源码仓提供的模型加载函数加载checkpoint模型,然后用torch。onnx。export导出onnx模型。
  代码中用到的util。loadcheckpoints是从项目源码中提取出来的一个函数,其主要内容见下图:
  此外,因为目前onnx对某些pytorch中的算子还不支持,此项目中所涉及到的onnx不支持的算子包括:torch。inverse和torch。nn。functional。gridsample。这两个算子需要我们用onnx支持的算子重新实现。其中inverse算子我们用自己实现的inversewithoutcat。py中的invmat函数代替;gridsample算子用pointgridmy。py中的bilineargridsample函数代替。
  inversewithoutcat。py和pointgridmy。py的具体内容如下:
  编辑好后将这两个程序放在项目目录下。
  导出onnx之前需要对以下python文件进行修改:
  将modulesdensemotion。py中的下图所示位置代码替换为:
  jacobiantorch。matmul(kpsource〔jacobian〕,invmat(kpdriving〔jacobian〕))
  将modulesdensemotion。py中下图所示位置的代码替换为:
  sparsedeformedbilineargridsample(sourcerepeat,sparsemotions)
  将modulesgenerator。py中的下图所示位置的代码替换为:
  returnbilineargridsample(inp,deformation,aligncornersTrue)
  修改完成后,使用onnx模型转换程序导出onnx模型。
  首先我们要在MindStudio上配置getonnxbs1。py的运行环境,点击进入编辑配置界面:
  进入编辑配置界面后,点击,选择AscendApp,首先在界面上方的Name一栏输入程序名称,然后在Deployment一栏选择项目部署的配置,即我们在第三章第3节部署项目至服务器中配置的服务器。
  在Executable处选择getonnxbs1。py:
  然后在Parameters一栏输入如下参数配置:
  configconfigtaichi256。yamlcheckpointcheckpointtaichicpk。pth。taroutdirtaichionnxgennametaichigenbs1kpnametaichikpbs1
  最后点击ok保存程序配置。这样配置好以后就可以实现在本地的MindStudio上调试远程服务器上运行的python程序了。
  点击MindStudio上方工具栏的绿色三角按钮,运行该程序即可导出onnx模型。
  2onnx模型转换成om模型
  首先如下图所示,点击MindStudio界面上端的modelconverter按钮,在弹出的界面中首先选择服务器上onnx模型的位置,然后等待模型加载完毕后,继续在targetsocversion一栏选择自己的昇腾服务器的芯片类型,我这里用的是Ascend310P3,最后选择om模型的输出位置,然后点next即可。
  然后这里直接点next:
  最后第三个页面直接点finish,开始模型转换:
  稍等片刻,模型转换成功:
  五、模型推理
  1配置推理环境
  将aclruntime0。0。1cp37cp37mlinuxx8664。whl下载下来,放在项目目录下,并上传至服务器。
  下载链接:https:pan。baidu。coms1mzZhhPByVcXVeqUk9S9qNQ
  提取码:mind
  下载推理程序包,在本地的终端执行以下命令:
  gitclonehttps:gitee。comascendtools。git
  等待下载完成,然后将下载好的tools包上传至服务器(也可以直接在服务器的终端输入上条命令clone到服务器上)
  然后在远程服务器终端上执行以下命令,安装aclruntime包:
  pipinstallaclruntime0。0。1cp37cp37mlinuxx8664。whl
  (若是在普通用户下执行需要加上user参数)
  2数据预处理
  首先修改configtaichi256。yaml,将其中datasetparams:下的rootdir:修改为datataichi。
  参考FOMM1reconstruction。py,编写数据预处理程序如下:
  然后需要修改run。py。首先将下图中所示的代码修改为:
  parser。addargument(mode,defaulttrain,choices〔train,reconstruction,animate,pre〕)
  然后在run。py的最后添加代码:
  elifopt。modepre:
  print(preprocessing。。。)
  preprocessing(config,generator,kpdetector,opt。checkpoint,logdir,dataset)
  然后修改logger。py中下图所示的那行代码,将其改为:checkpointtorch。load(checkpointpath,maplocationtorch。device(cpu))
  打开RunDebugConfigurations界面:
  配置好run。py的mode为预处理的运行参数和环境:
  点击运行run。py。等待程序执行完毕:
  运行结束后在终端查看预处理后的数据的保存目录,保存结果如下所示:
  3模型推理
  首先是在昇腾服务器上推理om模型:
  这里为了后续使用数据方便一些我们将toolsaisbenchworkloadtoolaisinferaisinfer。py中下图所示位置的代码修改成:
  ifargs。output!None:
  timestrtime。strftime(YmdHMS)
  outputprefixargs。output
  os。mkdir(outputprefix,0o755)
  logger。info(outputpath:{}。format(outputprefix))
  else:
  outputprefixNone
  然后我们需要配置服务器上的环境变量:
  首先在服务器终端执行命令:vim。bashrc
  然后在文件的最后添加如下内容:
  sourceusrlocalAscendascendtoolkitsetenv。sh
  sourceetcprofile
  然后即可开始进行模型推理。首先配置AscendApp程序:
  其中Executable为:项目目录toolsaisbenchworkloadtoolaisinferaisinfer。py
  运行参数为:
  modelhomeltmfommtaichionnxomstaichikpbs1。ominputhomeltmfomminferoutdoutputhomeltmfomminferoutkpdoutfmtNPY
  然后按同样的方式,再配置一个名为inferkps的运行参数为如下内容的AscendApp程序:
  modelhomeltmfommtaichionnxomstaichikpbs1。ominputhomeltmfomminferoutdoutputhomeltmfomminferoutkpdoutfmtNPY
  配置好后点击运行按钮运行程序:
  等待代码运行完毕即可。程序运行完后,下图中所标示的值便是我们测出来的性能指标:
  之后,需要运行apartkpout。py,对推理kp模型输出的数据进行简单处理,以便之后使用。首先配置apartkpout。py的运行环境:
  配置好后运行该程序:
  待程序运行结束,即可开始gen模型的推理,同样先配置AscendApp程序:
  其中Executable为:项目目录toolsaisbenchworkloadtoolaisinferaisinfer。py
  运行参数为:modelhomeltmfommtaichionnxomstaichigenbs1。ominputhomeltmfomminferouts,homeltmfomminferoutkpdv,homeltmfomminferoutkpdj,homeltmfomminferoutkpsv,homeltmfomminferoutkpsjoutputhomeltmfomminferoutoutoutfmtNPY
  配置好后点击运行,等待程序运行结束即可。
  至此,在310P上推理om模型就完成了。接下来要在T4机器上推理模型,由于目前TensorRT不支持FOMM里的用到的很多算子,故此次推理使用线上推理。
  首先要写一个线上推理用的python程序:
  推理程序的实现思路很简单,用python的time包记录模型从输入到输出所花费的平均时间然后把平均时间代到性能的计算公式里即可。这部分功能我写在onlineinfer。py里,其核心代码如下:
  然后修改run。py,首先修改其下图中所示的代码:
  将这句修改为:parser。addargument(mode,defaulttrain,choices〔train,reconstruction,animate,pre,infer,orire〕)
  然后在最后加上如下代码:
  elifopt。modeinfer:
  print(Infer。。。)
  infer(config,generator,kpdetector,opt。checkpoint,logdir,dataset)
  改好后,进入运行配置界面,配置推理程序:
  配置好后运行该程序,等待程序运行结束即可:
  程序运行结果如下:
  4精度测试
  此处需要对源码中的FOMM1reconstruction。py进行较大修改:
  然后配置run。py的mode为reconstruction的运行参数的环境:
  然后点击运行,运行run。py,等待程序运行结束:
  Reconstruction的结果保存在。checkpointreconstruction下:
  然后配置poseevaluationextract。py的两个运行环境,如下所示:
  其中参数为:
  infolder。。datataichitestoutfileoutakdgt。pklisvideotypebodyposeimageshape256,256
  和
  infolder。。checkpointreconstructionpngoutfileoutakdgen。pklisvideotypebodyposeimageshape256,256
  配置好后依次运行两个程序:
  等待程序运行完毕。
  两个程序运行结束后,分别可以得到一个。pkl格式的文件,最后,配置精度计算的程序:
  然后运行该程序,即可得到FOMM模型的精度指标:
  至此,一整个FOMM模型推理过程就结束了
  六、其他问题
  如果在开发过程中遇到其他问题或者是不明白的地方,我们可以登录昇腾官方论坛进行求助。昇腾论坛链接如下:
  https:bbs。huaweicloud。comforumforum9451。html
  在这里,我们可以找到很多经验帖、总结帖,亦可以在昇腾论坛发帖求助技术人员,帮助我们解决问题。
  七、FAQ
  问题一:
  转onnx模型的时候出现ExportingtheoperatorinversetoONNXopsetversion11isnotsupported的报错。
  分析:
  出现这个错误的原因是因为onnx目前还不支持Pytorch的部分算子,比如我在项目中遇到的torch。inverse和torch。nn。functional。gridsample这两个算子,都是onnx现在还不支持的算子,如果模型中有使用到这两个算子的话,则会在转onnx模型的时候报上述的错误。
  解决方法:
  用onnx支持的算子实现onnx不支持的算子的功能,或者寻找替代的算子。
  问题二:
  使用ModelConverter的时候CANNMachine一栏无法更改。
  解决方法:
  ModelConverter界面中的CANNMachine一栏的内容无法在ModelConverter界面修改,想要修改的应该点击CANNManager,在此界面更改项目的CANN工具依赖。

晚餐不知道吃啥?试试我家这荤素3菜,营养好吃不油腻,吃得舒服头条创作挑战赛晚餐不知道吃啥?试试我家这荤素3菜,营养好吃不油腻,吃得舒服人间烟火气,最抚凡人心,普通百姓的一日三餐,虽然简单却都是家的味道,带着烟火气,也最能抚慰……珠海宝龙艺珺酒店获GBE酒店设计大奖日前,第13届GBE奢华酒店与度假村论坛于上海静安洲际酒店隆重举办,GBE酒店设计大奖2022同期揭晓。此次GBE酒店设计大奖2022评选共设最佳酒店设计大奖、最佳城市地标酒店……改革创新拼经济丨实施三帮一机制探索创新引领发展新路子编者按:改革创新,示范引领。近日,河南省发展改革委公布2022年度河南省经济体制改革十大案例,推广机制创新的典型经验。3月22日起,大河网联合河南省发展改革委推出改革创新拼经济……目前这四款手机最吃香,均搭载骁龙8芯片,直降千元,低至229如果您喜欢,可以点击上面的关注二字。后续会为您提供更多有价值的内容。今天分享:目前这四款手机最吃香,均搭载骁龙8芯片,直降千元,低至2295元第一款:联想拯救者Y7……强信心开新局锚定万亿级目标吉林旅游产业跑步提速20日,由吉林省人民政府主办的2023年吉林省春季旅游项目集中开工活动在吉林省各地同时举行。本次集中开工的项目总数达72个,总投资1083亿元。这次活动是吉林省首次在旅游领域的……杜兆才下一盘大棋?国青七将驰援国奥,安东尼奥接替成耀东倒计时亚青赛上被淘汰后,安东尼奥执教的中国国青队表现,获得了各方赞誉。安东尼奥与足协的合同已到期,是否续约还是未知数。今天,足球报报道,国青队有七名队员入选了国奥队,将会驰援国奥,这……郭采洁疑五官再升级网惊越长越奇怪中国台湾女星郭采洁过去以甜美可爱的形象出道,但近年她将事业重心转向中国后,整体形象风格大变,日前她发出在巴黎街头拍摄的照片后,有网友质疑她的五官再升级,甚至直言她越长越奇怪。……新春走基层湖城新事哥,我带你去衡水湖逛逛吧,现在那里弄得可像样了,前段时间还在联合国生物多样性大会上展示了呢。春节假期回老家河北衡水的第二天,表妹要带我去看看家乡的变化。我家在城北,衡水湖……抛弃心理教练的萨巴伦卡首夺澳网冠军,职业生涯奖金总额逼近1亿每经记者:朱鹏每经编辑:董兴生北京时间1月28日傍晚,2023年澳大利亚网球公开赛女单决赛冠军出炉。24岁的白俄罗斯籍球员阿丽娜萨巴伦卡后来居上,以总比分21逆转战胜23……张欣你凭什么就不能被辜负最好的情感就是随缘,都是轻松自然的。如果亲戚朋友到广州来,我肯定是请吃粤菜,大部分人都赞不绝口,但也有人吃不惯。我有一个亲戚从银川过来,我请粤菜还点了龙虾伊面,但他都不怎……老家有种藏在地里的美味雨后随处可见,外地人一般下不去嘴地皮菌,在我的家乡,俗称为雷公屎,看上去暗黑粘稠,不认识的人会觉得很恶心。它在当下这种季节是最容易生长的,就是一种在雨后潮湿的地面上经常会出现的藻类植物。地皮菌从采摘到成……晚旗报独家切尔西将承办乌克兰全明星赛为慈善机构募资根据伦敦晚旗报切尔西方面记者NizaarKinsella的独家报道,切尔西老板托德伯利暂时同意允许乌克兰足球慈善机构在斯坦福桥举办一场美式全明星赛,切尔西的穆德里克和阿森纳的津……
尿结石的发生钙的摄入与草酸的摄入1990年以后的的流行病学数据一致表明高钙饮食能降低肾结石的患病率和发病率。其理论基础可能是高钙饮食可以减少草酸从尿中排泄。目前已知,草酸分子量为90,体内半衰期为0。5h,经……海南将对中小微企业复工复产贷款给予财政贴息为支持中小微企业克服新一轮疫情的影响,根据《海南省稳经济助企纾困发展特别措施(2。0版)》,9月22日,海南省地方金融监督管理局、省财政厅、省工业和信息化厅联合制定并公开了《海……随州月亮湾公园,你期待吗?9月7日笔者来到沿河大道道路(桃园路随县交界处)及沿线生态提升工程月亮湾公园施工现场挖土机、翻斗车拉土填坑推土机、压路机平整场地一片繁……藏传佛教四大神山之一,冈仁波齐有一座号称无人敢攀登的神山,传闻登过这座山的人会加速衰老,并且会在两年内出现意外,这就是被人们视为宇宙中心的冈仁波齐峰。冈仁波齐是藏传佛教四大神山之一,被誉为神山之王,同……一首小诗,很短,却很美头条创作挑战赛一天很短短得来不及拥抱清晨就已经手握黄昏一年很短短得来不及细品初春殷红窦绿就要打点素裹秋霜一生很短短的来不及……手机该不该每天关机一次?长期不关机对手机的影响?涨知识了今天我要跟大家分享的是,我们的手机多久关机一次比较好呢?现在人手一部智能手机,有的朋友认为每晚睡觉前都应该将手机关机,这样既可以省电,又能保护我们的手机,也有的朋友是两三个月都……雀氏帅!阿迪全新黑武士面包鞋未售先火阿迪今年最受欢迎的鞋,当属这双拥有全新造型的Adimatic,因鞋身宽厚,略显肥胖,中底设计伴有鲨鱼齿痕,故称为面包鞋or鲨鱼鞋。设计灵感不必追其根源,并不重要,只需知道……20,热刺创1尴尬记录!3分钟2球被绝杀,2轮输3场,英超被欧冠的比赛可以说是冷门迭出,由于交手的双方都不是来自同一个国家的球队,因此在无法完全摸清对手进攻套路以及球员实力的情况下,翻车的场景也是频频的出现,而本轮欧冠就是再度爆出冷门,……服装设计考研资料加分干货何为功能性设计?近年,功能性日益成为服装设计中的高频词汇。一提到功能,我们可能很自然地就会联想到服装实际的用途。然而大家却往往对服装有什么样的用途,或者如何丰富服装的用途感到不解或迷茫,这变相……戒掉多巴胺,赚钱才是最顶级的自律导语:在玩乐中混日子,是对人生最大的消磨。把赚钱的事当作个人的修行,是我们活在俗世最好的姿态。很多人,总喜欢在工作之余,刷短视频、看小说、打游戏、玩麻将等。但这些短……三星生态互联有多强双11三星品牌好物推荐大家好,我是毒蘑菇。前阵子和大家分享了一篇《Windows手机互联大家用过没?无需特定品牌,堪称多屏协同Lite》的文章,来自微软的手机连接功能,达成最好体验的方式是用三……孩子都是天才第一步是被父母亲毁掉的日夲音乐家铃木镇一说,每个孩子都是天才,都是几亿个精子竞争的胜利者,他组建了一个残疾人音乐团,在世界各地演出,轰动世界。美国心理学家约翰逊。华生说,给我一打健康的孩子,我可以将……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网