Open laymond1 opened 1 year ago
yaml 파일 보고 드는 생각인데 혹시 yolov7-tiny 버전에서 Backbone 이랑 Head ELAN 구조 서로 같은가요?
Tiny ELAN test 코드 Tiny ELAN 포함한 search block
일단 위에 내용대로 같다고 생각하고 TinyELAN block 구현해봤습니다. activation 선택 yaml 파일대로 파싱 가능하고 추가로 기존 yolov7 ELAN block에도 activation 넣을 수 있게 해봤어요
맞음. Tiny 버전에서는 ELAN 블록이 똑같네. 그런데 TinyELAN 블록에서 act을 attribute(self.act=act)로 선언했는데, 이거는 큰 의미가 없을 것 같아 보임. 왜냐하면 Conv의 attribute 안에 act가 있어서.
추가적으로 우리가 TinyELAN을 추가한다면 parse_model 함수에도 TinyELAN을 처리하기 위한 분기가 필요함.
그리고 supernet에서 get_active_subnet 메소드를 보면 subnet을 ELANBlock으로 재정의하는 파트가 있는데 이부분도 이슈로 작용함.
TinyELAN을 추가하기 위한 branch를 master branch 기반으로 feat/{yolov7-tiny-block} branch 와 같은 형태로 만들어서 작업하길 바람.
: 기존 Backbone, Head ELAN이랑 꼬일 수도 있을 것 같아서 TinyELAN은 따로 class 만들어서 정의했음
TinyELAN 파싱 가능하도록 parse_model( ) 업데이트 (완료)
TinyELAN으로 정의된 yolov7-tinyelan.yaml 파일 생성 후 parse_model( )을 통한 파싱 테스트 : yaml 파싱 테스트를 위해서 새로 yolov7-tinyelan.yaml을 만들었는데 관련 이슈 있음 (3번 참고) : 일단은 parse_model()로 TinyELAN이 정의된 yaml 파일 파싱 가능한 것 확인함
(이슈) TinyELAN yaml 명세 문제 : yolov7-tinyelan.yaml 파싱 후 입력을 주었을 때 size 오류 발생. yaml 파일 파싱은 정상적으로 가능하므로 yaml 파일의 channel size 구성이 잘못되어 발생한 것으로 보임. : yaml 파싱 테스트를 위해 만든 yolov7-tinyelan.yaml의 channel size가 제대로 정의되어 있는지 확인 필요
yolov7-tiny의 ELAN 블록의 구조가 다르므로 tiny 버전을 위한 ELAN 블록 정의.
yolov7-tiny.yml에서는 activation function을 설정하기 위한 'act' argument가 필요.