您当前的位置:首页 > 起名 > 汉字五行

百度人脸识别年龄(百度人脸识别年龄跨度)

时间:2024-01-22 13:08:24 作者:樱花飘落 来源:网友投稿

本文目录一览:

百度AI寻人:助超1.3万名走失者和家人团聚

走失与寻亲是最为复杂的社会问题之一。传统的寻亲方式从20年前的报案、登报、查询失踪人口档案库、电视寻亲,到这10年的打拐微信群和DNA寻亲。但在寻人的实际工作中,这些方式在某些方面依旧有着很大的局限性。

在全国各地的救助管理站,被救助人员大部分是在外的流浪乞讨人员,由于部分人员认知程度低,通过传统的问询方式不能获取准确的身份信息,而DNA寻亲又受到双方DNA采集困难和时间限制,救助管理机构内滞留了大量无法识别身份信息的人员。在这种情况下,人脸所携带的面部特征信息,为寻亲提供了很大的便利。

随着中国快速步入老龄化社会,阿尔茨海默氏症(俗称老年痴呆症)的发病率逐年上升,老人走失已成为一个越来越严重的社会问题。但这些患病老人常常不能准确表达自己的身份信息和家人的联系方式,人脸识别寻人技术也恰好可以解决这一难题。

而在走失人员中,寻找儿童的难度最大。很多孩子在走失的时候只有几岁,失踪多年后,容貌发生了变化,这给寻人带来了很大的困难。技术则为走失儿童的找回提供了新的可能。

作为一家以技术见长,希望发挥技术的社会价值,助力解决社会问题的企业,百度在2016年底就与民政部、宝贝回家等机构合作,探索通过人脸识别技术,帮助走失人员回家。

“百度AI寻人小程序”

百度“AI寻人”项目利用深度学习技术进行人脸特征的提取,与走失人员数据库中的照片进行实时对比。通过度量学习的方法,在大规模人脸数据训练模型基础上,使用跨年龄数据进行针对性优化。即使走失多年,在跨年龄人脸识别技术的帮助下也有机会实现重聚。截至目前,借助跨年龄人脸识别技术,已帮助超13388个走失者与家人团聚。

2021年已是百度AI寻人技术落地实施的第5年,寻人的成绩,得益于技术的助力,也离不开民政系统、公益组织以及社会热心人士的协助。寻亲成功并不意味着百度工作的结束,未来,百度将进一步发挥技术优势,探索更多AI技术的应用场景,为解决更多社会问题贡献力量。(百度公司供稿,编辑:黎梦竹整理)

来源: 光明网

AI一键换脸!一人千面!这几个软件可以轻松实现!

最近几年AI的快速发展,让很多以前不敢想象的事成为现实,其中AI换脸就是其中一个讨论度很高的技术。

这种技术已经在视频制作、电影制作、广告制作等领域得到了广泛应用。以下是几种常见的AI换脸软件:

智能修复老照片PC

“智能修复老照片”电脑软件是一款非常好用的图像处理软件,其中它的AI换脸软件就很好。它可以将照片中的人脸换成不同的表情、年龄、发型等。使用这款软件非常简单,只需要选择一张照片,然后选择不同的滤镜即可。

百度搜索【智能修复老照片】即可下载~

打开软件,我们选择右边的AI换脸功能,上传所需要处理的图片。

它可以自动识别照片中的人脸,根据不同的滤镜调整人脸的表情和年龄。此外,该软件还提供了一些有趣的功能,比如老照片修复,图片动态展示,证件照制造等等。

Avatarify

Avatarify 是一款基于人工智能技术的面部表情合成工具,可以将您的静态图片或视频中的面部表情和动作,实时地与电影或GIF中的角色进行合成,并输出一个逼真的视频或GIF。

使用 Avatarify,我们可以将自己的脸换成电影或GIF中的角色,也可以将自己的面部表情和动作与角色合成,从而创造出有趣的视频和GIF。此外,Avatarify 还支持多种语言,用户可以根据自己的需要选择适合自己的语言。

FaceSwap

FaceSwap是一款易于使用的AI换脸软件,可以用于将一个人的脸替换为另一个人的脸。它使用深度学习技术来进行面部特征匹配和转移。FaceSwap具有友好的用户界面和简单的操作流程,适合初学者使用。

好啦,以上就是今天分享的全部内容了,最后,如果你觉得内容对你有所帮助的话,就点个赞支持一下啦!

