DAMO 아카데미의 오픈소스 저비용 대규모 분류 프레임워크 FFC
문서 링크: https://arxiv.org/pdf/2105.10375.pdf
응용 프로그램 및 코드:
- https://www.php. cn/link/c42af2fa7356818e0389593714f59b52
- https://www.php.cn/link/60a6c4002cc7b29142def8871531281a
Background
이미지 분류는 현재 가장 성공적인 AI입니다. 실용적인 응용 기술 중 하나가 사람들의 일상 생활에 통합되었습니다. 이미지 분류, 이미지 검색, OCR, 콘텐츠 검토, 인식 인증 및 기타 분야와 같은 대부분의 컴퓨터 비전 작업에 널리 사용됩니다. 일반적인 합의는 다음과 같습니다. "데이터 세트가 더 크고 ID가 더 많으면 적절하게 훈련되면 해당 분류 작업의 효과가 더 좋아질 것입니다." 그러나 수천만 개, 심지어 수억 개의 ID에 직면했을 때 현재 널리 사용되는 DL 프레임워크로는 이러한 초대형 분류 훈련을 저렴한 비용으로 직접 수행하기가 어렵습니다.
이 문제를 해결하는 가장 직관적인 방법은 클러스터링을 통해 더 많은 그래픽 카드 리소스를 소비하는 것이지만, 그럼에도 불구하고 대규모 ID 하의 분류 문제는 여전히 다음과 같은 문제를 갖게 됩니다.
1) 비용 문제 : 분산 훈련 프레임워크 + 대용량 데이터의 경우 메모리 오버헤드, 다중 시스템 통신, 데이터 저장 및 로딩이 더 많은 리소스를 소비하게 됩니다.
2) 롱테일 문제: 실제 시나리오에서 데이터 세트가 수억 개의 ID에 도달하면 대부분의 ID에 있는 이미지 샘플 수가 데이터의 롱테일 분포가 매우 작은 경우가 많습니다. 이는 매우 명백하며 직접적인 학습을 통해 더 큰 데이터를 얻는 것은 어렵습니다.
이 기사의 나머지 장에서는 초대형 분류 프레임워크를 위한 기존 솔루션과 저비용 분류 프레임워크 FFC의 해당 원리 및 요령에 중점을 둘 것입니다.
방법
방법을 소개하기 전에 이 기사에서는 먼저 현재 초대형 분류의 주요 과제를 검토합니다.
과제 포인트 1: 여전히 비용이 높습니다
ID 수가 많을수록 분류가 많을수록 다음 개략도에 표시된 것처럼 컴퓨터의 메모리 요구 사항이 커집니다. 비디오 메모리가 클수록 더 많은 시스템 카드가 필요하고 비용이 높을수록 해당 카드의 비용도 높아집니다. 다중 시스템 협업을 위한 하드웨어 인프라. 동시에 분류 ID의 수가 매우 큰 규모에 도달하면 분류기의 마지막 레이어에서 주요 계산량이 낭비되고 뼈대 네트워크에 소요되는 시간은 무시할 수 있습니다.
실제 시나리오에서 대부분의 수억 개의 ID에는 이미지 샘플이 거의 없으며 롱테일 데이터 분포가 매우 분명합니다. , 직접 훈련은 수렴하기 어렵습니다. 동일한 가중치로 훈련하면 롱테일 샘플이 압도되고 충분히 학습되지 않습니다. 현재, 불균형 표본이 일반적으로 사용됩니다. 이 연구 주제에 대해 참조로 사용할 수 있는 방법이 많이 있습니다. 간단한 초대형 분류 프레임워크에 통합하는 데 더 적합한 방법은 무엇입니까? 위의 두 가지 과제에 대해 먼저 기존의 실행 가능한 솔루션을 살펴보고 위의 두 가지 과제를 잘 해결할 수 있는지 살펴보겠습니다.
실행 가능한 방법 1: 메트릭 학습
실행 가능한 방법 2: PFC 프레임워크
가능한 방법 3: VFC 프레임워크
본 논문의 방법: FFC 프레임워크
대규모 분류를 위해 FC로 학습할 때의 손실 함수는 다음과 같습니다. :
모든 역전파 프로세스에서 모든 클래스 센터가 업데이트됩니다.
그러나 FC가 너무 크므로 직관적인 아이디어는 클래스의 특정 비율을 합리적으로 선택하는 것입니다. center 즉, Vj는 다음과 같이 1입니다. Part:
위의 동기는 다음과 같은 예비 계획으로 이어집니다.
우선, 롱테일의 영향을 해결하기 위해 , 이 기사에서는 id 샘플링을 기반으로 하는 id_loader 및 인스턴스 샘플링을 기반으로 하는 두 개의 로더를 소개합니다. 각 epoch마다 샘플이 많은 클래스와 샘플이 적은(few-shot) 클래스는 학습의 기회를 가질 수 있습니다.
둘째, 훈련이 시작되기 전에 샘플의 일부를 id 그룹에 보냅니다. 여기서는 id 샘플의 10%가 그룹에 들어간다고 가정합니다. 이때 갤러리에서는 임의의 매개변수를 사용합니다.
그런 다음 훈련이 시작되면 배치 샘플이 하나씩 프로브 넷으로 들어갑니다. 그런 다음 각 배치의 샘플에는 두 가지 상황이 있습니다. 1.) 그룹에 이 샘플과 동일한 ID를 가진 기능이 있습니다. 2.) 그룹에 유사한 샘플의 기능이 없습니다. 이 두 가지 경우에 대해 각각 기존 ID와 새 ID라고 부릅니다. 기존 샘플의 경우 특징과 그룹의 특징을 이용하여 내적을 하고, 라벨과 함께 교차 엔트로피 손실 함수를 계산한 후 반환합니다. 새로운 샘플의 경우 그룹 내 샘플과의 코사인 유사성을 최소화합니다.
마지막으로 기존 수업 센터 가중치 부여 원칙에 따라 그룹 내 기능이 업데이트되고 새로운 수업 센터로 대체됩니다. 갤러리 넷의 경우 이동 평균 전략을 사용하여 프로브의 매개변수를 점진적으로 업데이트합니다.
본 논문의 방법: 트릭 소개
1.) 도입된 ID 그룹의 크기는 조정 가능한 매개 변수이며 일반적으로 기본값은 30,000입니다.
2.) 안정적인 훈련을 달성하기 위해 moco 클래스 방법을 참조하고 해당 수렴 조건은 다음과 같습니다.
실험 결과
1.
2.SOTA 방식 효과 비교
3. 비디오 메모리와 샘플 처리량 비교
위 내용은 DAMO 아카데미의 오픈소스 저비용 대규모 분류 프레임워크 FFC의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Java 프레임워크에 대한 상용 지원의 비용/성능 평가에는 다음 단계가 포함됩니다. 필요한 보증 수준과 SLA(서비스 수준 계약) 보장을 결정합니다. 연구지원팀의 경험과 전문성. 업그레이드, 문제 해결, 성능 최적화와 같은 추가 서비스를 고려하십시오. 위험 완화 및 효율성 향상을 기준으로 비즈니스 지원 비용을 평가합니다.

