FPGA 기반 컨볼루션 네트워크 구현
요약
본 프로젝트는 FPGA를 활용하여 컨볼루션 네트워크의 추론 가속에 초점을 맞춘 졸업 작품입니다. MatConvNet으로 학습된 SAR 타겟 분류 네트워크를 16비트 고정 소수점 데이터로 변환한 후, Verilog 기반 모델을 설계했습니다. 이 시스템은 이미지당 1ms 미만의 빠른 처리 속도를 보여 다른 플랫폼 대비 우수한 성능을 입증했습니다.
핵심 포인트
- FPGA(veritx-7)를 이용한 CNN 추론 가속 구현
- Matlab/Verilog를 활용하여 하드웨어 모델 설계 및 변환
- 시프트 레지스터와 파이프라인 구조로 성능 최적화 시도
- 16비트 고정 소수점 데이터 타입을 사용하여 정밀도 유지
convolution_network_on_FPGA
The 저장소는 제 졸업 프로젝트의 일부이지만, FPGA에서의 컨볼루션 네트워크 추론 가속에 중점을 두고 있습니다.
설명
이 프로젝트는 ISE 14.7 소프트웨어와 vertix-7 FPGA를 사용하여 구축되었습니다. 특정 가속 전략을 통해 7개 레이어 네트워크의 순방향(forward) 계산을 수행합니다. 먼저, MatConvNet을 사용하여 MSTAR 데이터셋에 SAR 타겟 분류 네트워크를 학습시키고 조기 종료(early-stop)를 사용했습니다. 다음으로, 가중치와 입력을 Matlab이 생성한 COE 파일을 사용하여 FPGA로 변환합니다. 그 후, 순방향 계산을 수행하기 위해 네이티브 Verilog로 작성된 모델을 설계합니다. 이 시스템은 정밀도를 유지하기 위해 16비트 고정 소수점(fix-point) 데이터를 사용합니다. 결과는 이미지당 1ms 미만의 비용으로 다른 컴퓨팅 플랫폼보다 우수한 성능을 입증했습니다.
가속화
FPGA 리소스와 속도 사이의 트레이드오프를 위해, 첫 번째 컨볼루션(conv.) 레이어는 입력과 가중치의 크기가 더 크다는 점을 고려하여 시프트 레지스터 구조를 사용하여 가속합니다. 다른 컨볼루션 레이어들은 파이프라인(pipe-line) 구조만을 사용합니다. m_conv_1로 이름 붙여진 18개의 파일은 첫 번째 컨볼루션 레이어에 18개의 시프트 레지스터가 있음을 나타냅니다.
대역폭의 한계 때문에, 두 번째 컨볼루션 레이어는 채널 그룹화 병렬화(channel-grouping parallelization) 방식을 사용합니다. 저는 서로 다른 리소스 양에 따라 다른 그룹 수(4 대 1)를 사용하는 v7-415t 및 v7-485t FPGA로 비교했습니다. 'ram_ready' 신호가 채널 그룹화와 병합을 제어하는 파일 CNN_top.v에서 이 방식을 확인할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub ML Hardware의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기