百度人脸识别_获取摄像头视频流图片_进行识别_或远程同步后识别

1.基于上一节,我们已经把百度云上的人脸库,建好了,然后我们可以从,百度云官网拿到,

离线人脸识别的SDK.

SDK下载_文字识别SDK_语音识别SDK-百度AI开放平台 这里可以点进去下载

2.然后我们就可以基于给的官网示例去,进行人脸识别了.

人脸识别有两种方式:

第一种:基于示例代码,获取摄像头的,视频流中的图片,然后,把图片发送给百度云人脸识别API,

利用人脸搜索的API,来进行,在人脸库中搜索该人脸,如果搜索到了,并且人脸分值符合

标准,就认为找到该人脸了.这种方式只利用百度云人脸识别的在线API就可以实现.

a.这种方式,首先获取摄像头视频流中的图片是在:

这里加上这句,就可以获取到视频流中的图片,然后把图片,可以再调用下面的featureSearch方法的时候把,bitmap传递进去.

然后在featureSearch方法中,根据:

featureCheckMode自己写个分支.

然后,可以根据传过来的图片,把图片传递给百度云的,在线人脸库搜索的API,根据API返回的搜索到的user_id

然后去自己的数据库中查询这个用户,根据用户信息,如果能查到,说明人脸登录成功.

第二种:基于示例代码,每次识别人脸之前,先去,百度云人脸库,把人脸库图片,同步到本地的,平板

电脑上,然后再利用百度人脸识别,离线SDK去识别人脸.这种方式是利用百度云离线SDK+

百度云在线API实现的.这种方式是,在打开,人脸识别摄像头页面之前,先去同步一下百度云的人脸库,到

本地.也就是在调用下面的代码,之前,先去请求一下,百度人脸库的获取API,获取人脸到本地库中.

下面是同步人脸库的做法,之前人脸库,我们是自己做了一个人脸库,在本地做的,请求的是我们自己的服务器,人脸入库,sdk,中本来就有

对应的代码,可以去看一下:实现就可以

参考代码:

//4.同步人脸库操作 private void faceAsyncLogin() {// Toast.makeText(HomeActivity.this, "本机人脸数据开始同步",// Toast.LENGTH_SHORT)(); //人脸数据正在加载。。。。。。 //ToastUtils.toast(HomeActivity.this, "正在加载人脸,请稍等..."); //1.这里去同步照片到人脸库 //String faceUrl="http://172.19.128.73:8060/api/faceDevice/listByIp"; String server_ip = GetConfigValue.getConfigProperties("server_ip"); //String faceUrl="http://172.19.128.64:8061/api/faceDevice/listByIp"; String faceUrl= server_ip +"/api/faceDevice/listByIp"; OkHttpClient faceHttpClient = new OkHttpClient(); Request faceRequest = new Request.Builder() .get() .url(faceUrl) .build(); //构造Call对象 Call faceCall=faceHttpClient.newCall(faceRequest); faceCall.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { ToastUtils.toast(HomeActivity.this, "网络连通失败"); ToastUtils.toast(HomeActivity.this, "人脸加载失败,请稍后再试"); } @Override public void onResponse(Call call, okhttp3.Response response) throws IOException { //1.将base64,转换为图片 try { reentrantLock.lock(); String jsonStr =response.body().string(); respFaceArray=null; //清空一下 JSONObject jsonObj=new JSONObject(jsonStr); respFaceArray =jsonObj.getJSONArray("data"); linkedQueue.enQueue(respFaceArray); uiHandler.sendEmptyMessage(141); response.body().close(); reentrantLock.unlock(); } catch (JSONException e) { ToastUtils.toast(HomeActivity.this, "服务器异常"); ToastUtils.toast(HomeActivity.this, "人脸加载失败,请稍后再试"); e.printStackTrace(); response.body().close(); } } }); }

