public virtual void DetectAndIdentifyPeople(MediaItem item, string db, List <string> groupIdSet)
        {
            var analysis = SearchService.GetImageAnalysisItem(item.ID.ToShortID().ToString(), item.InnerItem.Language.Name, db);

            if (analysis == null)
            {
                return;
            }

            if (FaceService.ValidateFaceImage(item).Any())
            {
                return;
            }

            var detection = FaceService.Detect(item.GetMediaStream(), true, true, new List <FaceAttributeType>
            {
                FaceAttributeType.Age,
                FaceAttributeType.FacialHair,
                FaceAttributeType.Gender,
                FaceAttributeType.Glasses,
                FaceAttributeType.HeadPose,
                FaceAttributeType.Smile,
                FaceAttributeType.Emotion
            });

            if (detection == null || !detection.Any())
            {
                return;
            }

            DataWrapper.UpdateFields(analysis, new Dictionary <ID, string> {
                { Settings.FacialAnalysisFieldId, JsonConvert.SerializeObject(detection) }
            });
            SearchService.UpdateItemInIndex(analysis, db);

            var faceIds = detection.Select(a => a.FaceId).ToArray();

            if (!faceIds.Any())
            {
                return;
            }

            IdentifyPeople(analysis, faceIds, db, groupIdSet);
        }