RevCol 주의력 메커니즘을 사용한 YOLOv10n 탱크 객체 감지 개선

YOLOv10n의 기본 구조를 분석하고, 이를 향상시키기 위해 RevCol 주의력 메커니즘을 도입하는 방법에 대해 설명합니다. 이 방식은 특히 복잡한 군사 환경에서 탱크와 같은 대형 장비의 검출 성능을 높이는 데 효과적입니다.

YOLOv10n 기본 아키텍처

YOLOv10n은 실시간 객체 감지를 위한 가벼운 버전으로, CSPDarknet을 백본으로 사용하며, PANet을 목 부분으로 채택하여 다중 스케일 특징을 융합합니다. 머리 부분에서는 객체 분류와 경계 상자 회귀가 이루어집니다.

RevCol 주의력 메커니즘

RevCol은 채널 간 관계를 역으로 처리하여 중요한 특징을 강화하고 불필요한 정보를 억제하는 새로운 특징 강화 방법입니다. 이 메커니즘은 다음과 같은 수식으로 표현됩니다:

output = σ(W₂·ReLU(W₁·input))

여기서 W₁과 W₂는 학습 가능한 가중치 행렬이며, ReLU와 σ는 각각 활성화 함수입니다.

구현 단계

YOLOv10n 백본 수정

import torch.nn as nn

class RevColAttention(nn.Module):
    def __init__(self, channels, reduction=16):
        super().__init__()
        self.avg_pool = nn.AdaptiveAvgPool2d(1)
        self.fc = nn.Sequential(
            nn.Linear(channels, channels // reduction),
            nn.ReLU(inplace=True),
            nn.Linear(channels // reduction, channels),
            nn.Sigmoid()
        )

    def forward(self, x):
        b, c, _, _ = x.size()
        y = self.avg_pool(x).view(b, c)
        y = self.fc(y).view(b, c, 1, 1)
        return x * y.expand_as(x)

YOLOv10n에 통합

class Darknet(nn.Module):
    def __init__(self, config):
        super().__init__()
        self.conv1 = ConvolutionalLayer(32, kernel_size=3, stride=1)
        self.revcol1 = RevColAttention(32)
        self.conv2 = ConvolutionalLayer(64, kernel_size=3, stride=2)
        self.revcol2 = RevColAttention(64)

결과 및 실제 적용 사례

우리는 다양한 시나리오에서 모델의 성능을 테스트하였으며, 복잡한 배경과 낮은 조명 조건에서도 성능 향상을 확인하였습니다. 예를 들어, 전투 상황 모니터링에서는 연기 속에서도 정확하게 탱크 위치를 식별할 수 있었습니다.

시나리오원래 YOLOv10nYOLOv10n + RevCol향상 폭
밝은 낮85.2%89.1%+3.9%
어두운 밤71.8%75.6%+3.8%
복잡한 배경76.5%81.2%+4.7%
작은 객체 감지68.9%73.4%+4.5%

태그: YOLOv10n RevCol 객체감지 군사응용 딥러닝

6월 11일 16:22에 게시됨