JavaScript 기반 Baidu AI 얼굴 인식 WeChat 애플릿(딥 러닝 + 머신 비전) 모든 엔지니어링 소스 코드 및 비디오 데모(학습 전용) 포함

여기에 이미지 설명 삽입

머리말

이 프로젝트는 Baidu AI의 교육 모델을 사용하고 이미지 인식 인터페이스를 사용하여 결과를 반환하며 데이터베이스에서 얼굴 판단 및 얼굴 등록, 삭제 및 로그인과 같은 관련 비즈니스 시나리오를 실현하는 것을 목표로 합니다.

Baidu AI의 학습 모델을 사용하여 입력 이미지에서 얼굴 감지 및 인식을 수행할 수 있습니다. 먼저 이미지 인식 인터페이스를 호출하고 감지할 이미지를 전달한 다음 반환된 결과를 얻습니다.

얼굴 등록 시나리오에서는 등록 샘플로 사진을 제공하고 기존 얼굴 데이터베이스와 비교할 수 있습니다. 이미지의 얼굴 특징을 분석하여 얼굴이 라이브러리에 있는지 여부와 유사성을 판단할 수 있습니다. 얼굴이 라이브러리에 있으면 해당 ID 정보와 연결할 수 있습니다.

얼굴 삭제 시나리오에서는 얼굴의 식별 또는 신원 정보를 제공한 다음 얼굴 데이터베이스에서 삭제할 수 있습니다. 이것은 얼굴 정보의 업데이트 및 유지 관리에 사용할 수 있습니다.

얼굴 로그인 시나리오에서는 검증할 얼굴 이미지를 입력하여 기존 얼굴 데이터베이스와 비교할 수 있습니다. 유사도가 특정 임계값에 도달하면 사용자의 신원을 확인할 수 있으므로 얼굴 로그인 기능을 실현할 수 있습니다.

Baidu AI의 학습 모델과 이미지 인식 인터페이스를 사용하여 빠르고 정확하게 얼굴 관련 비즈니스 처리를 수행할 수 있습니다. 본 프로젝트의 응용 가능성은 매우 넓고 안면인식 출입 통제 시스템, 안면 결제 인증, 안면 출석 등 분야에서 보안과 편리성을 높일 수 있다.

전반적인 디자인

이 부분에는 시스템의 전체 구조도와 시스템 흐름도가 포함됩니다.

시스템 전체 구조 다이어그램

시스템의 전체 구조가 그림에 나와 있습니다.

여기에 이미지 설명 삽입

시스템 흐름도

시스템 흐름은 그림에 나와 있습니다.

여기에 이미지 설명 삽입

운영 환경

공식 웹사이트 주소: https://cloud.baidu.com/ , Baidu 계정에 등록하십시오. Management Console -> 상품서비스 -> 인공지능 -> 얼굴인식 -> 애플리케이션 생성 -> 필요한 정보 입력 -> 지금 생성으로 이동하여 얼굴인식 애플리케이션을 생성합니다. 해당 API Key및 을 가져온 후 Secret Key얼굴 데이터베이스에 새 그룹을 만듭니다.

다운로드 주소: https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 설치가 완료되면 코드를 스캔하고 로그인하여 얼굴인식 프로젝트를 생성합니다. 필요한 정보를 얻습니다 APPID.

모듈 구현

이 프로젝트는 액세스 토큰 획득, 얼굴 등록, 얼굴 삭제 및 얼굴 인식의 4개 모듈을 포함하며 각 모듈의 기능 소개 및 관련 코드는 다음과 같습니다.

1. 액세스 토큰 획득

Baidu Cloud 제품 설명서에 따르면 Baidu AIP 개방형 플랫폼은 OAuth2.0 인증을 사용하여 개방형 API를 호출하고 access_token 매개변수가 URL에 포함되어 있습니다. 승인된 서비스 주소로 요청을 보내고(POST 권장) URL에 다음 매개변수를 포함합니다.

grant_type: 필수 매개변수, client_credentials로 고정됨,
client_id: 필수 매개변수, API Key 사용됨,
client_secret: 필수 매개변수, Secret Key 사용됨

획득 성공 후 반환 값 access_token을 토큰으로 저장하며 관련 코드는 다음과 같습니다.

wx.request({
    
    
      url: 'https://aip.baidubce.com/oauth/2.0/token',  
            data: {
    
    
           grant_type: 'client_credentials',
           client_id: 'Oi3FpajiHUArp7KQrXgEwb7k',// API Key
           client_secret: '********************'// Secret Key
            },
           header: {
    
    
              'Content-Type': 'application/json' 
            },
           success(res) {
    
    
               that.setData({
    
    
                token: res.data.access_token//获取到token
         })
       }
     })

2. 얼굴 등록

WeChat 애플릿에서 얼굴 등록 페이지를 생성하고 카메라에서 캡처한 이미지를 base64 인코딩으로 변환하여 문자열로 변환하고 이미지 주소 대신 문자열을 사용합니다. 관련 코드는 다음과 같습니다.

