当尝试使用口罩上载图像时,面部识别功能无法正常工作

问题描述 投票:0回答:1

关于在认知人脸识别中如何使用蒙版获取图像信息的任何建议?当我上传带有头饰或眼镜的图像时,认知服务会返回图像信息,但是当我戴着面具拍摄图像时,认知服务不会返回任何信息。这意味着我对认知服务的实现无法使用蒙版识别图像。如果有人遇到此问题并解决了,请给我建议解决方案。

  public string subscriptionKey = "88c**************************f7";

  public string uriBase = "https://westcentralus.api.cognitive.microsoft.com/face/v1.0/detect";

//Method to pick an image from the gallery
 async void btnPick_Clicked(object sender, System.EventArgs e)
        {

            try
            {
                if (!CrossMedia.Current.IsPickPhotoSupported)
                {

                    return;
                }

                var file = await CrossMedia.Current.PickPhotoAsync(new Plugin.Media.Abstractions.PickMediaOptions
                {
                    PhotoSize = Plugin.Media.Abstractions.PhotoSize.Medium
                });
                if (file == null) return;
                imgSelected.Source = ImageSource.FromStream(() => {
                    var stream = file.GetStream();
                    return stream;
                });
                MakeAnalysisRequest(file.Path);
            }
            catch (Exception ex)
            {
                string test = ex.Message;
            }

        }

> //convert Convert image to byte array

 public byte[] GetImageAsByteArray(string imageFilePath)
        {
            using (FileStream fileStream =
                new FileStream(imageFilePath, FileMode.Open, FileAccess.Read))
            {
                BinaryReader binaryReader = new BinaryReader(fileStream);
                return binaryReader.ReadBytes((int)fileStream.Length);
            }
        }

> //Method to get image information from the detection Url

 public async void MakeAnalysisRequest(string imageFilePath)
        {
            HttpClient client = new HttpClient();
            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);

            string requestParameters = "returnFaceId=true&returnFaceLandmarks=false" +
                "&returnFaceAttributes=age,gender,headPose,smile,facialHair,glasses," +
                "emotion,hair,makeup,occlusion,accessories,blur,exposure,noise";

            string uri = uriBase + "?" + requestParameters;
            HttpResponseMessage response;
            byte[] byteData = GetImageAsByteArray(imageFilePath);

            using (ByteArrayContent content = new ByteArrayContent(byteData))
            {
                content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
                response = await client.PostAsync(uri, content);

                string contentString = await response.Content.ReadAsStringAsync();

        //***************************************************
            //Here it return null in case of mask else its working fine 
        //***************************************************

                List<ResponseModel> faceDetails = JsonConvert.DeserializeObject<List<ResponseModel>>(contentString);

                if (faceDetails.Count != 0)
                {
                    lblTotalFace.Text = "Total Faces : " + faceDetails.Count;
                    lblGender.Text = "Gender : " + faceDetails[0].faceAttributes.gender;
                    lblAge.Text = "Total Age : " + faceDetails[0].faceAttributes.age;

                    Console.WriteLine(faceDetails[0].faceAttributes.accessories.FirstOrDefault(x => x.type == "mask").confidence);
                }

            }
        }
xamarin xamarin.forms face-detection microsoft-cognitive face-recognition
1个回答
0
投票

您必须牢记两件事:

  • 服务可能看不见某些面孔,请参阅doc

由于技术挑战,可能无法检测到某些面孔。极端的面部角度(头部姿势)或面部遮挡(诸如太阳镜或手遮住脸部)可能会影响检测。正面和接近正面的脸部效果最佳。

  • Face API当前有2种检测模型:“ detection_01”和“ detection_02”。最新的模型(如果我还记得的话,自2019年5月开始存在)具有更好的性能(特别是对于旋转或部分隐藏的面孔),但未提供模型1所提供的输出中的所有信息。

检测模型的差异

我使用“ Cognitive Workbench”演示门户网站(可通过here进行了快速演示,其图像如下:Sample

使用detection_01:未找到面孔

使用detection_02:已找到人脸,如您在此捕获中所见:

result with detection02

但是,如果您需要使用面部特定的属性,则可能无法解决您的问题。请参阅API文档摘录:

API Detection models info

© www.soinside.com 2019 - 2024. All rights reserved.