브래드 버드 감독, 톰 크루즈 주연의 '미션 임파서블 4'를 보셨나요? 붐비는 기차역에서 눈 깜짝할 사이에 컴퓨터가 인식하고 요원들이 그를 맞이한 아름다운 여인은 치명적인 살인자이고, 휴대폰에서는 경보음이 울린다. 이름과 정보가 이미 표시되어 있습니다. 이번 글에서 소개하고 싶은 얼굴 인식 알고리즘과 퍼블릭 클라우드 AI 플랫폼을 활용해 모델을 학습시키는 방법이 바로 이것이다.
인공 지능 분야에서 초기에 성숙하고 널리 구현된 기술 중 하나인 얼굴 인식의 목적은 사진과 비디오에서 얼굴의 신원을 확인하는 것입니다. 얼굴 인식 기술은 휴대폰 잠금 해제 및 결제, 보안 분야의 얼굴 인식 제어 등 다양한 용도로 활용되고 있다. 얼굴은 각 사람의 타고난 특성이며, 이는 고유하고 쉽게 복제할 수 없으므로 신원 확인에 필요한 전제 조건을 제공합니다.
얼굴 인식에 대한 연구는 1960년대부터 시작되었으며, 컴퓨터 기술과 광학 영상 기술의 지속적인 발전과 최근 신경망 기술의 부활로 인해 특히 컨볼루셔널 신경망이 이미지 인식 및 영상 인식 분야에서 널리 활용되고 있습니다. 탐지 성공으로 얼굴 인식 시스템의 성능이 크게 향상되었습니다. 이 기사에서는 얼굴 인식 기술의 기술적 세부 사항부터 시작하여 얼굴 인식 기술의 개발 프로세스에 대한 사전 이해를 제공합니다. 기사의 후반부에서는 ModelArts 플랫폼의 사용자 정의 이미지를 사용하여 보여 드리겠습니다. 퍼블릭 클라우드 컴퓨팅 리소스를 사용하면 사용 가능한 얼굴 인식 모델을 빠르게 학습할 수 있습니다.
기존의 영상처리와 머신러닝 기술을 기반으로 하든, 딥러닝 기술을 활용하든 과정은 동일합니다. 그림 1에 표시된 것처럼 얼굴 인식 시스템에는 얼굴 감지, 정렬, 인코딩 및 일치라는 네 가지 기본 링크가 포함됩니다. 따라서 본 장에서는 먼저 전통적인 영상처리와 머신러닝 알고리즘을 기반으로 한 얼굴인식 시스템에 대한 개요를 제공함으로써 얼굴인식 분야에서 딥러닝 알고리즘 전체의 개발 맥락을 살펴볼 수 있다.
얼굴 인식 프로세스
앞서 언급했듯이 얼굴 인식의 목적은 이미지 속 얼굴의 신원을 확인하는 것이므로 먼저 이미지 속 얼굴을 식별해야 합니다. image 얼굴 검출은 사실 이 단계는 궁극적으로 표적 검출의 문제입니다. 전통적인 이미지 타겟 탐지 알고리즘은 주로 제안 프레임 생성, 특징 엔지니어링 및 분류의 세 부분으로 구성됩니다. 유명한 RCNN 시리즈 알고리즘을 포함한 최적화 아이디어도 이 세 부분을 기반으로 합니다.
첫 번째 단계는 제안 프레임을 생성하는 것입니다. 이 단계의 가장 간단한 아이디어는 사진에서 감지할 프레임을 여러 개 잘라내고 프레임에 대상이 있는지 감지하는 것입니다. , 원본 이미지의 프레임 위치는 타겟이 감지된 위치이므로 이 단계에서 타겟의 범위가 클수록 제안 상자 생성 전략이 더 좋습니다. 일반적인 제안 상자 생성 전략에는 아래 그림과 같이 다수의 후보 상자를 생성하는 슬라이딩 윈도우, 선택적 검색, 무작위 프림 등이 있습니다.
많은 수의 후보 프레임을 얻은 후 기존 얼굴 감지 알고리즘에서 다음으로 가장 중요한 부분은 특성 추출입니다. 피쳐 엔지니어링은 실제로 알고리즘 엔지니어의 전문적인 경험을 사용하여 다양한 장면의 얼굴에서 가장자리 특징, 형태 형태 특징, 텍스처 특징 등과 같은 다양한 특징을 추출합니다. 특정 알고리즘 기술에는 LBP, Gabor, Haar, SIFT 등이 있습니다. 특징 추출 알고리즘은 2차원 행렬로 표현된 얼굴 이미지를 다양한 특징 벡터의 표현으로 변환합니다.
특징 벡터를 얻은 후 adaboost, cascade, SVM, Random Forest 등을 통해 기존 머신러닝 분류기를 통해 특징을 분류하여 얼굴인지 여부를 판단할 수 있습니다. 전통적인 분류기로 분류한 후 얼굴 영역, 특징 벡터, 분류 신뢰도 등을 얻을 수 있습니다. 이 정보를 통해 얼굴 정렬, 특징 표현, 얼굴 일치 인식을 완료할 수 있습니다.
전형적인 HAAR+AdaBoost 방법을 예로 들어 보겠습니다. 특징 추출 단계에서는 먼저 haar 특징을 사용하여 이미지에서 많은 간단한 특징을 추출합니다. Haar 기능은 아래 그림에 나와 있습니다. 다양한 크기의 얼굴 감지를 충족시키기 위해 일반적으로 가우시안 피라미드를 사용하여 다양한 해상도의 이미지에서 Haar 특징을 추출합니다.
Haar 특징의 계산 방법은 흰색 영역의 픽셀 합에서 검은색 영역을 빼는 것이므로 얼굴 영역과 얼굴이 아닌 영역에서 얻어지는 값이 다릅니다. 일반적으로 구체적인 구현 과정에서는 통합 다이어그램 방식을 통해 신속하게 구현할 수 있습니다. 일반적으로 20*20으로 정규화된 학습 이미지에서 사용 가능한 Haar 특징 수는 약 10,000개이므로 이 특징 척도를 사용하면 기계 학습 알고리즘을 분류 및 식별에 사용할 수 있습니다.
Haar 특성을 얻은 후 Adaboost를 사용하여 분류할 수 있습니다. Adaboost 알고리즘은 여러 약한 분류 방법을 결합하여 새로운 강력한 분류 방법을 형성하는 방법입니다. 계단식 분류기와 학습된 특징 선택 임계값을 기반으로 얼굴 감지를 완료할 수 있습니다.
위의 방법에서 알 수 있듯이 기존의 머신러닝 알고리즘은 특징 기반 알고리즘이므로 특징 엔지니어링 및 매개변수 조정을 수행하려면 알고리즘 엔지니어의 많은 전문적 경험이 필요하며 알고리즘 효과는 아주 좋은하지. 더욱이, 인공적인 디자인이 제약되지 않은 환경에서 다양한 변화하는 조건에 견고하기는 매우 어렵습니다. 과거의 이미지 알고리즘은 엔지니어가 보다 전통적인 이미지 처리 방법을 사용하여 실제 장면과 전문가 경험을 바탕으로 많은 특징을 추출한 다음 추출된 특징에 대해 통계적 학습을 수행하여 전체 알고리즘의 성능을 향상시켰습니다. 사실적인 장면에 크게 의존하며 전문가의 경험에 따르면 얼굴과 같은 거대한 범주가 있는 제한되지 않은 장면과 각 범주의 샘플 불균형이 심각한 경우에는 효과가 그리 좋지 않습니다. 따라서 최근 이미지 처리 분야에서 딥러닝이 큰 성공을 거두면서 얼굴 인식 기술 역시 딥러닝을 기반으로 매우 좋은 결과를 얻었습니다.
딥러닝의 얼굴 인식 시스템에서는 문제를 표적 검출 문제와 분류 문제로 나누어 봅니다. 딥러닝에서의 표적 검출 문제의 본질은 다음과 같습니다. 여전히 분류 문제이자 회귀 문제이기 때문에 이미지 분류에 컨볼루션 신경망을 성공적으로 적용함으로써 얼굴 인식 시스템의 효과가 빠르고 크게 향상되었습니다. 인간의 얼굴 인식은 사회 생활의 모든 측면에서 사용됩니다.
사실 얼굴 인식에 신경망을 사용하는 것은 새로운 아이디어가 아닙니다. 1997년에 연구자들은 얼굴 감지, 눈 위치 지정 및 얼굴 인식을 위해 확률적 의사 결정을 기반으로 하는 신경망이라는 방법을 제안했습니다. 이 얼굴 인식 PDBNN은 숨겨진 단위의 수를 줄이고 과적합을 방지하기 위해 각 훈련 주제에 대해 완전히 연결된 하위 네트워크로 나누어집니다. 연구원들은 밀도와 에지 기능을 사용하여 두 개의 PBDNN을 별도로 훈련한 다음 출력을 결합하여 최종 분류 결정을 내렸습니다. 그러나 당시에는 컴퓨팅 파워와 데이터의 심각한 부족으로 인해 알고리즘이 비교적 단순했기 때문에 그다지 좋은 결과를 얻지 못했습니다. 역전파 이론과 컴퓨팅 파워 프레임워크가 올해 성숙해지면서 얼굴 인식 알고리즘의 효율성이 크게 향상되기 시작했습니다.
딥 러닝에서 완전한 얼굴 인식 시스템에는 그림 1에 표시된 4단계도 포함됩니다. 첫 번째 단계는 얼굴 감지 알고리즘이라고 하며 이는 본질적으로 대상 감지 알고리즘입니다. 두 번째 단계는 얼굴 정렬이라고 하는데, 현재는 핵심 포인트의 기하학적 정렬과 딥러닝 기반의 얼굴 정렬을 기반으로 하고 있습니다. 세 번째 단계는 특징 표현입니다. 딥러닝에서는 분류 네트워크 아이디어를 통해 분류 네트워크의 일부 특징 레이어를 얼굴의 특징 표현으로 추출한 후 동일한 방식으로 표준 얼굴 이미지를 처리합니다. 그리고 마지막으로 비교를 통해 쿼리 방식을 통해 전체 얼굴 인식 시스템이 완성됩니다. 다음은 얼굴 검출 및 얼굴 인식 알고리즘 개발에 대한 간략한 개요입니다.
이미지 분류에 큰 성공을 거둔 이후 딥러닝은 얼굴 검출 문제에 빠르게 사용되었습니다. 처음에는 이 문제를 해결하기 위한 아이디어가 대부분 CNN 네트워크의 규모 불변성을 기반으로 했으며, 이미지를 다르게 처리한 후 추론을 수행하고 카테고리 및 위치 정보를 직접 예측합니다. 또한, 특징 맵의 각 지점에 대한 직접적인 위치 회귀로 인해 획득된 얼굴 프레임의 정확도가 상대적으로 낮기 때문에 일부 사람들은 다단계 분류기를 기반으로 하는 대략적인 탐지 전략을 제안했습니다. 예를 들어, 주요 방법은 CNN, DenseBox 및 MTCNN입니다.
MTCNN은 처음으로 얼굴 영역 감지와 얼굴 핵심 포인트 감지를 결합한 것으로 Cascade CNN과 마찬가지로 캐스케이드 프레임워크를 기반으로 하지만 전체적인 아이디어는 더 영리하고 MTCNN 일반적으로 PNet, RNet, ONet의 세 부분으로 나누어집니다. 네트워크 구조는 아래 그림과 같습니다.
먼저 PNet 네트워크는 입력 이미지를 다양한 크기로 조정하여 두 개의 컨볼루션 레이어를 직접 통과하고 얼굴 분류 및 얼굴 감지 프레임을 반환합니다. 원본 영상에서 대략적으로 검출된 얼굴을 잘라낸 후, 입력된 R-Net에서 다시 얼굴 검출을 수행합니다. 마지막으로 획득된 얼굴은 최종적으로 O-Net에 입력되고, 획득된 O-Net 출력 결과가 최종 얼굴 검출 결과가 된다. MTCNN의 전체 프로세스는 비교적 간단하고 신속하게 배포 및 구현이 가능하지만 MTCNN에도 많은 단점이 있습니다. 다단계 작업 훈련을 포함하는 것은 시간이 많이 걸리고, 중간 결과를 대량으로 저장하려면 많은 저장 공간이 필요합니다. 또한 수정된 네트워크는 특징점에 대해 경계 상자 회귀를 직접 수행하므로 작은 대상 얼굴 검출에 대한 효과는 그리 좋지 않습니다. 또한 추론 과정에서 다양한 크기의 얼굴 감지 요구 사항을 충족하기 위해 네트워크는 얼굴 이미지의 크기를 다양한 크기로 조정해야 하며 이는 추론 속도에 심각한 영향을 미칩니다.
표적 탐지 분야의 발전과 함께 점점 더 많은 실험적 증거는 표적 탐지의 더 많은 병목 현상이 낮은 수준의 네트워크 의미론이지만 상대적으로 높은 포지셔닝 정확도와 높은 수준의 네트워크 의미론이지만 낮은 포지셔닝 사이의 모순에 있음을 입증합니다. 정확도 표적 탐지 네트워크는 유명한 Faster-rcnn, SSD 및 Yolo 시리즈와 같은 앵커 기반 전략 및 교차 계층 융합 전략에서도 인기를 얻었습니다. 따라서 얼굴 감지 알고리즘은 다양한 크기의 얼굴 감지 효과를 충족하기 위해 앵커 및 다중 채널 출력을 점점 더 많이 사용하고 있습니다. 가장 유명한 알고리즘은 SSH 네트워크 구조입니다.
위 그림에서 볼 수 있듯이 SSH 네트워크에는 이미 다양한 네트워크 계층의 출력을 처리하는 방법이 있습니다. 다양한 크기의 얼굴 감지 프로세스를 완료하려면 하나의 추론만 필요하므로 싱글 스테이지라고 합니다. SSH 네트워크도 상대적으로 간단합니다. VGG의 다양한 컨볼루션 레이어에서 분기 계산과 출력을 수행하기만 하면 됩니다. 또한, 상위 수준 특징을 업샘플링하고, 하위 수준 특징과 Eltwise Sum을 수행하여 하위 수준 특징과 상위 수준 특징의 특징 융합을 완성합니다. 또한 SSH 네트워크는 탐지 모듈과 컨텍스트 모듈도 설계했으며 탐지 모듈의 일부로 더 많은 컨텍스트 정보와 더 큰 수용 필드를 얻기 위해 인셉션 구조를 채택했습니다.
SSH의 감지 모듈
SSH
SSH의 감지 모듈에 있는 컨텍스트 모듈은 1×1 컨볼루션을 사용하여 최종 회귀 및 분류 분기 결과를 출력하며 완전히 사용하지 않습니다. 연결된 레이어는 다양한 크기의 그림을 입력하여 출력 결과를 얻을 수 있도록 보장하며 이는 당시의 완전 컨볼루셔널 설계 방법 추세에도 대응합니다. 불행하게도 네트워크는 랜드마크 포인트를 출력하지 않습니다. 게다가 VGG16의 백본은 상대적으로 얕아진 특징 피라미드 구조를 사용하지 않습니다. 더욱 성숙한. 그래서 마지막으로 현재 얼굴 검출 알고리즘에 널리 사용되고 있는 Retinaface 네트워크를 소개하고자 합니다.
Retinaface는 기본적으로 RetinaNet의 네트워크 구조를 기반으로 하며 기능 피라미드 기술을 사용하여 다중 규모 정보의 융합을 달성하고 작은 물체를 감지하는 데 중요한 역할을 합니다. 네트워크 구조는 아래와 같습니다.
위 그림에서 볼 수 있듯이 Retinaface의 백본 네트워크는 일반적인 컨볼루셔널 신경망이며, 여기에 기능 피라미드 구조와 Context Module 모듈을 추가하여 상황 정보를 더욱 통합하고 분류, 탐지, 다양한 작업을 완료합니다. 랜드마크 포인트 회귀, 이미지 자체 강화 등이 있습니다.
얼굴 검출의 본질은 타겟 검출 작업이기 때문에 향후 타겟 검출 방향도 얼굴의 최적화 방향에 적용됩니다. 현재 표적 탐지에서 작은 표적과 가려진 표적을 탐지하는 것은 여전히 어렵습니다. 또한 대부분의 탐지 네트워크는 점점 더 끝단에 배치되므로 끝단을 기반으로 하는 네트워크 모델 압축 및 재구성 가속은 알고리즘에 더 어렵습니다. 엔지니어 딥 러닝 탐지 알고리즘의 이해 및 적용.
얼굴 인식 문제의 본질은 분류 문제, 즉 각 사람을 클래스로 분류하여 검출하지만, 실제 적용 시에는 많은 문제가 발생하게 됩니다. 첫째, 얼굴 카테고리가 많습니다. 마을의 모든 사람을 식별하려는 경우 거의 100,000개의 카테고리가 있을 것입니다. 또한 각 사람에 대해 사용할 수 있는 라벨링된 샘플이 거의 없으며 롱테일 데이터가 많이 있을 것입니다. . 위의 문제를 기반으로 기존 CNN 분류 네트워크를 수정해야 합니다.
우리는 심층 컨벌루션 네트워크가 블랙박스 모델이지만 데이터 훈련을 통해 그림이나 사물의 특성을 특성화할 수 있다는 것을 알고 있습니다. 따라서 얼굴 인식 알고리즘은 컨볼루셔널 네트워크를 통해 많은 수의 얼굴 특징 벡터를 추출한 후 유사성 판단 및 기본 라이브러리와의 비교를 기반으로 얼굴 인식 프로세스를 완료할 수 있습니다. 따라서 알고리즘 네트워크는 서로 다른 얼굴에 대해 서로 다른 특징을 생성할 수 있습니다. ? 동일한 얼굴에 대해 유사한 특징을 생성하는 것이 이러한 임베딩 작업의 초점이 될 것입니다. 즉, 클래스 간 거리를 최대화하고 클래스 내 거리를 최소화하는 방법입니다.
얼굴 인식에서 백본 네트워크는 다양한 컨벌루션 신경망을 사용하여 resnet, Inception 및 기타 고전적인 컨벌루션 신경망을 백본으로 사용하여 특징 추출을 완료할 수 있습니다. 핵심은 손실 함수의 마지막 레이어 설계와 구현. 이제 딥러닝 기반 얼굴 인식 알고리즘의 다양한 손실 함수를 두 가지 아이디어로 분석해 보겠습니다.
아이디어 1: 대조 손실, 삼중항 손실 및 샘플링 방법을 포함한 메트릭 학습
아이디어 2: 중심 분류 손실이 있는 소프트맥스, 구면, 표준면, AM-sofrmax(cosface) 및 arcface를 포함한 마진 기반.
1. Metric Larning
(1) Contrastive loss
딥러닝에서 메트릭 학습 아이디어를 최초로 적용한 것 중 하나가 DeepID2입니다. DeepID2의 가장 중요한 개선 사항은 동일한 네트워크가 동시에 검증 및 분류를 훈련한다는 것입니다(두 개의 감독 신호 사용). 그 중 검증 손실의 특징 레이어에는 대조 손실이 도입됩니다.
대비 손실은 동일한 카테고리의 거리 최소화뿐만 아니라 다른 카테고리의 거리 최대화도 고려하며, 훈련 샘플의 레이블 정보를 최대한 활용하여 얼굴 인식의 정확도를 향상시킵니다. 따라서 손실 함수는 본질적으로 동일한 사람의 사진을 특징 공간에서 충분히 가깝게 만들고, 다른 사람들은 특정 임계값을 초과할 때까지 특징 공간에서 충분히 멀리 떨어져 있습니다. (약간 삼중항
손실처럼 들립니다.)
대비 손실은 두 개의 신호를 도입하고 두 신호를 통해 네트워크를 훈련시킵니다.
인증 신호의 표현은 다음과 같습니다.
이러한 신호를 기반으로 DeepID2는 사진 한 장 단위로 학습하지 않으며, 단, 이미지 쌍 기준입니다. 두 장의 사진이 입력될 때마다 동일 인물이 아니면 -1입니다.
(2) FaceNet의 삼중 손실입니다.
2017년 Google이 발표한 15개의 FaceNet 기사도 얼굴 인식 분야의 분수령이 된 작품이었습니다. 즉, 인식, 검증, 검색 등의 문제가 모두 특징 공간에서 수행될 수 있다는 점에서 초점을 맞춰야 할 것은 얼굴을 특징 공간에 더 잘 매핑하는 방법입니다. .
Google은 DeepID2를 기반으로 분류 레이어, 즉 Classification Loss를 버리고 Contrastive Loss를 Triplet loss로 개선했습니다. 단 하나의 목적은 더 나은 기능을 학습하는 것입니다.
Triplet 손실의 손실 기능을 직접 게시합니다. 입력은 더 이상 이미지 쌍이 아니라 세 개의 이미지(Triplet), 즉 Anchor Face, Negative Face 및 Positive Face입니다. 앵커와 포지티브 페이스는 같은 인물이고, 네거티브 페이스는 다른 인물이다. 그러면 삼중항 손실의 손실 함수는 다음과 같이 표현될 수 있습니다.
이 공식에 대한 직관적인 설명은 다음과 같습니다. 기능 공간에서 Anchor와 Positive 사이의 거리는 Anchor와 Negative 사이의 거리보다 작고 Margin Alpha를 초과합니다. 그것과 대조 손실의 직관적인 차이는 아래 그림에 나와 있습니다.
(3) Metric 학습의 문제점
위의 두 가지 손실 함수는 매우 효과적이며 사람들의 객관적인 인식과도 일치하지만, 이 방법은. 아직 몇 가지 단점이 있습니다.
2. Metric Learning의 단점을 보완하는 다양한 트릭
(1) Finetune
참고 논문: Deep Face Recognition
'딥 페이스'라는 논문에서 "인식"은 삼중 손실 훈련 속도를 높이기 위해 먼저 소프트맥스를 사용하여 얼굴 인식 모델을 훈련한 다음 최상위 분류 레이어를 제거한 다음 삼중 손실을 사용하여 모델의 특징 레이어를 미세 조정했습니다. 훈련을 가속화하면서 우리는 좋은 효과도 많이 얻었습니다. 이 방법은 삼중항 손실을 훈련할 때 가장 일반적으로 사용되는 방법이기도 합니다.
(2) 삼중항 손실 수정
참고 논문: In Defense of the Triplet Loss for Person Re-Identification
저자는 삼중항 손실의 단점을 언급했습니다. Triplet 손실 훈련에 필요한 삼중항의 경우 앵커(a), 양성(p) 및 음성(n)을 훈련 세트에서 무작위로 선택해야 합니다. 손실 함수의 구동으로 인해 매우 간단한 샘플 조합, 즉 매우 유사한 양성 샘플과 매우 다른 음성 샘플이 선택될 가능성이 매우 높습니다. 네트워크가 단순 샘플에 대해 계속 학습하면 제한됩니다. 네트워크 능력의 정상화. 따라서 나는 삼중항 손실을 수정하고 새로운 트릭을 추가했습니다. 많은 실험을 통해 이 개선된 방법이 매우 잘 작동한다는 것이 입증되었습니다.
Google에서 제공하는 Facenet Triplet Loss 훈련 중에 B Triplet 세트를 선택하면 데이터가 3개의 그룹으로 순서대로 배열되므로 총 3B개의 조합이 있는데 실제로는 이 3B 이미지가 있습니다. 3B만 사용하는 것은 낭비가 될 만큼 효과적인 세 쌍의 조합이 너무 많습니다.
이 논문에서 저자는 TriHard 손실을 제안했습니다. 핵심 아이디어는 삼중 손실을 기반으로 하드 예제 처리를 추가하는 것입니다. 각 훈련 배치에 대해 ID가 있는 P 보행자가 무작위로 선택되고, 각 보행자 A가 무작위로 선택됩니다. K개의 서로 다른 사진, 즉 배치에는 P×K 사진이 포함됩니다. 그런 다음 배치의 각 이미지 a에 대해 가장 어려운 양성 샘플과 가장 어려운 음성 샘플을 선택하여 a로 삼중항을 형성할 수 있습니다. 먼저 a와 동일한 ID를 가진 그림 세트를 A로 정의하고 다른 ID를 가진 나머지 그림 세트를 B로 정의합니다. 그런 다음 TriHard 손실은 다음과 같이 표현됩니다.
. TriHard 손실은 a와 특징 공간의 배치에 있는 각 그림 사이의 유클리드 거리를 계산한 다음 a에서 가장 멀리 있는(가장 덜 유사한) 양성 샘플 p와 a에 가장 가까운(가장 유사한) 음성 샘플 n을 선택합니다. . 삼중항 손실을 계산합니다. 여기서 d는 유클리드 거리를 나타냅니다. 손실 함수를 작성하는 또 다른 방법은 다음과 같습니다.
또한 저자는 라운드에서 몇 가지 실험적인 점을 제시했습니다.
이 방법은 하드 예제를 고려한 후 전통적인 삼중 손실보다 더 좋습니다.
(3) 손실 및 샘플링 방법 수정
참고 논문: Deep Metric Learning via Lifted Structured Feature Embedding
이 논문에서는 먼저 기존 삼중항 방법으로는 장점을 최대한 활용할 수 없다는 점을 제안했습니다. 미니배치 SGD 훈련의 훈련 배치 중 쌍별 거리 벡터를 쌍별
거리 행렬로 창의적으로 변환한 다음 새로운 구조화된 손실 함수를 설계하여 매우 좋은 결과를 얻었습니다. 아래 그림과 같이 Contrast Embedding, Triplet Embedding, Lifted Structured Embedding의 세 가지 방법에 대한 샘플링 다이어그램입니다.
직관적으로, 리프트 구조화 임베딩에는 더 많은 분류 모드가 포함됩니다. 대량의 데이터로 인한 훈련 어려움을 피하기 위해 저자는 이를 기반으로 구조화 손실 함수를 제공합니다. 아래 그림과 같이.
여기서 P는 양성 샘플 집합이고 N은 음성 샘플 집합입니다. 위의 손실 함수와 비교하여 이 손실 함수는 샘플 세트의 문제를 고려하기 시작했음을 알 수 있습니다. 그러나 샘플 쌍 사이의 모든 음의 가장자리가 유용한 정보를 전달하는 것은 아닙니다. 즉, 무작위로 샘플링된 샘플 쌍 사이의 음의 가장자리가 매우 제한된 정보를 전달하는 것은 아닙니다.
위의 구조화된 손실 함수를 통해 손실 함수의 최종 계산에서 가장 유사한 하드 쌍과 가장 덜 유사한 하드 쌍이 고려된다는 것을 알 수 있습니다(즉, 손실 함수에 max를 사용함). 훈련 과정에서 어려운
이웃 정보가 훈련 미니 배치에 추가됩니다. 이러한 방식으로 훈련 데이터는 훈련이 계속됨에 따라 강한 부정과 강한 긍정의 샘플을 검색할 수 있습니다. 하드 샘플도 증가하여 클래스 간 거리를 최대화하고 클래스 내 거리를 최소화하려는 목적도 달성됩니다.
본 글에서는 위의 그림과 같이 메트릭 학습을 수행할 때 무작위로 샘플 쌍을 선택하는 것이 아니라 여러 유형의 샘플을 구별하기 어려운 샘플 쌍을 조합하여 학습합니다. 또한 이 기사에서는 최대값을 찾거나 가장 어려운 단일 부정값을 찾는 과정에서 네트워크가 잘못된 로컬 최적값으로 수렴하게 된다고 언급했습니다. 아마도 이는 기울기가 더 가파르거나 최대값의 잘림 효과 때문일 수 있을 것 같습니다. 경사 불연속성이 너무 많습니다. 저자는 loss
함수를 더욱 개선하여 다음 공식과 같은 완만한 상한을 채택했습니다.
(4) 표본 방법 및 삼중항 손실 추가 수정
참고 논문: Sampling Matters in Deep Embedding Learning
기사에서는 하드 네거티브 샘플의 앵커 거리가 작을 경우 이 샘플링 방법이 노이즈의 영향을 쉽게 받아 훈련 중에 모델이 붕괴될 수 있다고 지적합니다. FaceNet은 한때 세미 하드 네거티브 마이닝 방법을 제안한 적이 있는데, 샘플링된 샘플을 너무 단단하지 않게 만드는 것이었습니다. 그러나 저자의 분석에 따르면 샘플은 샘플 내에서 고르게 샘플링되어야 하기 때문에 하드, 세미하드, 쉬운 샘플을 포함하여 고르게 분산된 네거티브 샘플에서 가장 좋은 샘플링 상태가 되어야 하므로 저자는 새로운 샘플링 방법을 제안한다. 거리 가중 샘플링.
실제로는 모든 샘플을 쌍으로 샘플링하고 거리를 계산한 후 마지막으로 다음 관계식을 사용하여 지점 간 거리의 분포를 얻습니다.
그런 다음 주어진 거리에 따라 위의 방법을 통해 함수 의 역함수를 사용하여 샘플링 확률을 얻을 수 있으며, 이 확률에 따라 각 거리에 필요한 샘플링 비율이 결정됩니다. 앵커가 주어지면 부정적인 예를 샘플링할 확률은 다음과 같습니다.
훈련 샘플은 훈련 기울기와 밀접한 관련이 있으므로 저자는 샘플링 거리, 샘플링 방법 및 데이터 기울기 분산 간의 관계도 플롯했습니다. , 아래와 같이 표시됩니다. 그림에서 볼 수 있듯이 하드 네거티브 마이닝 방법으로 샘플링된 샘플은 모두 분산이 큰 영역에 있습니다. 데이터 세트에 노이즈가 있으면 샘플링이 노이즈의 영향을 쉽게 받아 모델이 붕괴됩니다. 무작위로 샘플링된 샘플은 분산이 낮은 영역에 집중되는 경향이 있어 손실이 매우 작아지지만 현재 모델은 실제로 잘 훈련되지 않습니다. 세미 하드 네거티브 마이닝의 샘플링 범위는 매우 작기 때문에 모델이 매우 일찍 수렴되고 손실이 매우 느리게 감소할 가능성이 있지만 실제로 현재 모델은 잘 훈련되지 않았으며 제안된 방법도 있습니다. 이 문서의 목표는 샘플에서 전체 데이터 세트에 걸쳐 균등하게 달성될 수 있습니다.
저자는 보존 손실과 삼중 손실을 관찰하면서 문제점을 발견했습니다. 즉, 음수 샘플이 매우 단단한 경우 손실 함수가 매우 매끄러워진다는 것입니다. 훈련의 경우 기울기가 작다는 것은 매우 단단한 샘플을 완전히 훈련할 수 없다는 것을 의미하며, 따라서 단단한 샘플의 효과는 더욱 악화됩니다. 따라서 하드 샘플 주변의 손실이 그다지 매끄럽지 않은 경우, 즉 딥러닝에서 자주 사용되는 도함수가 1인 경우(예: relu) 하드 모드는 그래디언트 소멸 문제를 해결합니다. 또한 손실 함수는 양성 샘플과 음성 샘플을 모두 고려하기 위해 삼중 손실을 구현해야 하며, 다양한 데이터 분포에 적응하는 마진 설계 기능도 있어야 합니다. 손실 함수는 다음과 같습니다.
앵커 샘플과 포지티브 샘플 사이의 거리를 포지티브 샘플 쌍 거리라고 합니다. 앵커 샘플과 네거티브 샘플 샘플 사이의 거리를 네거티브 샘플 쌍 거리라고 합니다. 공식의 매개변수 베타는 양수 쌍 사이의 거리와 음수 쌍 사이의 거리 사이의 한계를 정의합니다. 양수 쌍 사이의 거리 Dij가 베타보다 크면 손실이 증가하고 음수 쌍 사이의 거리 Dij는 증가합니다. 쌍이 베타보다 작으면 손실이 증가합니다. A는 샘플의 분리 간격을 제어합니다. 샘플이 양수 쌍일 때 yij는 1이고, 샘플이 음수 쌍일 때 yij는 -1입니다. 아래 그림은 손실함수 곡선을 보여줍니다.
위의 그림을 보면 그라데이션이 매우 단단할 때 사라지는 이유를 알 수 있습니다. 0점에 가까울수록 파란색 선이 점점 더 매끄러워지고 그라데이션이 점점 작아지기 때문입니다. . 또한 저자는 설정을 최적화하고 샘플 편향, 카테고리 편향 및 하이퍼 매개변수를 추가하고 손실 함수를 더욱 최적화했으며 훈련 프로세스에 따라 값을 자동으로 수정할 수 있습니다.
3. 마진 기반 분류
마진 기반 분류는 기능 레이어에서 손실을 직접 계산하는 메트릭 학습과 같이 기능에 강력한 직관적 제한을 적용하지 않습니다. 훈련. 소프트맥스
공식을 수정하여 마진 제한이 기능 계층에 간접적으로 구현되어 네트워크에서 얻은 최종 기능이 더욱 구별됩니다.
(1) Center loss
참고 논문: 심층 얼굴 인식을 위한 차별적 특징 학습 접근법
ECCV 2016의 이 기사에서는 동일한 범주를 함께 압축하고 궁극적으로 더 차별적인 특징을 얻기 위해 얼굴 훈련에서 Softmax Loss를 지원하는 새로운 Loss: Center Loss를 주로 제안합니다. 중심 손실이란 각 범주에 대한 범주 중심을 제공하고 미니 배치의 각 샘플과 해당 범주 중심 사이의 거리를 최소화하여 클래스 내 거리를 줄이는 목적을 달성하는 것을 의미합니다. 아래 그림은 샘플과 클래스 중심 사이의 거리를 최소화하는 손실 함수를 보여줍니다.
은 각 배치의 각 샘플에 해당하는 카테고리 중심입니다. 특성의 차원과 마찬가지로 유클리드 거리를 고차원 다양체 거리로 표현합니다. 따라서 Softmax를 기반으로 중심 손실의 손실 함수는 다음과 같습니다.
중심 손실에 대한 개인적인 이해는 훈련이 진행됨에 따라 클러스터링 기능을 추가하는 것과 같습니다. 샘플은 중심에서 의식적으로 클러스터링됩니다. 각 배치마다 클래스 간의 차이가 더욱 극대화됩니다. 하지만 고차원 특징의 경우 유클리드 거리가 클러스터링의 거리를 반영하지 않기 때문에 이러한 단순한 클러스터링은 고차원에서 더 나은 결과를 얻을 수 없다고 생각합니다.
(2) L-Softmax
원래 Softmax의 목적은 벡터의 곱셈 방식을 벡터의 모듈과 각도의 관계로 변환하는 것입니다. L-Softmax 양의 정수 변수 m을 추가하면 다음을 볼 수 있기를 바랍니다.
생성된 결정 경계가 위의 부등식을 더 엄격하게 제한하고 클래스 내 거리를 더 컴팩트하게 만들고 클래스 간 거리가 더 합리적입니다. 차별화. 따라서 위의 식과 소프트맥스의 식을 바탕으로 L-소프트맥스의 식은 다음과 같이 구할 수 있다.
cos는 감소함수이므로 m을 곱하면 내적이 작아진다. . 마지막으로 훈련을 통해 클래스 간의 거리가 늘어납니다. m의 크기를 조절하면 클래스 내 거리와 클래스 간 거리의 변화를 확인할 수 있습니다. 2차원 그래프는 다음과 같습니다.
클래스 벡터 사이의 각도를 보장하기 위해. 역전파 및 추론 과정에서 만족할 수 있으며 마진 과정을 만족하고 단조로운 감소를 보장할 수 있으므로 새로운 함수 형식이 구성됩니다.
어떤 사람들은 L-Softmax 매개변수 조정이 어렵다고 보고했고, 더 나은 결과를 얻으려면 m을 계속해서 조정해야 합니다.
(3) Normface
참고 논문: NormFace: L2 Hypersphere Embedding for Face Verification
이 논문은 무게와 특징 정규화에 관한 매우 흥미로운 기사입니다. 흥미로운 토론을 많이 했습니다. 기사에서는 구형면이 좋지만 아름답지는 않다고 지적합니다. 테스트 단계에서 Sphereface는 피처 간의 코사인 값으로 유사성을 측정합니다. 즉 각도가 유사성 측정으로 사용됩니다. 그러나 훈련 과정에서 문제가 발생합니다. 훈련 과정에서 손실
함수가 감소하면 가중치 모듈이 점점 더 커지게 됩니다. 따라서 구형면 손실 함수의 최적화 방향은 다음과 같습니다. 실제로 최적화 방향의 일부는 기능의 길이를 늘리는 것입니다. 일부 블로거들은 실험을 진행한 결과 아래 그림과 같이 m이 증가함에 따라 좌표의 규모도 계속해서 증가한다는 사실을 발견했습니다.
따라서 작성자는 최적화 과정에서 기능을 정규화했습니다. 해당 손실 함수도 다음과 같습니다.
W와 f는 모두 정규화된 특성이고 두 개의 내적은 각도 코사인 값입니다. 매개변수 s는 그라데이션 크기의 합리성을 보장하는 수학적 특성 때문에 도입되었습니다. 원본 논문에는 초점이 없는 비교적 직관적인 설명이 있습니다. s는 학습 가능한 매개변수 또는 슈퍼 매개변수로 바뀔 수 있습니다. 논문의 저자는 논문에서 찾을 수 있는 많은 권장 값을 제공했습니다. 실제로 FaceNet의 정규화된 유클리드 거리와 코사인 거리는 통일되어 있습니다.
4. AM-softmax/CosFace
참고 논문: 얼굴 검증을 위한 추가 마진 Softmax
CosFace: 깊은 얼굴 인식을 위한 큰 마진 코사인 손실
위를 보세요 논문에서 한 가지 빠진 것이 있는데, 바로 마진(margin)이거나 마진의 의미가 적기 때문에 AM-softmax에서는 정규화를 기반으로 마진을 도입합니다. 손실함수는 다음과 같습니다.
직관적으로 -m 비율이 작아서 Normface에 비해 손실함수 값이 크므로 마진감이 있습니다. m은 페널티를 제어하는 하이퍼파라미터입니다. m이 클수록 페널티가 강해집니다. 이 방법의 좋은 점은 재현하기 쉽고 매개변수 조정 트릭이 많지 않으며 효과가 매우 좋다는 것입니다.
(1) ArcFace
AM-softmax와 비교했을 때 Arcface가 마진을 도입하는 방식에 차이가 있습니다. AM과 동일하지 않습니다. -softmax와 동일합니까? m은 코사인 안에 있습니다. 기사에서는 위 공식의 최적화를 기반으로 얻은 특징 간의 경계가 더 우수하고 기하학적 해석이 더 강력하다고 지적합니다.
그런데 이렇게 마진을 도입해도 문제가 없을까요? cos(θ+m)이 cos(θ)보다 작아야 하는지 신중하게 생각해보세요.
마지막으로 기사의 그림을 사용하여 이 문제를 설명하고 이 장의 마진 기반 분류 부분을 요약합니다.
이 그림은 Arcface에서 가져온 것입니다. 가로좌표는 피처와 클래스 중심 사이의 각도인 θ입니다. 세로좌표는 손실 함수 분자의 지수 부분 값입니다. ) 값이 작을수록 손실 함수가 커집니다.
분류 기반 얼굴 인식 논문을 많이 읽은 후에는 모두가 손실 함수에 대해 소란을 피우고 있는 것 같다거나, 더 구체적으로 말하면 모두가 타겟 로짓을 설계하는 방법에 대해 논의하고 있다는 느낌을 받으셨을 것입니다. 위 그림에서 - θ 곡선.
이 곡선은 목표에서 벗어난 샘플을 어떻게 최적화할지, 즉 목표에서 벗어난 정도에 따라 얼마나 많은 처벌을 주어야 하는지를 의미합니다. 요약할 두 가지 사항:
1. 너무 강한 제약은 일반화하기 쉽지 않습니다. 예를 들어, Sphereface의 손실 함수는 m=3 또는 4일 때 클래스 내 최대 거리가 클래스 간 최소 거리보다 작다는 요구 사항을 충족할 수 있습니다. 이때 손실함수 값은 매우 크다. 즉, 목표 로짓이 매우 작다. 하지만 이것이 훈련 세트 외부의 샘플로 일반화될 수 있다는 의미는 아닙니다. 너무 강한 제약 조건을 적용하면 모델 성능이 저하되고 훈련이 수렴되기 어려워집니다.
2. 어떤 종류의 샘플을 최적화할지 선택하는 것이 중요합니다. Arcface 기사에서는 θ∈[60°, 90°] 샘플에 너무 많은 처벌을 가하면 훈련이 수렴되지 않을 수 있다고 지적합니다. θ ∈ [30°, 60°]에 대한 샘플을 최적화하면 모델 정확도가 향상될 수 있지만, θ∈[0°, 30°]에 대한 샘플을 과도하게 최적화하면 큰 개선이 이루어지지 않습니다. 각도가 더 큰 샘플의 경우 목표에서 너무 멀리 벗어나므로 강제 최적화로 인해 모델 성능이 저하될 수 있습니다.
이것은 또한 이전 섹션에 남겨진 질문에 대한 답변입니다. 위 그림의 곡선 Arcface는 그 뒤에서 솟아오릅니다. 이는 관련이 없으며 심지어 유익하기까지 합니다. 각도가 큰 단단한 샘플을 최적화하면 이점이 없을 수 있기 때문입니다. 이는 FaceNet의 샘플 선택을 위한 세미 하드 전략과 동일합니다.
마진 기반 분류 확장 읽기
1. 심층 얼굴 인식을 위한 차별적 특징 학습 접근 방식 [14]
2. 컨벌루션 신경망의 큰 마진 소프트맥스 손실 [10]
Sphereface 작성자의 이전 기사인 정규화되지 않은 가중치에서는 소프트맥스 손실에 마진이 도입되었습니다. 또한 Sphereface의 교육 세부정보도 포함됩니다.
얼굴 인식 알고리즘 구현에 대한 설명
이 문서에서 배포한 얼굴 인식 알고리즘 모델은 주로 두 부분으로 구성됩니다.
아래 그림에 표시된 것처럼 전체 알고리즘 구현 프로세스는 오프라인과 온라인의 두 부분으로 나뉩니다. 각 사람을 식별하기 전에 먼저 훈련된 알고리즘을 사용하여 얼굴의 표준 기본 라이브러리를 생성합니다. 기본 데이터베이스 데이터는 modelarts에 저장됩니다. 그런 다음 각 추론 과정에서 이미지 입력은 얼굴 검출 모델과 얼굴 인식 모델을 거쳐 얼굴 특징을 얻은 다음 이러한 특징을 기반으로 유사도가 가장 높은 특징을 기본 라이브러리에서 검색하여 완성됩니다. 얼굴인식과정.
구현 과정에서 Retinaface+resnet50+arcface 기반의 알고리즘을 사용하여 얼굴 이미지의 특징 추출을 완료했습니다. 여기서 Retinaface를 탐지 모델로 사용하고 resnet50+arcface를 특징으로 사용했습니다. 추출 모델.
이미지에는 훈련 실행을 위한 두 개의 스크립트가 있는데, 각각 얼굴 감지 훈련과 얼굴 인식 훈련에 해당합니다.
run_face_detection_train.sh
이 스크립트의 시작 명령은
<span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">sh</span> run_face_detection_train.sh data_path model_output_path
입니다. 여기서 model_output_path는 모델 출력의 경로이고, data_path는 얼굴 감지의 입력 경로입니다. 학습 세트 및 입력 이미지 경로 구조는 다음과 같습니다.
detection_train_data/train/images/label.txtval/images/label.txttest/images/label.txt
run_face_recognition_train.sh
이 스크립트의 시작 명령은
<span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">sh</span> run_face_recognition_train.sh data_path model_output_path
여기서 model_output_path는 경로는 모델 출력이며, data_path는 얼굴 감지 훈련 세트입니다. 입력 경로, 입력 이미지 경로 구조는 다음과 같습니다.
recognition_train_data/cele.idxcele.lstcele.recproperty
run_generate_data_base.sh
시작 명령 스크립트는 다음과 같습니다.
<span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">sh</span> run_generate_data_base.sh data_path detect_model_path recognize_model_path db_output_path
여기서 data_path는 하단 라이브러리 입력 경로이고, discover_model_path는 감지 모델의 입력 경로이고, recognition_model_path는 인식 모델의 입력 경로이고, db_output_path는 기본 라이브러리의 출력 경로입니다.
run_face_recognition.sh
이 스크립트의 시작 명령은 다음과 같습니다.
<span style="color: rgb(111, 66, 193); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">sh</span> run_generate_data_base.sh data_path db_path detect_model_path recognize_model_path
여기서 data_path는 테스트 이미지 입력 경로이고, db_path는 하단 라이브러리 경로이고, discover_model_path는 탐지 모델의 입력 경로, recognition_model_path는 인식 모델의 입력 경로입니다
Huawei Cloud ModelArts에는 모델 훈련과 매개변수 및 모델 훈련 버전 관리에 사용할 수 있는 훈련 작업 기능이 있습니다. . 이 기능은 다중 버전 반복 개발에 참여하는 개발자에게 확실한 도움이 됩니다. 훈련 작업에는 몇 가지 사전 설정된 이미지와 알고리즘이 있습니다. 현재 일반적으로 사용되는 프레임워크(Caffe, MXNet, Pytorch, TensorFlow 포함)와 Huawei 자체 Ascend 칩 엔진 이미지(Ascend-Powered-Engine)에 대한 사전 설정된 이미지가 있습니다.
이 기사에서는 ModelArts의 사용자 정의 이미지 기능을 기반으로 로컬에서 디버깅한 전체 이미지를 업로드하고 Huawei Cloud의 GPU 리소스를 사용하여 모델을 교육합니다.
Huawei Cloud의 ModelArts를 사용하여 웹사이트에 있는 유명 연예인의 데이터를 기반으로 얼굴 인식 모델을 완성하려고 합니다. 이 과정에서 얼굴인식 네트워크는 엔지니어들이 직접 설계한 네트워크 구조이기 때문에 커스텀 이미지를 통해 업로드해야 한다. 따라서 전체 얼굴 훈련 과정은 다음과 같은 9단계로 나뉩니다.
로컬 Docker 환경 구축
Docker 환경은 로컬 컴퓨터에 구축할 수도 있고, Huawei Cloud에서 탄력적 클라우드 서버를 구매하여 Docker 환경을 구축할 수도 있습니다. 전체 프로세스는 공식 Docker 문서를 참조하세요.
https://docs.docker.com/engine/install/binaries/#install-static-binaries
Huawei Cloud에서 기본 이미지 다운로드
공식 웹사이트 지침 URL:
https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0085.html#modelarts_23_0085__section19397101102
먼저 교육을 위해 MXNet 환경을 사용해야 합니다. Huawei Cloud의 해당 환경. 사용자 정의 이미지의 기본 이미지. 공식 홈페이지에서 제공하는 다운로드 명령은 다음과 같습니다.
이 명령에 대한 설명은 훈련 작업 기본 이미지의 사양에서 확인할 수 있습니다.
https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0217.html
스크립트 요구 사항에 따라 cuda9 이미지를 사용하고 있습니다.
공식에서는 Another도 제공합니다. 방법은 docker 파일을 사용하는 것입니다. 기본 이미지의 dockerfile은 훈련 작업 기본 이미지의 사양에서도 찾을 수 있습니다. dockerfile을 참조할 수 있습니다:
https://github.com/huaweicloud/ModelArts-Lab/tree/master/docs/custom_image/custom_base
필요에 따라 맞춤형 미러 환경을 구축하세요
저는 상대적으로 게으른 편이라 아직까지 Dockerfile을 사용하여 이미지를 직접 빌드하지는 않습니다. 나는 다른 접근 방식을 취하고 있습니다!
우리의 요구 사항은 cuda 9 및 일부 관련 Python 종속성 패키지이기 때문에 공식 이미지가 cuda 9를 제공한다고 가정하면 이 튜토리얼을 따르고 훈련 스크립트에 require.txt를 추가할 수 있습니다. 귀하의 요구에 맞는 간단하고 효율적이며 빠른 솔루션! ! ! 다음은 튜토리얼입니다~~
https://support.huaweicloud.com/modelarts_faq/modelarts_05_0063.html
SWR
에 사용자 정의 이미지 업로드 공식 웹사이트 튜토리얼:
업로드 미러링된 페이지에 다음과 같이 나와 있습니다. 파일 압축해제 후 2GB를 초과할 수 없습니다. 하지만 공식적으로 제공되는 기본 이미지는 3.11GB에 불과합니다. 필요한 사전 학습 모델을 추가한 후 이미지는 5GB 이상이므로 페이지를 사용하여 업로드할 수 없으므로 클라이언트를 사용해야 합니다. 이미지를 업로드하려면 먼저 조직을 만들어야 합니다.
제품 설명서를 이해하기 어려운 경우 SWR 페이지에서 이미지 풀/푸시를 시도해 볼 수 있습니다.
여기서 고객에게 로컬 전송 방법을 안내합니다. 이미지를 클라우드에 푸시하는 첫 번째 단계는 창고에 로그인하는 것입니다.
두 번째 단계는 이미지를 가져오는 것입니다.
세 번째 단계는 조직을 수정하고 제품 설명서를 기반으로 생성된 조직 이름을 사용하는 것입니다. 이 단계에서는 로컬 이미지의 이름을 클라우드에서 인식되는 이미지 이름으로 바꿔야 합니다. 자세한 내용은 아래 설명을 참조하세요.
네 번째 단계는 이미지를 푸시하는 것입니다.
이 네 단계에 능숙해지면 이 튜토리얼을 종료하고 클라이언트를 사용하여 업로드할 수 있습니다. . 클라이언트를 사용하여 로그인하고 업로드하세요. 클라이언트 로그인은 임시 docker login 명령을 사용하여 생성할 수 있습니다. 이 페이지는 "내 이미지" -> "클라이언트 업로드" -> "임시 Docker 로그인 명령 생성"에 있습니다.
로컬 docker 환경에서 생성된 이 임시 docker 로그인 명령을 사용하여 로그인합니다. 다음 명령을 사용하여 이미지를 업로드하세요.
Huawei Cloud ModelArts는 사용자가 모델을 교육할 수 있는 교육 작업을 제공합니다. 훈련 작업에서 선택할 수 있는 사전 설정된 이미지와 사용자 정의 이미지가 있습니다. 사전 설정된 이미지에는 시중에 나와 있는 대부분의 프레임워크가 포함되어 있으며 특별한 요구 사항이 없는 경우 이러한 프레임워크의 이미지를 교육에 사용하는 것도 매우 편리합니다. 이 테스트에서는 여전히 사용자 정의 이미지를 사용합니다.
커스텀 이미지에서는 이미지에 고유한 환경을 구성해야 할 뿐만 아니라 훈련 작업이 시작되는 방식을 변경하는 경우 훈련 시작 스크립트도 수정해야 합니다. Huawei Cloud ModelArts 공식 웹사이트에서 가져온 공식 이미지의 /home/work/ 경로에 시작 스크립트 "run_train.sh"가 있습니다. 이 스크립트를 기반으로 사용자 정의된 시작 스크립트를 수정해야 합니다. 가장 주목해야 할 것은
"dls_get_app"입니다. OBS에서 다운로드와 관련된 명령입니다. 다른 부분은 자체 교육 스크립트에 따라 수정됩니다.
훈련 결과나 모델을 OBS에 업로드해야 하는 경우 "dls_get_app"과 "dls_upload_model" 명령을 참조해야 합니다. 교육에서 업로드된 스크립트는 다음과 같습니다.
교육 작업을 디버깅할 때 현재 무료 1시간 V100을 사용할 수 있습니다. ModelArts 교육 작업의 가장 좋은 점 중 하나는 버전 관리가 용이하다는 것입니다. 버전은 실행 중인 매개변수를 통해 학습 스크립트에 전달된 모든 매개변수를 기록합니다. 버전 비교를 사용하여 매개변수를 비교할 수도 있습니다. 또 다른 편리한 점은 특정 버전에 따라 수정이 가능하다는 점인데, 이를 통해 모든 매개변수를 다시 입력하는 단계가 줄어들고 디버깅이 더욱 편리해진다.
훈련 작업에서 훈련이 완료된 후 ModelArts에서 모델을 온라인으로 배포할 수도 있습니다.
현재 얼굴 인식 알고리즘의 최적화는 병목 기간에 도달했지만 기술적인 수준에서는 복잡한 환경에서 얼굴 구조, 얼굴 자세, 연령 변화, 조명 변화의 유사성을 목표로 하며, 따라서 얼굴 인식의 다양한 문제를 여러 알고리즘 기술의 통합을 기반으로 해결하는 것은 보안과 인터넷 분야에서 여전히 큰 시장입니다. 또한, 얼굴 결제가 점진적으로 개선되면서 은행, 쇼핑몰 등에서도 얼굴 인식 시스템이 활용되고 있다. 따라서 얼굴 인식의 보안 문제와 공격 방지 문제도 생체 감지 등 해결해야 할 시급한 문제이다. , 3D 안면인식 등 잠깐만요.
마지막으로 얼굴 인식은 딥러닝에서 비교적 성숙한 프로젝트이며, 그 개발 역시 딥러닝 자체의 기술 개발과 밀접한 관련이 있습니다. 현재 많은 최적화에서 딥러닝의 가장 큰 단점은 해당하는 수학적 계산이 없다는 것입니다. 이론 지원도 매우 제한적이어서 앞으로 딥러닝 알고리즘 자체에 대한 연구도 주목받고 있다.
위 내용은 얼굴인식 알고리즘 기술의 발전 동향을 한 글로 이해해보세요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!