Легкая сеть Yolov8: Ghostnet, G_ghost, семейная битва Ghostnetv2 (1): Huawei Ghostnet, превосходящая Google MobileNet CVPR2 |
Легкая сеть Yolov8: Ghostnet, G_ghost, семейная битва Ghostnetv2 (1): Huawei Ghostnet, превосходящая Google MobileNet CVPR2 |

1. Сравнение производительности Ghostnet, G_ghost и Ghostnetv2.

Узкое место, представленное в yolov8, объединено с c2f, заменяя все c2f в магистральной сети.

layers

parameters

GFLOPs

kb

YOLOv8s

168

11125971

28.4

21991

YOLOv8_C2f_GhostBottleneckV2s

279

2553539

6.8

5250

YOLOv8_C2f_GhostBottlenecks

267

2553539

6.8

5248

YOLOv8_C2f_g_ghostBottlenecks

195

2581091

6.9

5283

2. Введение в сеть-призрак

бумага: https://arxiv.org/pdf/1911.11907.pdf

Аннотация: Из-за ограничений памяти и вычислительных ресурсов сложно развернуть сверточную нейронную сеть CNN у производителей встраиваемых устройств. Развертывание сверточных нейронных сетей (CNN) на встроенных устройствах затруднено из-за ограниченности памяти и вычислительных ресурсов. Избыточность в картах признаков является важной характеристикой успешных нейронных сетей, но она редко изучается при проектировании архитектуры нейронных сетей. Модуль Ghost для создания большего количества карт объектов из дешевых операций. На основе набора карт внутренних признаков применение ряда линейных преобразований с небольшими затратами для создания множества карт призрачных признаков может полностью раскрыть информацию о внутренних признаках. Предлагаемый модуль Ghost можно использовать в качестве компонента plug-and-play для простой модернизации существующих сверточных нейронных сетей, а узкое место Ghost предназначено для объединения модулей Ghost и последующего легкого создания облегченной сети GhostNet.

В картах признаков, извлеченных с помощью основных глубоких нейронных сетей, богатая и даже избыточная информация обычно обеспечивает полное понимание входных данных. Например, на рисунке 1 показаны некоторые карты объектов входного изображения, сгенерированные ResNet-50, и существует множество похожих пар карт объектов, которые похожи друг на друга.

представил новый Ghost модуль для создания большего количества функций с использованием меньшего количества параметров.Конкретно,Общий сверточный слой в глубокой нейронной сети разделен на две части. Первая часть предполагает обычные свертки,Но их общее количество будет строго контролироваться. Учитывая внутреннюю карту признаков первой части,Затем применяется серия простых линейных операций для создания дополнительных карт объектов. без изменения размера выходной карты объектов,По сравнению с обычными сверточными нейронными сетями,этот Ghost Общее количество параметров и вычислительная сложность, необходимые для модуля, уменьшены.

на основе Ghost модуль, устанавливающий эффективную нейронную архитектуру, а именно GhostNet。首先替换基准神经架构中的原始卷积层以证明 Ghost Затем проверяется достоверность модуля. GhostNets Превосходство по нескольким эталонным наборам данных по зрению.

Используя преимущества модуля Ghost, специально для небольших моделей вводится Ghost Bottlenck, как показано на рисунке 3. Узкое место призрака похоже на базовый остаточный блок в ResNet, который объединяет несколько сверточных слоев и ярлыков. Узкое место «призрака» в основном состоит из сложенных друг на друга модулей-призраков. Первый модуль-призрак действует как уровень расширения для увеличения количества каналов. Коэффициентом расширения становится соотношение количества выходных каналов к количеству входных каналов. Второй призрачный модуль уменьшает количество каналов, чтобы они соответствовали ярлыкам, и тогда ярлыки располагаются между входом и выходом двух призрачных модулей. BN и ReLu применяются после каждого слоя, а ReLU не используется после второго модуля-призрака.

