박민혀기

Split Learning with YOLOv3 (Split Learning?) 본문

Research

Split Learning with YOLOv3 (Split Learning?)

박민혀기 2024. 10. 8. 23:53

이번 포스팅에서는 현재 연구 중인 Split Learning 관련하여 정리해 보려 한다.

본격적으로 포스팅하기 전에 배경 지식인 Split Learning, YOLO 등에 대해 간단하게 설명할 예정이다.

 

Split Learning이란?

Split Learning이란 데이터 프라이버시를 보호하면서 분산 협업 학습을 가능하게 하는 방법이다.

Split Learning은 크게 두 단계로 나눌 수 있고 각 단계의 특징은 다음과 같다.

  1. 학습 단계(Training Phase)
    • 모델 파라미터를 학습하고 최적화하는 과정
    • 클라이언트와 서버 간에 데이터와 그래디언트를 주고받으며 반복적으로 모델을 개선
    • 데이터 프라이버시를 유지하면서 협력적으로 모델을 훈련
  2. 추론 단계(Inference Phase)
    • 학습된 모델을 사용하여 새로운 데이터에 대한 예측을 수행
    • 클라이언트가 초기 레이어를 처리하고, 중간 결과를 서버로 전송
    • 서버가 나머지 레이어를 처리하여 최종 예측 결과를 생성

여기서 내가 주로 다루게 되는 단계는 추론 단계이다.

(현재 연구에서는 따로 학습이나 파인튜닝을 하지 않고, 이미 학습된 YOLO 모델을 가져다 사용하기 때문에 Split Learning을 적용할 부분이 추론 단계에서 밖에 없기 때문이다).

 

Split Learning의 추론 단계를 잘 설명하고 있는 그림을 보면서 설명하겠다.

사실 추론이나 학습 단계 모두 아래 그림과 거의 비슷한 모습을 나타내고 있음.

Split Learning Model Inference Progress

현재 연구는 클라이언트(라즈베리파이3)와 서버(데스크톱)간 분할 추론이다.

클라이언트에서 촬영된 이미지를 전처리와 모델 초반 부분 추론을 진행하고(그림1), 이후 모델 추론은 서버로 전송되어 마지막 레이어까지 추론을 진행하게 된다.(그림2)

내가 사용했던 YOLOv3는 마지막 레이어까지 진행하게 되면 객체들의 위치와 분류된 레이블을 반환하게 된다.

이론상 이게 전부이다. 실제 구현에서는 다소 복잡하게 느껴졌던 부분이 많지만..

자세한 내용은 이후에 구현 과정에서 다루도록 하겠다.

 

마무리

이렇게 짧게라도 Split Learning 개념에 대해서 살펴보았다.

사실 자세하게 알아야 할게 훨씬 많지만 이론적인 큰 개념들은 위에서 말한 내용이 전부라고 말해도 될 정도로 콘셉트 자체는 매우 단순하다. 본 연구에서는 위 기술을 활용하지만 통신 부분에서 또 다른 내용을 갖고 있기 때문에 두 부분 모두 중요하다고 할 수 있다. 따라서 YOLO에 대한 이해가 굉장히 중요하고, 그렇기 때문에 SL 이해에 도움이 많이 됐던 것 같다.