asp.net core 는 tensor flowjs 를 사용 하여 face recognition 의 소스 코드 를 실현 합 니 다.
6791 단어 asp.netcoretensorflowjs
기능 설명
소스 코드(neozhu/smartadmin.core.urf: Domain Driven Design (DDD) ultra-lightweight rapid development architecture(support .net 5.0) (github.com))
tensoflowjs,이 프로젝트 에서 저 는 ml5js 라 는 봉 인 된 기 계 를 사용 하여 자바 스 크 립 트 라 이브 러 리 를 배 웠 습 니 다.사용 하기 가 더욱 간단 합 니 다.
Demo
http://106.52.105.140:6200/photos/index
demo/123456
코드 구현
사진 업로드 기능
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 과 분류 하여 사용 합 니 다.
모든 사진 에서 얼굴 정보의 숫자 전환 을 완성 합 니 다.
참조 코드 는 다음 과 같 습 니 다.
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);
}
})
}
테스트 사진 인식 결과유지 보수 와 일치 하 는 사진 라 이브 러 리 에 사진 이름 을 올 리 는 것 이 올 바른 지 여부 입 니 다.
참조 코드:
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);
})
}
});
}
여기까지 만 하면 모두 완 성 됩 니 다.tensor flow 에 관심 이 있 는 친 구 는 메 시 지 를 남 길 수 있 습 니 다.다음 시간 이 있 으 면 계속 업데이트 되 어 카 메 라 를 이용 하여 얼굴 을 식별 할 수 있 습 니 다.asp.net core Clean Architecture 에 관심 이 있 는 친 구 는 github 에서 다운로드 할 수도 있 고 댓 글 을 달 아 교류 할 수도 있 습 니 다.이 프로젝트 는 저도 계속 업데이트 하 겠 습 니 다.마음 에 드 시 면 별 을 주세요.
이상 은 asp.net core 가 tensoflowjs 를 사용 하여 face recognition(소스 코드)을 실현 하 는 상세 한 내용 입 니 다.asp.net core 가 face recognition 을 실현 하 는 데 관 한 자 료 는 다른 관련 글 을 주목 하 시기 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
작업 중 문제 해결 - (win 2003 asp. net) Session 과 페이지 전송 방법 으로 해결 방안 을 정상적으로 사용 할 수 없습니다.또한 F 는 처음에 우리 의 BP & IT 프로젝트 팀 이 Forms 폼 검증 을 사용 했다 고 판단 할 수 있 습 니 다. 페이지 를 뛰 어 넘 는 것 은http://hr.bingjun.cc/MyTask/MyTas...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.