Экспериментальные результаты показывают, что предлагаемый модуль Ghost может снизить вычислительные затраты на общие сверточные слои, сохраняя при этом аналогичную производительность распознавания, а GhostNets может превзойти эффективные глубокие модели SOTA для решения различных задач, такие как MobileNetV3 для быстрого вывода на мобильных устройствах.

3.Yolov8 представляет Ghostnet

3.1 Добавьте ultralytics/nn/backbone/ghostnet.py

Основной код:

Язык кода:javascript
копировать
class GhostNet(nn.Module):
    def __init__(self, cfgs, num_classes=1000, width=1.0, dropout=0.2):
        super(GhostNet, self).__init__()
        # setting of inverted residual blocks
        self.cfgs = cfgs
        self.dropout = dropout

        # building first layer
        output_channel = _make_divisible(16 * width, 4)
        self.conv_stem = nn.Conv2d(3, output_channel, 3, 2, 1, bias=False)
        self.bn1 = nn.BatchNorm2d(output_channel)
        self.act1 = nn.ReLU(inplace=True)
        input_channel = output_channel

        # building inverted residual blocks
        stages = []
        block = GhostBottleneck
        for cfg in self.cfgs:
            layers = []
            for k, exp_size, c, se_ratio, s in cfg:
                output_channel = _make_divisible(c * width, 4)
                hidden_channel = _make_divisible(exp_size * width, 4)
                layers.append(block(input_channel, hidden_channel, output_channel, k, s,
                                    se_ratio=se_ratio))
                input_channel = output_channel
            stages.append(nn.Sequential(*layers))

        output_channel = _make_divisible(exp_size * width, 4)
        stages.append(nn.Sequential(ConvBnAct(input_channel, output_channel, 1)))
        input_channel = output_channel

        self.blocks = nn.Sequential(*stages)

        # building last several layers
        output_channel = 1280
        self.global_pool = nn.AdaptiveAvgPool2d((1, 1))
        self.conv_head = nn.Conv2d(input_channel, output_channel, 1, 1, 0, bias=True)
        self.act2 = nn.ReLU(inplace=True)
        self.classifier = nn.Linear(output_channel, num_classes)
        self.channel = [i.size(-1) for i in self.forward(torch.randn(1, 3, 640, 640))]

    def forward(self, x):
        x = self.conv_stem(x)
        x = self.bn1(x)
        x = self.act1(x)
        x = self.blocks(x)
        x = self.global_pool(x)
        x = self.conv_head(x)
        x = self.act2(x)
        x = x.view(x.size(0), -1)
        if self.dropout > 0.:
            x = F.dropout(x, p=self.dropout, training=self.training)
        x = self.classifier(x)
        return x


def ghostnet(**kwargs):
    """
    Constructs a GhostNet model
    """
    cfgs = [
        # k, t, c, SE, s
        # stage1
        [[3, 16, 16, 0, 1]],
        # stage2
        [[3, 48, 24, 0, 2]],
        [[3, 72, 24, 0, 1]],
        # stage3
        [[5, 72, 40, 0.25, 2]],
        [[5, 120, 40, 0.25, 1]],
        # stage4
        [[3, 240, 80, 0, 2]],
        [[3, 200, 80, 0, 1],
         [3, 184, 80, 0, 1],
         [3, 184, 80, 0, 1],
         [3, 480, 112, 0.25, 1],
         [3, 672, 112, 0.25, 1]
         ],
        # stage5
        [[5, 672, 160, 0.25, 2]],
        [[5, 960, 160, 0, 1],
         [5, 960, 160, 0.25, 1],
         [5, 960, 160, 0, 1],
         [5, 960, 160, 0.25, 1]
         ]
    ]
    return GhostNet(cfgs, **kwargs)

我正在参与На третьем этапе специального тренировочного лагеря Tencent Technology Creation 2023 года будет проводиться конкурс сочинений. Соберите команду, чтобы выиграть приз!

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose