견적 및 전화 요청

지원

컴퓨터 비전 작업 대회에 일반적으로 사용 가능한 프레임워크 구축

2020년 겨울

중국 Qishen Ha

머신러닝 엔지니어

2023년부터 마켓에 출시되는 제품의 경우, 로고와 로고 위치 변경이 예정되어 있습니다. 이에 실제 제품은 사진 및 영상 속 이미지와 다를 수 있습니다.

Z by HP 데이터 사이언스 글로벌 앰배서더인 Qishen Ha의 콘텐츠는 HP 제품 지원을 통해 제작되었습니다.

 

안녕하세요, Qishen Ha입니다. 저는 현재 LINE Corp에서 머신러닝 엔지니어로 일하고 있으며, 전 세계 Kaggle 그랜드 마스터 랭킹 5위에 올랐습니다. 이미지 분류나 시멘틱 세그멘테이션, 개체 감지와 같은 컴퓨터 비전 문제를 중점적으로 다루고 있습니다.

 

Z by HP 데이터 사이언스 글로벌 앰배서더로 선정되어 무척 영광입니다. 이런 기회를 주시고 HP Z8 G4 워크스테이션과 ZBook Studio를 지원해 주신 Z by HP에 감사할 따름이에요. 덕분에 Kaggle 경진 대회에서 훨씬 더 나은 경쟁을 펼칠 수 있었습니다.

 

오늘은 제가 경진 대회, 특히 컴퓨터 비전 대회에서 사용했던 코드 프레임워크를 소개해 드리려고 해요.

모두와 공유하는 기록

지난 몇 년간 저는 기본 모델 또는 상위 솔루션의 최소 버전으로 훈련한 CNN 훈련 기록을 공개해 왔습니다. 이렇게 한 이유는 정규 버전이 코드 및 훈련 측면에서 너무 규모가 크기 때문이었어요.

이 기록을 보신 분이 있다면 다른 데이터를 사용하고 다른 작업을 위해 훈련한 경우에도 모두 같은 프레임워크를 사용했다는 점을 눈치채셨을 텐데, 이를 일반 프레임워크라고 합니다. 이러한 프레임워크를 사용하면 새로운 대회에 참가할 때 최대한 빠르게 새 기준 모델을 훈련할 수 있고, 이후 개선하거나 유지 관리하기도 아주 쉬워집니다.

 

이제 기록에 나와 있는 프레임워크를 간략히 설명하고 각 모듈을 소개하겠습니다. 제가 자주 사용해 온 프레임워크인데, 작업하기 무척 쉽습니다. 이미 편하게 사용하고 있는 프레임워크가 있다면 굳이 제 프레임워크를 따라 하실 필요는 없습니다. 그냥 영감을 얻는 용도로만 참고해 주세요.

프레임워크 소개

제 프레임워크의 토대인 일반 모듈은 다음과 같습니다.

 

  • 데이터 세트
  • 증강
  • 모델
  • 손실 함수

 

이제 하나씩 소개해 드리겠습니다.

데이터 세트는 데이터를 읽는 방법, 데이터를 사전 처리하는 방법, 레이블을 읽는 방법 및 처리하는 방법을 정의합니다. 이 그림은 데이터 세트의 가장 기본적인 코드 구조 중 하나를 보여 줍니다

간단한 이미지 분류 작업인데, cv2를 사용해서 이미지를 메모리로 읽은 후 증강을 거쳐 사전 처리한 다음 최종적으로 처리된 이미지와 레이블을 반환합니다.

 

무척 일반적인 코드 스타일이어서 약간만 수정하면 이미지 분할 작업에 응용할 수 있습니다. 다음 그림에는 가장 중요한 수정 사항이 나와 있습니다.

마지막으로, 마스크의 데이터 유형과 치수를 조정하고 row.label을 교체하여 반환합니다.

 

이렇게 하면 데이터 세트를 쉽게 수정하고, 원하는 데이터를 읽고, 필요한 대로 사전 처리할 수 있습니다.

