위키득계정 ↗
기술

ShuffleNet

ShuffleNet기술
분야
경량 합성곱 신경망
주요 연산
점별 그룹 합성곱과 채널 셔플
셔플의 역할
다음 그룹에서 서로 다른 이전 그룹을 만나게 함
주의
셔플 자체는 학습 가능한 합성곱이 아님
ShuffleNet은 점별 그룹 합성곱과 채널 셔플을 이용해 적은 연산 예산에서 시각 인식을 수행하도록 설계한 경량 신경망이다. 채널을 그룹으로 나누어 결합 비용을 줄이면서 그룹 사이의 정보가 흐르도록 채널 순서를 바꾼다.

그룹으로 비용을 줄이기

1×1 합성곱도 채널 수가 많으면 상당한 연산량을 차지한다. 입력과 출력을 여러 그룹으로 나누어 그룹 안에서만 연결하면 비용을 줄일 수 있다. 하지만 같은 분할을 계속 쓰면 서로 다른 그룹 사이의 정보 교환이 제한될 수 있어 추가 구조가 필요하다.

채널을 재배열하는 예제

채널이 (a,b,c,d)이고 이전 그룹이 (a,b), (c,d)라고 하자. 순서를 (a,c,b,d)로 바꾼 뒤 다시 앞뒤 둘씩 그룹을 만들면 다음 그룹은 (a,c), (b,d)가 된다. 각각 이전의 서로 다른 그룹에서 하나씩 받는다. 이 작은 예제에서 재배열은 값을 더하거나 새로운 값을 학습하지 않고 위치만 바꾼다.

결합 비용의 계산

입력과 출력 채널이 각각 16이고 공간 위치 하나에서 1×1 결합을 한다면 전체 연결은 16×16=256개의 곱셈 누산을 쓴다. 같은 크기의 네 그룹으로 나누면 4×4×4=64개다. 이 계산은 그룹 합성곱 부분만 다루며 셔플의 메모리 비용과 다른 층의 계산은 포함하지 않는다.

구조와 실행 성능

초기 ShuffleNet은 깊이별 합성곱과 잔차 연결 등도 조합한다. 각 버전의 블록 구성을 구별하고 한 버전의 설명을 다른 버전에 자동으로 적용하지 않는다. 실제 실행에서는 채널 재배열과 메모리 이동 비용이 중요할 수 있으므로 연산 수만으로 MobileNet 등과 속도의 우열을 정하지 않는다.

관련 문서

MobileNet / 그룹 합성곱 / 깊이별 합성곱 / 점별 합성곱 / 잔차 연결 / 합성곱 신경망