경량 PHP 프레임워크는 작은 크기와 낮은 리소스 소비를 통해 애플리케이션 성능을 향상시킵니다. 그 특징은 다음과 같습니다: 작은 크기, 빠른 시작, 낮은 메모리 사용량, 향상된 응답 속도 및 처리량, 리소스 소비 감소 실제 사례: SlimFramework는 500KB에 불과한 REST API를 생성하며 높은 응답성과 높은 처리량을 제공합니다.

PHP 프레임워크의 학습 곡선은 언어 숙련도, 프레임워크 복잡성, 문서 품질 및 커뮤니티 지원에 따라 달라집니다. PHP 프레임워크의 학습 곡선은 Python 프레임워크에 비해 높고 Ruby 프레임워크에 비해 낮습니다. Java 프레임워크에 비해 PHP 프레임워크는 학습 곡선이 적당하지만 시작하는 데 걸리는 시간이 더 짧습니다.

Golang 프레임워크에서는 명확하고 포괄적인 문서를 작성하는 것이 중요합니다. 모범 사례에는 Google의 Go 코딩 스타일 가이드와 같은 확립된 문서 스타일을 따르는 것이 포함됩니다. 제목, 부제, 목록 등 명확한 조직 구조를 사용하고 탐색 기능을 제공하세요. 시작 안내서, API 참조 및 개념을 포함하여 포괄적이고 정확한 정보를 제공합니다. 코드 예제를 사용하여 개념과 사용법을 설명합니다. 문서를 계속 업데이트하고, 변경 사항을 추적하고, 새로운 기능을 문서화하세요. GitHub 문제 및 포럼과 같은 지원 및 커뮤니티 리소스를 제공합니다. API 문서와 같은 실용적인 예제를 만듭니다.

애플리케이션 시나리오를 기반으로 최고의 Go 프레임워크를 선택하세요. 애플리케이션 유형, 언어 기능, 성능 요구 사항 및 생태계를 고려하세요. Common Go 프레임워크: Gin(웹 애플리케이션), Echo(웹 서비스), Fiber(높은 처리량), gorm(ORM), fasthttp(속도). 실제 사례: REST API(Fiber) 구축 및 데이터베이스(gorm)와 상호 작용. 프레임워크를 선택하세요. 주요 성능을 위해서는 fasthttp를 선택하고, 유연한 웹 애플리케이션을 위해서는 Gin/Echo를, 데이터베이스 상호작용을 위해서는 gorm을 선택하세요.

Go 프레임워크 학습에는 다섯 가지 오해가 있습니다. 프레임워크에 대한 과도한 의존과 제한된 유연성입니다. 프레임워크 규칙을 따르지 않으면 코드를 유지 관리하기가 어려워집니다. 오래된 라이브러리를 사용하면 보안 및 호환성 문제가 발생할 수 있습니다. 패키지를 과도하게 사용하면 코드 구조가 난독화됩니다. 오류 처리를 무시하면 예기치 않은 동작과 충돌이 발생합니다.

다양한 분야에 대한 Java 프레임워크 학습 로드맵: 웹 개발: SpringBoot 및 PlayFramework. 지속성 계층: Hibernate 및 JPA. 서버 측 반응형 프로그래밍: ReactorCore 및 SpringWebFlux. 실시간 컴퓨팅: ApacheStorm 및 ApacheSpark. 클라우드 컴퓨팅: Java용 AWS SDK 및 Google Cloud Java.

Go 프레임워크 개발에서 일반적인 과제와 해결 방법은 다음과 같습니다. 오류 처리: 관리에는 오류 패키지를 사용하고 중앙에서 오류를 처리하려면 미들웨어를 사용합니다. 인증 및 권한 부여: 타사 라이브러리를 통합하고 사용자 정의 미들웨어를 생성하여 자격 증명을 확인합니다. 동시 처리: 고루틴, 뮤텍스 및 채널을 사용하여 리소스 액세스를 제어합니다. 단위 테스트: 격리를 위해 getest 패키지, 모의 및 스텁을 사용하고, 충분성을 보장하기 위한 코드 적용 도구를 사용합니다. 배포 및 모니터링: Docker 컨테이너를 사용하여 배포를 패키징하고, 데이터 백업을 설정하고, 로깅 및 모니터링 도구를 사용하여 성능과 오류를 추적합니다.