wx.getFileSystemManager().readFile({
    
    
                  filePath: this.data.src, //选择图片返回的相对路径
                  encoding: 'base64', //编码格式
                  success: res => {
    
     //成功回调
                    this.setData({
    
    
                    base64: res.data
                  })
                }
              })

요청 URL: 을 사용하여 https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add이미지를 업로드합니다. 파라미터는 image, image_type, group_id, user_id이며, 이는 group_id기존에 생성된 얼굴 데이터베이스를 그룹화하여 user_id입력을 통해 얻은 것이다. 등록에 성공하면 사용자 페이지로 돌아가 얼굴 데이터베이스에 사용자 이름을 표시합니다.관련 코드는 다음과 같습니다.

    wx.uploadFile({
    
    
          url: 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add?access_token=' + "***********",
            filePath: that.data.src,
            name: 'file',
            formData: {
    
    
              'image': this.data.base64,
              'image_type': 'BASE64',
              'group_id': 'test',
              'user_id': this.data.username //输入的名字
            },
header: {
    
    
            'Content-Type': 'application/json' 
            },
            success: function (res) {
    
    
                wx.hideLoading();
                console.log(res);
                var data = JSON.parse(res.data);
                if (res.statusCode ==200) {
    
    
                    wx.switchTab({
    
    
                        url: '/pages/user/user'
                    })
                } 

그림과 같이 얼굴 등록에 대한 Baidu 클라우드 요청의 반환 값을 가져옵니다.

여기에 이미지 설명 삽입

3. 얼굴 삭제

삭제하기 전에 얼굴을 표시하는 인터페이스를 추가하고 https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getusers요청 url: 에 따라 업로드 group_id하고 반환 값은 목록 형식으로 저장하고 관련 코드는 다음과 같습니다.

getList() {
    
    
        let that = this;
        wx.request({
    
    
          url: 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getusers?access_token=' + "24.a9cbfb843b4f4ec029924cccd300eb25.2592000.1588666636.282335-19228982",
          data: {
    
    
            group_id:'test'
          },
          header: {
    
    
            'Content-Type': 'application/json' 
          },
            success: function (res) {
    
    
                console.log(res);
                if (res.statusCode != 200) {
    
    
                    wx.showToast({
    
    
                        title: res.data,
                        icon: 'none',
                        duration: 2000
                    });
                } else {
    
    
                    that.setData({
    
    
                      list: res.data.result.user_id_list
                    });
                }
            },
            fail: function (res) {
    
    
                wx.showToast({
    
    
                    title: '请求用户列表错误',
                    icon: 'none',
                    duration: 2000
                });
            }
        })
    },

wxml 파일에서 wx.for를 사용하여 목록에 저장된 각 요소에 대한 셀을 만들어 출력하고 각 요소에 대한 새 버튼을 만듭니다. 각 버튼은 해당 요소의 데이터로 data-id 매개 변수를 할당할 수 있으므로 js 파일에서 요소의 face_token을 얻을 수 있습니다. 관련 코드는 다음과 같습니다.

<view class="weui-cell" wx:for="{
     
     {list}}" wx:for-item="item">
                <view class="weui_cell__bd">{
   
   {item}}</view>
                <view class="weui-cell__ft">
                    <button class="weui-btn" type="warn" size="mini" data-id="{
     
     {item}}" bindtap="delUser">删除</button>
                </view>
            </view>

https://aip.baidubce.com/rest/2.0/face/v3/faceset/group/getusersBaidu 클라우드 얼굴 인식에서 얼굴을 삭제하려면 face_token 매개변수를 업로드해야 합니다.따라서 사용자 목록 가져오기 API 인터페이스를 사용하여 사용자 이름 user_id과 그룹 이름 에 group_id따라 가져오고 업로드 , , 세 가지 매개변수 face_tokenuser_id실현 group_id합니다 face_token. 얼굴 삭제 및 성공 후 호출 getlist이 기능은 얼굴 목록 업데이트를 구현합니다. 이 중 할당된 버튼에 따라 user_id를 e.currentTarget.dataset.id획득하며 해당 코드는 다음과 같다.

   //获取face_token
   wx.request({
    
    
                      url: 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/face/getlist?access_token=' + "24.a9cbfb843b4f4ec029924cccd300eb25.2592000.1588666636.282335-19228982",
                      header: {
    
    
                        'Content-Type': 'application/json' // 默认值
                      },
                      data: {
    
    
                        group_id: 'test',
                        user_id: e.currentTarget.dataset.id,//从按钮中获取
                      },
                        success: function (res) {
    
    
                       //console.log(res)
                          var temp = res.data.result
                          var face = temp.face_list[0].face_token
                          wx.request({
    
    
                            url: 'https://aip.baidubce.com/rest/2.0/face/v3/faceset/face/delete?access_token=' + "24.a9cbfb843b4f4ec029924cccd300eb25.2592000.1588666636.282335-19228982",
                            method: 'POST',
                            data: {
    
    
                              group_id: 'test',
                              user_id: e.currentTarget.dataset.id,
                              face_token:face //要删除的人脸facetoken
                            },
                            header: {
    
    
                              'Content-Type': 'application/json' 
                            },
                             success(res) {
    
    
                              var errorcode = res.data.error_code
                              if (errorcode == 0) //访问成功
                              {
    
    
                                wx.showToast({
    
    
                                  title: '删除成功',
                                  icon: 'success',
                                  duration: 2000
                                })
                                that.getList();
                                }
                             }
                            })
                        },

4. 얼굴 인식

이 부분은 Baidu 클라우드 얼굴 검색 API 인터페이스를 사용하여 1:N 인식을 호출하고 얼굴 데이터베이스 컬렉션에서 가장 유사한 얼굴을 찾습니다. 홈페이지에서 카메라를 불러서 상시 켜두고, 사진을 찍어서 얼굴 등록에 필요한대로 base64 형식으로 변환하고, 사진의 base64 인코딩은 사진 데이터를 문자열로 인코딩하고, 문자열을 이용해 이미지를 대체합니다. 주소.

Baidu 클라우드 얼굴 인식 인터페이스를 통해 https://aip.baidubce.com/rest/2.0/face/v3/search, 업로드 image3개의 데이터를 업로드합니다. 여기서 매개변수는 카메라로 찍은 사진의 base64 형식입니다 image_type. 반환 값을 얻고 그림과 같이 사용자의 일치 점수에 따라 얼굴이 얼굴 데이터베이스에 있는지 여부를 판단합니다.group_id_listimagescore

여기에 이미지 설명 삽입

관련 코드는 다음과 같습니다.

       wx.request({
    
    
          url: 'https://aip.baidubce.com/rest/2.0/face/v3/search?access_token=' + "24.a9cbfb843b4f4ec029924cccd300eb25.2592000.1588666636.282335-19228982",
          method: 'POST',
          data: {
    
    
            image: that.data.base64,
            image_type: 'BASE64',
            group_id_list: 'test' //自己的用户组ID
          },
          header: {
    
    
            'Content-Type': 'application/json' // 默认值
          },
          success(res) {
    
    
            wx.hideLoading();
            var errorcode = res.data.error_code
            if (errorcode == 0) //访问成功
            {
    
    
              var ulist = res.data.result
              if (ulist.user_list != null) {
    
    
                var result = ulist.user_list[0].score
                 if (result > 80) {
    
    
                  wx.showToast({
    
    
                    title: '验证通过',
                    icon: 'success',
                    duration: 2000
                  })

시스템 테스트

얼굴 등록의 효과는 그림 1에 표시되고 새로운 사용자 syy가 추가되고 사용자 테스트가 삭제되고 효과는 그림 2에 표시되며 사진 인식 기능을 실현하기 위해 로그인 인터페이스에서 클릭 인식과 효과가 표시됩니다. 그림 3과 같이 인식 성공률은 그림 4와 같습니다.

여기에 이미지 설명 삽입

그림 1 얼굴 등록 다이어그램

여기에 이미지 설명 삽입

그림 2 얼굴 삭제

여기에 이미지 설명 삽입

그림 3 인식 성공 효과

여기에 이미지 설명 삽입

그림 4 인식 성공률

WeChat 개발자 도구에서 디버깅 후 실제 장치 디버깅을 선택하여 QR 코드를 형성하고 휴대폰에서 WeChat을 열고 QR 코드를 스캔하고 응용 프로그램에 들어갑니다.실제 장치 디버깅 중 데이터의 스크린샷이 그림에 표시되어 있습니다. 실제 장치 디버깅의 상태 매개변수는 200입니다. 호출이 성공했습니다.

여기에 이미지 설명 삽입

그림 5 실제 머신 디버깅 및 데이터 맵

프로젝트 소스코드 다운로드

자세한 내용은 내 블로그 리소스 다운로드 페이지를 참조하십시오.

기타 정보 다운로드

인공 지능 관련 학습 경로 및 지식 시스템에 대해 계속 배우고 싶다면 내 다른 블로그 " Heavy | 완전한 인공 지능 AI 학습-기본 지식 학습 경로, 모든 자료는 지불 없이 네트워크 디스크에서 직접 다운로드할 수 있습니다. " 이 블로그
는 Github의 잘 알려진 오픈 소스 플랫폼, AI 기술 플랫폼 및 Datawhale, ApacheCN, AI Youdao 및 Dr. Huang Haiguang 등 관련 분야의 전문가를 참조합니다. 약 100G 관련 자료가 있으며, 모든 친구들을 도와주세요.

Supongo que te gusta

Origin blog.csdn.net/qq_31136513/article/details/131402963
Recomendado
Clasificación