데이터 세트에 사용하려는 증강 메서드를 포함하는 'transforms'라는 매개 변수가 있는데, 이 메서드는 증강 섹션에서 정의하겠습니다.

 

다음 그림을 통해 증강이 무엇인지 간단하게 확인할 수 있습니다. 훈련 시 좌우 및 크기 조정을 사용하며, 검증 시에는 크기 조정만 사용합니다.

증강

아래 그림과 같이 필요한 경우 증강 방법을 간단히 추가할 수 있습니다.

증강

여기에서는 훈련 과정에 무작위 회전과 블러를 추가했습니다.

이 하위 섹션에서는 모델의 구조를 정의해야 합니다. 가장 간단한 예로 이미지 분류 작업용 모델 구조를 참고해 보겠습니다.

 

이 그림에 나와 있는 대로 보통 이미지 분류 작업에서는 EfficientNet과 같은 ImageNet 사전 훈련 모델을 백본으로 삼고, 클래스 1,000개의 자체 선형 레이어(ImageNet 데이터 세트는 클래스 1,000개의 데이터 세트)를 삭제하고, n 클래스의 자체 선형 레이어를 추가합니다.

FC의 마지막 레이어 앞에 드롭아웃을 추가하고 싶다면 다음과 같이 간단히 작성할 수 있습니다.

또 다른 일반적인 시나리오는 입력 이미지가 RGB 3채널이 아니라 4채널 이상일 수 있다는 것입니다. 이 경우, 아래의 이미지처럼 백본의 첫 번째 합성곱 레이어의 입력을 원하는 대로 변경하면 됩니다.

여기서 n_ch는 입력으로 사용하는 채널 수입니다. 이렇게 작성하면 입력 채널의 수를 원하는 대로 변경할 수 있고, 첫 번째 합성곱 레이어에 ImageNet의 사전 훈련된 가중치를 계속 사용할 수 있습니다.

손실 함수를 정의하는 가장 쉽고, 제일 일반적인 방법은 다음과 같습니다.

그러나 다음과 같이 복잡한 구조로 변경하기도 아주 간단합니다.

이 손실 함수에서는 처음 4개의 출력에 교차 엔트로피 손실을 적용하고, 나머지 출력에는 BCE 손실을 적용하며, 두 손실의 균형을 맞추려 손실 가중치를 추가합니다. 논리는 복잡해지지만, 코드를 많이 변경할 필요가 없어집니다. 이 손실을 활용하여 RANZCR 대회에서 우승을 차지했습니다.

결론

지금까지 제 프레임워크의 4가지 기본 모듈을 살펴보았습니다. 모두 확장하기가 정말 쉽도록 설계되었고, 이 4가지가 합쳐져 제가 사용하는 프레임워크를 형성합니다. 이 프레임워크를 실험에 사용할 때는 매번 과정을 공책에 기록하는데, 이렇게 하면 결과를 분석하고 재현하는 데 유용합니다.

 

Kaggle 홈페이지에서 공유한 기록을 통해 자세한 내용을 확인해 보세요. 여기에서 한층 유용한 정보를 찾으실 수 있습니다.

질문이 있으신가요?
세일즈 서포트에 문의하세요. 

소셜 미디어에서 Z by HP 팔로우

Instagram

X

YouTube

LinkedIn

Facebook

제품 선택에 도움이 필요하신가요?

전화 요청

제품에 대한 지원이 필요하신가요?

지원 페이지로 이동

고지 사항

  1. 제품은 표시된 이미지와 다를 수 있습니다.

     

    제품 이미지는 단지 설명을 위한 것으로 나라별로 제품 가용성과 색상이 다를 수 있습니다.

     

    본 문서에 포함된 정보는 예고 없이 변경될 수 있습니다. HP 제품 및 서비스에 대한 유일한 보증 사항은 해당 제품 및 서비스와 함께 제공되는 보증서에 명시되어 있습니다. 여기에 설명된 내용 중 어느 것도 추가적인 보증을 제공하지 않습니다. HP는 여기에 포함된 기술적, 편집상 오류나 누락에 대해 책임을 지지 않습니다.