亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

asp.net core使用tensorflowjs實現face recognition的方法

發布時間:2021-06-24 13:46:48 來源:億速云 閱讀:165 作者:chen 欄目:開發技術

這篇文章主要介紹“asp.net core使用tensorflowjs實現face recognition的方法”,在日常操作中,相信很多人在asp.net core使用tensorflowjs實現face recognition的方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”asp.net core使用tensorflowjs實現face recognition的方法”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

asp.net core使用tensorflowjs實現face recognition的方法asp.net core使用tensorflowjs實現face recognition的方法

功能描述

  1. 上傳照片文件名及是系統要識別標簽或是照片的名稱(人物標識)

  2. 提取照片臉部特征值(調用 facemesh模型)

  3. 保存特征值添加樣本(調用 knnClassifier)

  4. 測試上傳的圖片是否識別正確

項目依賴的庫

源代碼(neozhu/smartadmin.core.urf: Domain Driven Design (DDD) ultra-lightweight rapid development architecture(support .net 5.0) (github.com))

tensorflowjs,在該項目中我使用了ml5js這個封裝過的機器學習JavaScript類庫, 使用起來更簡單

Demo

http://106.52.105.140:6200/photos/index

demo/123456

代碼實現

上傳照片功能

asp.net core使用tensorflowjs實現face recognition的方法

asp.net core 參考CleanArchitecture 結構實現后臺代碼,

參考代碼如下(具體請看源代碼):

namespace SmartAdmin.Application.Photos.Commands
{
  public partial class AddPhotoCommand : IRequest<Result<int>>
  {
    public Stream Stream { get; set; }
    public string FileName { get; set; }
    public decimal Size { get; set; }
    public string Path { get; set; }
 
  }
  internal class AddPhotoCommandHandler : IRequestHandler<AddPhotoCommand, Result<int>>
  {
    private readonly IUnitOfWork unitOfWork;
    private readonly IPhotoService photoService;
 
    public AddPhotoCommandHandler(IUnitOfWork unitOfWork,
      IPhotoService photoService)
    {
      this.unitOfWork = unitOfWork;
      this.photoService = photoService;
    }
    public async Task<Result<int>> Handle(AddPhotoCommand request, CancellationToken cancellationToken)
    {
      var info = new DirectoryInfo(request.Path);
      if (!info.Exists)
      {
        info.Create();
      }
      using (FileStream outputFileStream = new FileStream(Path.Combine(request.Path,request.FileName), FileMode.Create))
      {
        request.Stream.CopyTo(outputFileStream);
        outputFileStream.Close();
      }
      var photo = new Photo()
      {
        Name = Path.GetFileNameWithoutExtension(request.FileName),
        Size = request.Size,
        Path = $"/photos/{request.FileName}",
      };
      this.photoService.Insert(photo);
      await this.unitOfWork.SaveChangesAsync();
      return await Result<int>.SuccessAsync(0, "保存成功");
    }
 
  }
}

facemesh模型提取照片中臉部特特信息

掃描圖片獲取圖片中臉部的特征信息以一個多維數組的形式保存到數據庫中,這些特征值將用與下一步的KNN分類識別使用

asp.net core使用tensorflowjs實現face recognition的方法

完成每一張照片中臉部信息的數字轉化

參考代碼如下:

function predict() {
     const img = document.getElementById('photo-canvas');
     facemesh.predict(img).then(faces => {
       console.log(faces)
       if (faces) {
         const canvas = document.getElementById("photo-canvas");
         const photoId=canvas.getAttribute("photo-id");
         const photoName=canvas.getAttribute("photo-name");
         console.log(canvas)
         var draw = canvas.getContext("2d");
         var mesh = faces[0].scaledMesh;
         console.log(mesh);
         /* highlight facial landmark points on canvas board */
         draw.fillStyle = "#00FF00";
         for (i = 0; i < mesh.length; i++) {
           var [x, y, z] = mesh[i];
           draw.fillRect(Math.round(x), Math.round(y), 2, 2);
         }
         updateLandmarks(photoId,JSON.stringify(mesh));
         knnClassifier.addExample(mesh, photoName);
         canvas.setAttribute("photo-mesh", JSON.stringify(mesh));
         $('#testbutton').attr('disabled', false);
       }
     });
   }
 
  function updateLandmarks(id,landmarks){
    $.post('/Photos/Update',{Id:id,Landmarks:landmarks}).done(res=>{
     console.log(res);
     reload();
    }).fail(res=>{
     $.messager.alert('更新失敗', res, 'error');
    })
   } 

添加分類識別樣本數據

facemesh模型只負責把照片中面部特征轉換成一個數組,如果需要對每一張照片的數據再進行分類就需要用到KNN模型,添加的樣本數據越多,識別的就越正確。

參考代碼:

let knnClassifier =ml5.KNNClassifier();
    function training(){
       $.messager.progress({msg:'training....'});
       $.get('/Photos/GetAll').done(res=>{
        for(let i=0;i<50;i++){
        res.map(item=>{
        if(item.Landmarks){
        knnClassifier.addExample(JSON.parse(item.Landmarks), item.Name);
        }
        });
        }
        $.messager.progress('close')
           if(knnClassifier.getNumLabels()>0){
           knnClassifier.classify(JSON.parse(res[2].Landmarks),(err,result)=>{
             console.log(result);
         })
       $('#testbutton').attr('disabled', false);
       }
       })
    }

測試照片識別結果

上傳一張照片匹配維護的照片庫中照片名稱是否正確

asp.net core使用tensorflowjs實現face recognition的方法

參考代碼:

function testPredict(){
      const img = document.getElementById('testphoto_img');
      facemesh.predict(img).then(faces => {
        console.log(faces)
        if (faces) {
          knnClassifier.classify(faces[0].scaledMesh,(err,result)=>{
          console.log(result);
          $.messager.alert('Result:',result.label);
          $('#testresult').text(result.label);
         })
        }
      });
    }

到此,關于“asp.net core使用tensorflowjs實現face recognition的方法”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

老河口市| 湘乡市| 蒙山县| 邵东县| 察雅县| 屯门区| 玉环县| 岑巩县| 高阳县| 车险| 泽普县| 大竹县| 北安市| 璧山县| 饶河县| 金沙县| 汪清县| 新建县| 黑水县| 铜川市| 班戈县| 平凉市| 英吉沙县| 密云县| 略阳县| 泸州市| 湟中县| 田阳县| 会同县| 宣城市| 卢湾区| 白沙| 新竹县| 芒康县| 宜春市| 渭源县| 雷波县| 盘山县| 太白县| 鄂尔多斯市| 岑巩县|