根据图像或视频进行人体姿势估计在如健康跟踪、手语识别等实际应用中起着核心作用。由于个体会做出各种各样的姿势,此任务具有极大的挑战性。 谷歌研究人员最近在 CVPR 2020 上发表的一篇论文提出了用于边缘设备上运行的单人人体姿态估计算法BlazePose。 在推断过程中,采用推断身体33个关键点的轻量卷积网络,用编解码器直接推断边框,并在Pixel 2手机上推断速度可达到30fps。BlazePose在中端手机CPU上性能比20核桌面CPU上的OpenPose还要快25-75倍。
最近的研究工作在姿势估计方面有了重大进展。而这些进展大都采用的方法是为每个关节生成热图以及每个坐标精炼偏移量。 虽然这种选择的热图可以扩展到多个人,但它使一个人的模型比适用于手机上的实时推断的模型大得多。而谷歌研究人员在此解决了这个特殊的用例,并演示了该模型的显著加速,而几乎没有质量下降。 与基于热图的技术相比,基于回归的方法虽然对计算的要求较低且可扩展性更高,但它们试图预测平均坐标值,但往往无法解决潜在的歧义。 研究人员在人体姿态估计上和之前的做法有很大的不同。 使用面部检测器而不是人体检测器检测人体。研究人员发现,由于使用身体检测器容易受场景中密集人群遮挡的影响,如果在遮挡严重状态下,身体检测器的信任值不会很高。 但是人的脸部比起全身就不容易被遮挡,而且在神经网络中这一部分的响应值往往是最高的。
接口申请官网地址:www.weilaitec.com
接口地址(例子):
http://a239p06512.zicp.vip/Web/BuAppJava.bujqrex?apikey="+apikey+"&msg="+msg+"&ip="+ip
用户端消息内容。
String msg ="你在干嘛呀?";
apikey参数。这个apikey就是网站上申请的APIKEY
apikey ="";
//客户端ip,最终用户端的唯一标识(可以是用户端的IP,或者手机设备号,或者微信号或者,qq号码等能证明身份的唯一标识就可以)
String ip ="";
//这里一定要encode转换编码。转成GBK。
msg = URLEncoder.encode(msg, "GBK");
三个参数全部小写
msg参数就是传输过去的对话内容。
msg参数要编码成gbk,不然会乱码。
接口具体代码:
package ai.nlp.jiekou.test;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import ai.nlp.util.changliang.ChangLiangZi;
public class ApiTest {
/**
* Get请求,获得返回数据
* @param urlStr
* @return
*/
private static String opUrl(String urlStr)
{
URL url = null;
HttpURLConnection conn = null;
InputStream is = null;
ByteArrayOutputStream baos = null;
try
{
url = new URL(urlStr);
conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(5 * 10000);
conn.setConnectTimeout(5 * 10000);
conn.setRequestMethod("POST");
if (conn.getResponseCode() == 200)
{
is = conn.getInputStream();
baos = new ByteArrayOutputStream();
int len = -1;
byte[] buf = new byte[128];
while ((len = is.read(buf)) != -1)
{
baos.write(buf, 0, len);
}
baos.flush();
String result = baos.toString();
return result;
} else
{
throw new Exception("服务器连接错误!");
}
} catch (Exception e)
{
e.printStackTrace();
} finally
{
try
{
if (is != null)
is.close();
} catch (IOException e)
{
e.printStackTrace();
}
try
{
if (baos != null)
baos.close();
} catch (IOException e)
{
e.printStackTrace();
}
conn.disconnect();
}
return ChangLiangZi.WU;
}
public static void main(String args []){
//三个参数全部小写
//msg参数就是传输过去的对话内容。
//msg参数要编码成gbk,不然会乱码。
String msg ="你在干嘛呀?";
//apikey参数。
String apikey ="UTNJK34THXK010T566ZI39VES50BLRBE8R66H5R3FOAO84J3BV";
//客户端ip,最终用户端的唯一标识(可以是用户端的IP,或者手机设备号,或者微信号或者,qq号码等能证明身份的唯一标识就可以)
String ip ="127.0.0.1";
//这里一定要encode转换编码。转成GBK。
try
{
msg = URLEncoder.encode(msg, "GBK");
} catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
System.out.println(opUrl("http://a239p06512.zicp.vip/Web/BuAppJava.bujqrex?apikey="+apikey+"&msg="+msg+"&ip="+ip));
}
}