public Handler uiHandler = new Handler() { public void handleMessage(Message msg) { if (msg.what == 110) { //同步登陆二维码// ImageView codeView = (ImageView)findViewById(R.iddebutton);// codeView.setImageBitmap(qrCode);// ToastUtils.toast(HomeActivity.this, "登录二维码获取成功"); }else if(msg.what==115){//同步用户信息 Log.e("ets","ssss"); }else if (msg.what==131){ reentrantLock.lock(); //改成使用linkedqueue自定义的queue来操作 while (linkedQueue.isQueueEmpty() == false){ JSONArray jsonArray = (JSONArray) linkedQueue.deQueue(); faceServerHttp(jsonArray); } reentrantLock.unlock(); } else if (msg.what==141){ reentrantLock.lock(); //改成使用linkedqueue自定义的queue来操作 while (linkedQueue.isQueueEmpty() == false){ JSONArray jsonArray = (JSONArray) linkedQueue.deQueue(); //if(jsonArray!=null && jsonArray.length()>0){ faceServerHttpLogin(jsonArray);// }else{// //ToastUtils.toast(HomeActivity.this,"人脸加载成功!");// ToastUtils.toast(HomeActivity.this, "人脸加载中,请稍等...");// Timer timer = new Timer();// TimerTask timerTask = new TimerTask() {// @Override// public void run() {// ToastUtils.toast(HomeActivity.this, "人脸数据加载成功");// uiHandler.sendEmptyMessage(151);// }// };// timerhedule(timerTask,4000);// } } reentrantLock.unlock(); } else if (msg.what==151){ //timer人脸同步定时器 Timer faceTimer = new Timer(); TimerTask timerTask = new TimerTask() { @Override public void run() { mLiveType = com.baidu.idl.main.facesdk.model.SingleBaseConfig.getBaseConfig().getType(); judgeLiveType(mLiveType, FaceRGBGateActivity.class, FaceNIRGateActivriy.class, FaceDepthGateActivity.class, FaceRgbNirDepthGataActivity.class); } }; faceTimerhedule(timerTask,2300); } else { ToastUtils.toast(HomeActivity.this, "下载文件失败,请检查网络连接");// Toast.makeText(HomeActivity.this, "下载文件失败,请检查网络连接",// Toast.LENGTH_SHORT)(); } } };

private synchronized void faceServerHttpLogin(JSONArray respFaceArray) { //同步人脸数据 mFinishCount = 0; // 已完成的图片数量 mSuccessCount = 0; // 已导入成功的图片数量 mFailCount = 0; // 已导入失败的图片数量 try { boolean success = false; // 判断成功状态 List<String> faceIds =new ArrayList<String>(); //System.out.println("人脸库同步中,请稍等"); //ToastUtils.toast(HomeActivity.this, "人脸库同步中,请稍等"); for (int i = 0; i < respFaceArray.length(); i++) { JSONObject faceJson = respFaceArray.getJSONObject(i); //1.去判断人脸库中是否已经有该人脸 String faceDataStr = faceJson.getString("faceImage"); Log.e("TAG01","人脸照片---001:"+faceDataStr); //2.开始获取照片 if (StringUtils.isNotNUll(faceDataStr) && StringUtils.isNotEmpty(faceDataStr)) { //1.获取要导入的人脸照片 Bitmap faceImg = ImageUtils.stringToBitmap(faceDataStr); //这个默认就是JPG的图片,不用检测 //2.获取要导入照片的ID int faceId = faceJson.getInt("faceId"); final int userId = faceJson.getInt("userId"); //Log.e("TAG01","人脸ID:"+faceId); //Log.e("TAG01","用户ID:"+userId); //3.获取用户的年龄 int age =faceJson.getInt("age"); //Log.e("TAG01","用户年龄:"+age); //4.获取用户的生日 String birthday = faceJson.getString("birthday"); //Log.e("TAG01","用户生日:"+birthday); //5.获取身高 int height = faceJson.getInt("height"); //Log.e("TAG01","用户身高:"+height); //6.获取性别 String = faceJson.getString(""); //Log.e("TAG01","用户性别:"+); String faceName = faceJson.getString("userName"); //7.用户信息绑定字符串 String bind_user_str = ""; //bind_user_str = "{" + "faceId"+ ":" +faceId+","+ "userId"+ ":" +userId+","+"age"+":"+age+","+"birthday"+":"+birthday+","+"height"+":"+height+","+""+":"++","+"userName"+":"+faceName+"}"; bind_user_str = "{" + "faceId"+ ":" +"\""+faceId+"\""+","+ "userId"+ ":" +"\""+userId+"\""+","+"age"+":"+"\""+age+"\""+","+"birthday"+":"+"\""+birthday+"\""+","+"height"+":"+"\""+height+"\""+","+""+":"+"\""++"\""+","+"userName"+":"+"\""+faceName+"\""+"}"; Log.e("TAG01","用户内容:"+bind_user_str); //faceName="张三" + i ; //------暂时没有传入faceName写入临时名字 //3.根据人脸ID,查询数据库与文件中对应的姓名是否相等,如果相等,则直接过滤 //User user = FaceApi.getInstance().getUserListById(faceId); List<User> users = FaceApi.getInstance().getAllUserList(); User user = null; //从已经存储的用户列表中去查询该用户是否已经入库 try{ if(users!=null){ for (User curUser : users) { Log.e("TAG--",""+curUser.getUserId()); if(curUser.getUserId().equals(String.valueOf(faceId))){ user =curUser; break; } } } }catch (Exception e){ e.printStackTrace(); } if (user != null) { //4.该人脸已经存在不需要进行同步了 Log.e("TAG01","该人脸已经存在了---》:"+faceId+"_Ok"); faceIds.add(faceId+"_Ok"); continue; } else { Log.e("TAG01","人脸入库开始---》"); //5.去把该人脸入库 if (faceImg == null) { //6.不是一张bitmap图片,过滤 faceIds.add(faceId+"_Fail"); //ToastUtils.toast(HomeActivity.this, "不是合法的图片"); continue; } //6.图片缩放 if (faceImg.getWidth() * faceImg.getHeight() > 3000 * 2000) { if (faceImg.getWidth() > faceImg.getHeight()) { float scale = 1 / (faceImg.getWidth() * 1.0f / 1000.0f); faceImg = BitmapUtilsale(faceImg, scale); } else { float scale = 1 / (faceImg.getHeight() * 1.0f / 1000.0f); faceImg = BitmapUtilsale(faceImg, scale); } } //7.走人脸SDK接口,通过人脸检测、特征提取拿到人脸特征值 byte[] bytes = new byte[512]; ImportFeatureResult result; //8.走人脸SDK接口,通过人脸检测、特征提取拿到人脸特征值 result = FaceApi.getInstance().getFeature(faceImg, bytes, BDFaceSDKCommon.FeatureType.BDFACE_FEATURE_TYPE_LIVE_PHOTO); Log.e("HomeActivity", "-------------------------------::::::::HttpServerHttpServer" + result.getResult()); System.out.println("-------------------------------:::::::HttpServerHttpServer:" + result.getResult()); while (result.getResult() == -11){ //System.out.println("百度人脸API"); //Log.e("HomeActivity", faceName + ":百度人脸API加载中"); Log.e("TAG01","百度人脸API加载中---》"); } //9.判断是否提取成功:128为成功,-1为参数为空,-2表示未检测到人脸 if (result.getResult() == -1) { Log.e("HomeActivity", faceName + ":bitmap参数为空"); System.out.println("bitmap参数为空------01");// Toast.makeText(HomeActivity.this, faceId+"-->"+faceName+" bitmap人脸图片参数为空",// Toast.LENGTH_SHORT)(); //ToastUtils.toast(HomeActivity.this, faceId+"-->"+faceName+" bitmap人脸图片参数为空"); } else if (result.getResult() == -2) { Log.e("HomeActivity", faceName + ":未检测到人脸"); System.out.println("未检测到人脸------02");// Toast.makeText(HomeActivity.this, faceId+"-->"+faceName+" 未检测到人脸",// Toast.LENGTH_SHORT)(); //ToastUtils.toast(HomeActivity.this, faceId+"-->"+faceName+" 未检测到人脸"); } else if (result.getResult() == -3) { Log.e("HomeActivity", faceName + ":抠图失败"); System.out.println("抠图失败------03");// Toast.makeText(HomeActivity.this, faceId+"-->"+faceName+" 人脸抠图失败",// Toast.LENGTH_SHORT)(); //ToastUtils.toast(HomeActivity.this, faceId+"-->"+faceName+" 人脸抠图失败"); }else if(result.getResult() == -11){ }else if (result.getResult() == 128) { //10.图片特征提取成功,存入数据库 // 将用户信息保存到数据库中 Log.e("TAG01","保存人脸中---》"); boolean importDBSuccess = FaceApi.getInstance().registerUserIntoDBSelf(null,String.valueOf(faceId), faceName, faceName, bind_user_str, bytes); //System.out.println("------04:" + importDBSuccess); //11.保存数据库成功 if (importDBSuccess) { //12.保存图片到新目录中 File facePicDir = FileUtils.getBatchImportSuccessDirectory(); if (facePicDir != null) { File savePicPath = new File(facePicDir, faceName); if (FileUtils.saveBitmap(savePicPath, result.getBitmap())) { Log.i("HomeActivity", "图片保存成功"); System.out.println("图片保存成功------05:");// Toast.makeText(HomeActivity.this, faceId+"-->"+faceName+" 人脸图片保存失败",// Toast.LENGTH_SHORT)(); success = true; } else { System.out.println("图片保存失败------06:"); Log.i("HomeActivity", "图片保存失败");// Toast.makeText(HomeActivity.this, faceId+"-->"+faceName+" 人脸图片保存失败",// Toast.LENGTH_SHORT)(); //ToastUtils.toast(HomeActivity.this, faceId+"-->"+faceName+" 人脸图片保存失败"); } } } else { Log.e("HomeActivity", faceName + ":保存到数据库失败"); System.out.println("保存到数据库失败------07:");// Toast.makeText(HomeActivity.this, faceId+"-->"+faceName+" 保存到数据库失败",// Toast.LENGTH_SHORT)(); //ToastUtils.toast(HomeActivity.this, faceId+"-->"+faceName+" 保存到数据库失败"); } }else { Log.e("HomeActivity", faceName + ":未检测到人脸"); System.out.println(faceName + ":未检测到人脸----08");// Toast.makeText(HomeActivity.this, faceId+"-->"+faceName+" 未检测到人脸",// Toast.LENGTH_SHORT)(); //ToastUtils.toast(HomeActivity.this, faceId+"-->"+faceName+" 未检测到人脸"); } //12.图片回收 if (!faceImg.isRecycled()) { faceImg.recycle(); } //13.判断成功与否 if (success) { mSuccessCount++; //15.数据保存成功以后,这里告诉服务器已经同步好了图片----- faceIds.add(faceId+"_Ok"); Log.e("TAG01","人脸保存成功---》"+faceId+"_Ok"); } else { mFailCount++; //16.人脸没有入库成功,那么这里需要----- faceIds.add(faceId+"_Fail"); System.out.println(faceName + ":失败图片----09"); Log.e("HomeActivity", "失败图片:" + faceName); Log.e("TAG01","人脸保存失败---》");// Toast.makeText(HomeActivity.this, faceId+"-->"+faceName+" 同步失败",// Toast.LENGTH_SHORT)(); //ToastUtils.toast(HomeActivity.this, faceId+"-->"+faceName+" 同步失败"); } //14.已经处理了多少张人脸了,做个统计 mFinishCount++; } } } //这里for循环结束,执行完以后,图片导入完成 //17.for循环完成所有人脸的导入,获取导入成功人脸的IDS StringBuilder idsStr = new StringBuilder(); if(faceIds.size()>0){ for (String faceId : faceIds) { idsStrend(faceId)end(","); } if(idsStr.charAt(idsStr.length()-1) ==','){ idsStr.deleteCharAt(idsStr.length()-1); } //18.发送入库成功人脸Id,给服务器 Log.e("TAG01","人脸保存情况---idsStr》"+idsStr); sendSuccessFaceIdsLogin(idsStr); }else{// Toast.makeText(HomeActivity.this, "人脸数据,未同步成功或不需要同步",// Toast.LENGTH_SHORT)(); ToastUtils.toast(HomeActivity.this, "人脸加载中,请稍等...."); Timer timer = new Timer(); TimerTask timerTask = new TimerTask() { @Override public void run() { uiHandler.sendEmptyMessage(151); ToastUtils.toast(HomeActivity.this, "人脸数据加载成功"); } }; timerhedule(timerTask,2000); //ToastUtils.toast(HomeActivity.this, "人脸数据加载完成"); //ToastUtils.toast(HomeActivity.this, "本次没有同步成功的人脸或不需要同步"); //服务器发送过来的信息是空的时候会显示这个提升------ //System.out.println("本次没有同步成功的人脸或不需要同步"); } //ToastUtils.toast(HomeActivity.this, "人脸同步完成"); //初始化人脸库成功. } catch (JSONException e) { e.printStackTrace(); } catch (Exception e){ //HttpServer ---人脸同步出错了.. //Log.e("onResponse","1233"); //ToastUtils.toast(HomeActivity.this, "人脸数据同步异常"); e.printStackTrace(); throw e; } }

热门推荐