百度ai人脸识别颜值在线(百度ai人脸识别颜值)
百度人脸识别_获取摄像头视频流图片_进行识别_或远程同步后识别
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; } }
下个软件测颜值?小心有人在盯着你的人脸信息
来源:检察日报正义网
某网络科技有限公司软件开发人员李某制作了一款可以窃取安装者手机内的照片的软件,在暗网某论坛售卖。此后,为炫耀技术、满足虚荣心,李某又将其伪装成“颜值检测”软件,以此窃取安装者手机相册照片1751张……2022年12月7日,最高检发布检察机关依法惩治侵犯公民个人信息犯罪典型案例,其中就包括这起“李某侵犯公民个人信息案”。
2020年6月至9月,某网络科技有限公司软件开发人员李某制作了一款可以窃取安装者手机内的照片的软件。当手机用户下载安装该软件打开使用时,软件就会自动获取手机相册的照片并且上传到李某搭建的服务器后台。李某将该软件发布在暗网某论坛售卖,截至2021年2月9日,共卖得网站虚拟币30$,但李某并没有停止窃取。作为软件开发人员,想要炫耀技术、满足虚荣心的李某又将该软件伪装成“颜值检测”软件,发布在某论坛供网友免费下载安装,以此方式窃取安装者手机相册照片1751张。其中,含有人脸信息、姓名、身份证号码、联系方式、家庭住址等100余条公民个人信息。
2020年9月,李某又用虚拟币在该暗网的论坛购买“社工库资料”并转存于网盘。2021年2月,李某为炫耀自己的能力,明知“社工库资料”含有户籍信息、车主信息等,仍将网盘链接有150名成员的“业主交流”QQ群。据调查,去除无效数据、合并去重后,该“社工库资料”包含公民个人信息共计8100余万条。
2021年3月9日,公安机关将李某抓获。经侦查,因“社工库资料”内容庞大且存储于境外网盘,未查到有人下载使用。
2021年8月23日,上海市奉贤区法院依法公开审理。庭审中,辩护人提出,一是本案未对涉案8100余万条信息的真实性核实确认,数量认定依据不足。二是被告人到案后如实供述自己利用黑客软件窃取照片的事实,还主动交代公安机关未掌握的在暗网非法购买公民个人信息并分享至QQ群的事实,对于该事实应当认定为自首。
公诉人在庭审中指控犯罪
办案检察官认为,司法鉴定机构去除无效信息,合并去重进行鉴定,鉴定出有效个人信息8100余万条,信息数量客观、真实,符合《最高人民法院、最高人民检察院关于办理侵犯公民个人信息刑事案件适用法律若干问题的解释》规定的对批量公民个人信息具体数量的认定规则,且公安机关抽样验证,随机抽取部分个人信息进行核实,能够确认涉案个人信息的真实性。并且,公安机关抓获李某前已掌握其在暗网非法购买公民个人信息并QQ群的事实,与其利用黑客软件窃取照片的行为属同种罪行,依法不能认定为自首。
最终,奉贤区法院经审理,以侵犯公民个人信息罪判处李某有期徒刑三年,缓刑三年,并处罚金。
侵犯公民个人信息犯罪中,涉案信息动辄上万乃至数十万条,在海量信息状态下,对信息逐一核实在客观上较难实现。所以,实践中允许适用推定规则。对信息的真实性,可以采取抽样方式进行验证。在本案办理过程中,对批量公民个人信息的条数,根据查获的数量直接认定,但是有证据证明信息不真实或者重复的除外。
检察官提醒,人脸信息是具有不可更改性和唯一性的生物识别信息。人脸识别技术给生活带来便利的同时,也容易被犯罪分子窃取利用或者制作合成。生活中,要谨慎下载使用“颜值检测”等“趣味”软件,防范个人信息泄露,造成合法权益受损。
百度AI寻人:助超1.3万名走失者和家人团聚
走失与寻亲是最为复杂的社会问题之一。传统的寻亲方式从20年前的报案、登报、查询失踪人口档案库、电视寻亲,到这10年的打拐微信群和DNA寻亲。但在寻人的实际工作中,这些方式在某些方面依旧有着很大的局限性。
在全国各地的救助管理站,被救助人员大部分是在外的流浪乞讨人员,由于部分人员认知程度低,通过传统的问询方式不能获取准确的身份信息,而DNA寻亲又受到双方DNA采集困难和时间限制,救助管理机构内滞留了大量无法识别身份信息的人员。在这种情况下,人脸所携带的面部特征信息,为寻亲提供了很大的便利。
随着中国快速步入老龄化社会,阿尔茨海默氏症(俗称老年痴呆症)的发病率逐年上升,老人走失已成为一个越来越严重的社会问题。但这些患病老人常常不能准确表达自己的身份信息和家人的联系方式,人脸识别寻人技术也恰好可以解决这一难题。
而在走失人员中,寻找儿童的难度最大。很多孩子在走失的时候只有几岁,失踪多年后,容貌发生了变化,这给寻人带来了很大的困难。技术则为走失儿童的找回提供了新的可能。
作为一家以技术见长,希望发挥技术的社会价值,助力解决社会问题的企业,百度在2016年底就与民政部、宝贝回家等机构合作,探索通过人脸识别技术,帮助走失人员回家。
“百度AI寻人小程序”
百度“AI寻人”项目利用深度学习技术进行人脸特征的提取,与走失人员数据库中的照片进行实时对比。通过度量学习的方法,在大规模人脸数据训练模型基础上,使用跨年龄数据进行针对性优化。即使走失多年,在跨年龄人脸识别技术的帮助下也有机会实现重聚。截至目前,借助跨年龄人脸识别技术,已帮助超13388个走失者与家人团聚。
2021年已是百度AI寻人技术落地实施的第5年,寻人的成绩,得益于技术的助力,也离不开民政系统、公益组织以及社会热心人士的协助。寻亲成功并不意味着百度工作的结束,未来,百度将进一步发挥技术优势,探索更多AI技术的应用场景,为解决更多社会问题贡献力量。(百度公司供稿,编辑:黎梦竹整理)
来源: 光明网
李彦宏:百度AI寻人用一张照片连接家和希望
近年,《找到你》《亲爱的》《失孤》等以打拐或寻亲为题材的电影陆续上映,影片背后的真实新闻也持续引发了社会对打拐、寻亲等话题的关注。在民政部、宝贝回家等政府机构、公益组织的大力支持下,越来越多的志愿者加入到“助人寻亲”的行列,一个又一个好消息通过新闻被人们所津津乐道。
但受时间、物理距离、信息不对称等现实问题所限,“寻亲”仍旧难度极大。如何解决这些难题?答案或许是——技术——2017年,一张照片帮一个家庭找回了丢失27年的孩子,在其为广大寻亲家庭点亮希望的同时,也开启了“AI人脸识别寻人”的新技术时代。
事件的主人公叫付贵,1984年出生在重庆,6岁时不慎在当地走失,后被拐到福建。在付贵走失后,寻找付贵是父亲和家人从未间断的事情,但这一找就是27年。由于被拐时年纪尚小,付贵已经不记得自己的真名和家乡,这给双方的信息比对带来很大困难。直到2017年3月,百度与民间寻亲组织“宝贝回家”进行合作,运用AI人脸识别技术寻找走失者。宝贝回家的寻亲图片数据接入百度跨年龄人脸识别系统进行对比评测,通过对孩子与父母上传的照片做比对,初步筛选出部分案例,付贵就在其中。随后,通过付贵及双亲的DNA比对确认,双方终于在失散了27年后重新团圆。
(付贵在病床上与家人视频)
其实,除了付贵这样“被拐”人员以外,还有很多因为疾病或精神异常而走失的人。2016年8月,一位名叫张军宏的重度精神障碍患者与家人走失,后辗转来到了北京昌平中西医结合医院救助站。由于说不出自己的姓名、住址等重要信息,工作人员一直无法联络到他的家人,于是工作人员按照流程拍下这位走失者的照片并上传寻人系统,被动等待着家人的消息。而另一头,年迈的父母也在四处寻找儿子。八个月之后,终于在志愿者的提醒和帮助下将儿子仅有的身份证照片上传到百度AI寻人平台。此时,百度AI寻人平台对接了民政部各地救助站的在站人员数据,经过与系统中已有照片的人脸比对,张军宏父母在8个疑似结果中很快认出了自己的孩子。
(走失人员与父母团聚)
这种借助AI成功寻亲的情况并非个例。过去一段时间里,随着百度与民政部的深入合作,在AI技术的支持下,越来越多的长期滞留者实现了与家人团聚。今年年初,百度APP也推出“AI寻人智能小程序”,通过手机就可以上传照片,更方便地实现人脸识别比对。
在7月3日举办的“Baidu Create 2019”百度 AI开发者大会上,百度创始人李彦宏公布了百度AI寻人的新进展:从百度AI寻人启动至今,用户发起的照片比对已经超过20万次,帮助超过6700个家庭重新团聚。目前,百度AI寻人已经接入民政部救助管理体系,将覆盖全国1600家救助站,未来还将接入公安部儿童失踪信息紧急发布平台等更多机构。
正如李彦宏所说:“科技为更好!这是科技存在的意义,也是每一个百度人不分昼夜、努力创新所追寻的意义。”只有利用技术优势资源不断解决社会难题,才能真正让民众享受到科技发展带来的福祉。希望在不久的将来,越来越多的家庭能借助AI的力量重新团圆,越来越多的社会难题能借助技术的创新逐渐解决。
来源:中国网
傲慢还是偏见,AI正在左右着你的审美观?
图片来源@视觉中国
文 | 智能相对论,作者 | 易敏
前几天在抖音上刷到一则视频,一位家长用抖音上的特效给自己的小孩测年龄和颜值测分,结果仅仅3岁的女儿年龄显示32岁,颜值83分。而百度AI体验中心小程序中的人脸与人体识别也出现了类似的情况,有人上传了一张女性的照片,结果被AI告知性别为男性。我自己上传了一张彭于晏的照片,发现颜值评分仅仅只有55分。
问题到底出在哪?
识别人物为彭于晏的照片
AI审美开始对娱乐圈评头论足人们对颜值的美丑并没有统一的标准。西方人眼中的审美就跟东方人的审美大不相同,在传统审美中,中国人将美女清一色的归纳为大眼睛,高鼻梁,白皙的皮肤等,而西方人更喜欢小麦色的皮肤,对于他们来说小眼睛单眼皮的女性更有吸引力。而就算在国内对于每个人来说审美的眼光也是各不一样。但是AI审美的来临就正在影响着我们的个性化审美。
比如在娱乐圈。我们知道颜值一直是女明星的第一道槛,而现在AI正在对我们每个人的颜值进行重新定义。而且AI颜值打分这项技术最先应用于娱乐圈的女明星。
今年腾讯出品的一档选秀节目《创造101》火爆了整个夏天,网易借助百度AI开放平台提供的API接口作为人脸分析工具,对《创造101》进行了一次数字化解读。为了保证人脸数据的清晰易用,并最大程度降低无关因素的干扰,他们在《创造101》的官方点赞通道上获取了101张公开的选手头像图片,并以姓名标注。
在这个人工智能打分榜单中,其中得分最低的是杨芸晴,得分最高的是陈意涵,而在颜值前11名和后11名的排行中,22强的选手更多来自于后者。有网友大呼:人工智能和真人审美不一样。还有网友表示:确实有些道理。
不仅仅是针对刚出道的女团AI颜值打分,AI打分已经渗透到了大半个娱乐圈,据博客园报道,百度AI评分的排行榜前99名,而排在第一的则是范冰冰,而前十名中的赵丽颖、杨颖、杨幂等都属于人气处于上升期的当红小花旦。对此人们表示怀疑,AI的颜值打分是否与人气相关。而且AI的颜值打分进入到娱乐圈,或多或少的都会对明星的人气产生一定的影响。
曾经的一些影片中演员们都以纯天然的样貌出现,后来随着人们将目光聚焦到娱乐圈,娱乐圈的明星就特别在意大众的审美观。于是一阵韩流和欧式双眼皮的风潮兴起,荧幕中的整容脸越来越多。现在AI是否会统治我们的审美观我们不得而知,但是当它成为一个审美标准的时候,对娱乐圈的女明星们冲击应该是最大的。
除了颜值审美,AI还在入侵我们的穿着打扮当时尚业在紧紧拥抱AI时,你的穿衣打扮也正在被AI定义。今年6月,亚马逊在美国发行了定位为“个人专属造型师”的echo look,号称能根据时尚专家的意见结合深度算法计算帮人们挑选更美的穿搭,并且会基于你的穿搭给出评分。
尽管亚马逊的“个人专属造型师”并不会左右你穿衣的风格,但他确实一定程度上会让你去选择他们为你挑选的衣服。
而在国内,阿里巴巴也推出了Fashion AI时尚大脑,这款产品是利用人工智能技术以商家数十亿的照片为基础,依赖于服装专家提供的数据以及淘宝达人提供的数据,给买家提供一系列搭配方案。
不过,对于穿衣打扮的时尚品味如何评判也许我们并不能交给AI。
美术史学家昆廷·贝尔认为,时尚之于社会学家,好比果蝇之于生物学家,用任何统一的标准来评判一个人的穿搭都有失偏颇。
时尚拥有着最敏锐的嗅觉,与其他行业不同,它有时候需要反其道而行之才能引领时尚潮流。Chane的祖师奶奶Coco Chane小姐是第一个给黑色赋予灵魂的人,并且给黑色在时尚界鉴定了永恒的基调,Coco Chane小姐曾说:“在我之前,没有女人敢穿黑色!”1926年Chanel最为经典的小黑裙横空出世,简单优雅的极简线条迅速风靡了当时的时尚圈,所有女性都为之倾倒。而在此之前,黑色一直是参加葬礼才会穿的颜色,而且只有在庄重场合贵妇们才会选择黑色。
而提到玛丽莲·梦露所有人想起的就是那个被风吹起来用手捂住裙子的性感女郎。梦露引领了小白裙和高跟鞋的时尚潮流,她也同时引领了牛仔裤的时尚潮流。牛仔裤的历史非常遥远,但是在她之前牛仔裤象征自由、个性,却难登大雅之堂,而梦露不仅在电影《乱点鸳鸯谱》流露出她对牛仔裤的喜欢,更是在各种公众场合穿牛仔裤,后来GUESS推出一款“梦露式”牛仔裤瞬间销售一空。
这两位历史上的时尚教主正因为其大胆的想法风靡了时尚界,如果依赖于AI给我们订制的穿衣搭配,我们就可能丧失创造美的能力。智能相对论易敏认为:这些商家推出的AI穿搭,私人定制,更像一场营销手段。对于电商平台来说也许他们并不是那么关心你们的穿搭时尚度,而是更关心你们的钱包。
AI所定义的审美,更像是一个带有肤色歧视的直男审美如果没有AI,也许我们心中的美带有着不同的定义。但是依赖于数据的AI仅仅只是一个冰冷的机器,它并不明白各种美的涵义。据封面新闻报道,在2016年由微软和英伟达支持的青年实验室(Youth Laboratories),一群俄罗斯和香港的青年进行了一次全球第一届AI选美比赛Beauty.AI 2.0,这场AI比赛全球一共有119个国家和地区6000多人参加。
AI比赛分别从面部皱纹、脸部对称、识别年龄、粉丝和色素检测分别对参赛者进行考核。而结果出来之后,在18—29岁的男性组中,五位优胜者中没有一位是黄种人。尽管同一年龄组的女性有一位黄种人,但是最后脱颖而出的44位选美冠军,黄色人种和黑色人种分别只有6名和1名,而剩下的37名胜出者都是白色人种。
这场AI审美比赛他们都没有化妆,也没有过多的装饰品,但是看起来干净无污染的AI审美竟然存在肤色歧视。对此青年实验室总监也认为,很多具有吸引力的入围者最终都被AI pass掉了。
除了肤色引发的争议,审美标签所带来的争议在AI上也体现得淋漓尽致。
澎湃新闻曾报道一则交大教授武筱林团队训练机器识别美女的新闻,其中人工智能可以成功鉴别“清纯”美女和“妖艳”美女,而它的审美与中国高校男生高度一致。这个研究中对于样貌而给美女贴上褒义还是贬义的思考一度成为研究的重点。研究团队首先进行了半自动化的样本采集。他们在百度图片上用“单纯美女”、“甜美少女”等关键词检索,并把照片分为S+和S-两组。
S+包含带有以下标签的美女照片:清纯、柔美、甜美、单纯 、大方。
S-则包含以下标签:娇艳、俗气、张扬、风骚、轻浮、妩媚、张扬。
中国男性研究生对分别带有褒义和贬义的这两组5图片又进行了一次人工排查,去掉一些错误搜索结果,最后一共得到褒义组2000张,贬义组1954张。在实验中他们用数据集中的80%进行训练,10%用于验证,剩余10%进行测试。最后结果表明经过训练的机器鉴别“褒义组”和“贬义组”的准确率达到了80%。
从这个研究中看出当机器学习人类的情感之后,对于审美它们也会依赖于人的认同而认同。当一个女性化了浓妆去进行面部识别,AI很有可能会给你贴上轻浮、妖艳的标签。而如果是一个看上去柔弱的女性去进行AI审美,它则有可能被归为善良、单纯的一类。
识别人物为杨芸晴的照片
除了这些之外,男女所带来的审美差异,AI也更偏向直男审美。上一段提到的网易给《101创造》的AI测试打分中,陈意涵排名第一,在这个数据中很明显陈意涵的长相也更符合直男审美,她是长发微卷、笑起来很甜、月亮眼看上去属于清纯系的代表人物。
而对于在打分中排倒数第一的杨芸晴一直以来走着中性风,其实她的女性粉丝人数众多,她的五官应该算不上女团中得分最低的,但是由于总是一头短发亮相,AI对她的评分便是最低的了。
而我们将她的照片放入百度AI识别中,她的性别更是变成了男性。不得不说AI的审美观带有偏见,而且这种偏见对于一些人来说是具有攻击性的。
尽管我们并不愿意将审美交给AI ,但是不可否认它正在影响着我们的审美,正如美颜相机的存在,在美颜的世界里,美丽就是被它所定义着。智能相对论易敏认为:如果有一天我们真的将审美标准交给了AI来定义,也许会催生出新的美容业务,整容生意,毕竟全世界的女人都爱美,为了得到AI的认可,我们会想方设法的提高机器对我们的颜值打分。
但这对于我们来说,真的是一件好事吗?
更多精彩内容,关注钛媒体微信号(ID:taimeiti),或者下载钛媒体App
免责声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件举报,一经查实,本站将立刻删除。