- 흠.. 전체 코드를 보지 않고 말씀하신 내용만⋯
- 오타 발견해주셔서 고맙습니다. 수정했습니다 :)
- 그리고 [mov,mp4,m4a,3gp,3g2,mj2 @ 000001b7⋯
- colab과 vscode모두에서 돌려보았습니다. vsc⋯
- 안녕하세요. 좋은 글 감사합니다 :) 글 중에⋯
- 옙!
- 네~ ^^ 출처만 적어주시면 감사드리겠습니다!
- 안녕하세요 블로그 게시물 잘 보고있습니다.⋯
- 고맙습니다 ^^
- 덕분에 쉽게 이해가 되었습니다. 친절한 설명⋯
- 마지막 동영상을 재생하시면 초룩색 사각형이⋯
- 올려주신 글 보면서 열심히 공부하고 있습니⋯
- keypoint.pt[0], keypoint.pt[1]이 각각 x, y⋯
- 안녕하세요, ORB알고리즘을 처음 공부하는⋯
- 읽어주셔서 고맙습니다 ~
귀퉁이 서재
컴퓨터 비전 - 10. MMDetection 개요 본문

※ 이 글은 권철민 님의 딥러닝 컴퓨터 비전 완벽 가이드 강의를 바탕으로 작성했습니다.
이번 글에는 MMDetection을 간단히 알아보겠습니다.
MMDetection이란?
MMDetection은 PyTorch 기반의 객체 탐지 오픈소스 패키지입니다. COCO 2018 대회에서 우승한 MMDet 팀이 맨 처음 개발했죠. 점차 발전해서 지금은 MMDetection 패키지로 객체 탐지나 세그멘테이션, 분류 등 다양한 딥러닝 작업을 할 수 있습니다. 훈련이나 추론(inference) 코드 외에도 300개 이상의 사전 훈련 딥러닝 모델도 제공합니다.
MMDetection은 여러 장점이 있는 패키지입니다.
- 모듈화 되어서 모듈별로 커스터마이징할 수 있습니다.
- 다양한 모델을 지원합니다.
- 모든 연산을 GPU에서 구동할 수 있어서 빠릅니다.
- 데이터 준비 - config 설정 - 모델 학습/추론으로 이어지는 파이프라인이 간단해서 사용하기 편리합니다.
MMDetection 구조
MMDetection의 모델은 백본(Backbone)과 넥(Neck), 헤드(Head)로 이루어져 있습니다.
- Backbone: 이미지를 피처 맵으로 바꾸는 부분입니다. 피처 추출기(feature extractor)라고 보시면 됩니다. backbone으로는 VGG나 ResNet 네트워크를 주로 사용합니다.
- Neck: backbone과 head를 연결하는 부분입니다. backbone이 만든 피처 맵을 정제/재구성하는 작업을 합니다. head가 피처 맵의 특성을 잘 해석하도록 하기 위해서죠. 가령, FPN(Feature Pyramid Network)이 Neck입니다.
여기서 잠깐! FPN이란 무엇인지 알아보죠. 기존 객체 탐지 모델들은 작은 물체를 제대로 찾지 못한다는 단점이 있습니다. 이 문제를 해결한 기법이 FPN입니다. 작은 객체를 잘 탐지하기 위해서 다양한 크기의 피처 맵을 활용하는 방법으로, 피처 맵을 피라미드처럼 쌓아서 활용합니다. 그래서 이름이 FPN(Feature Pyramid Network)입니다. 피라미드 상위 피처 맵은 추상화된 정보를 담고 있습니다. 그 이유로 작은 물체를 찾기 어렵습니다. 그런데 여러 크기를 갖는 피처 맵을 사용하면 작은 물체까지 쉽게 찾을 수 있습니다. 상위 피처 맵의 추상화된 정보와 하위 피처 맵의 작은 물체에 관한 정보를 효과적으로 결합해서 사용하기 때문이죠. 아래는 FPN의 구조입니다.
- DenseHead (AnchorHead/AnchorFreeHead): 객체 위치 찾기와 분류를 처리하는 부분입니다. Neck의 피처 맵을 사용해서 말이죠.
- RoIHead (BBoxHead/MaskHead): RoI 피처를 입력받아 객체 분류와 경계 박스 회귀(객체 좌표 예측)을 수행하는 부분입니다.
1-stage 모델은 Backbone - Neck - DenseHead 모듈로 구성되며, 2-stage 모델은 여기에 RoIHead 모듈이 추가됩니다.
MMDetection 훈련 파이프라인
MMDetection의 훈련 파이프라인은 다음과 같습니다. 파이프라인의 각 지점마다 Hook이 걸려있습니다. Hook은 해당 지점에서 특정한 이벤트를 수행하는 역할을 합니다. 콜백(callback) 기능이라고 보시면 됩니다. 다음 그림을 보시죠. 예를 들어, 에폭 전에 수행할 이벤트(before_train_epoch)는 DistSamplerHook이 있습니다. 모델 순전파 전에 수행할 이벤트(before_train_iter)는 LrUpdaterHook, IterTimerHook이 있고요. 각 Hook은 config에서 미리 설정할 수 있습니다.
config 설정
MMDetection을 사용할 땐 config를 잘 설정하는 일이 중요합니다. 거의 대부분이 config로 이루어져 있습니다. config를 바탕으로 데이터셋 설정부터 모델 설정, 학습/평가 설정까지 세팅할 수 있죠. 예컨대, 데이터셋은 Dataset Config로, 모델은 Model Config로, 훈련이나 검증, 테스트는 Train/Valid/Test Config로 설정합니다. config를 어떻게 설정하는지는 다음 글에서 실습을 하며 알아보겠습니다.
'딥러닝 컴퓨터 비전' 카테고리의 다른 글
컴퓨터 비전 - 12. Faster R-CNN으로 객체 탐지(동영상 활용) (0) | 2022.06.01 |
---|---|
컴퓨터 비전 - 11. MMDetection에서 사전 훈련 Faster R-CNN으로 객체 탐지 추론 (0) | 2022.05.22 |
컴퓨터 비전 - 10. MMDetection 개요 (2) | 2022.05.18 |
컴퓨터 비전 - 9. R-CNN vs. SPP-net vs. Fast R-CNN vs. Faster R-CNN 개요 (0) | 2022.05.12 |
컴퓨터 비전 - 8. 객체 탐지를 위한 데이터셋: Pascal VOC와 MS COCO (0) | 2022.05.10 |
컴퓨터 비전 - 7. 객체 탐지를 위한 OpenCV 기본 사용법 (5) | 2022.05.08 |
-
Baek Kyun Shin 2022.06.10 17:59 신고 또 방문해주셔서 감사드립니다 ^^ 요즘 프로젝트하는 게 있다보니 포스팅이 늦어지고 있네요 ㅋㅋ 응원 고맙습니다:) 주말 잘 보내시고요~