Фотки на кс го 64 на 64: 64×64 — Аватары CS — Картинки и аватары CS

Содержание

Системные требования CS GO: минимальные и рекомендуемые

Привет всем любителям 3D-шутеров. Безусловно, можно утверждать, что первенство в этом жанре игр на протяжении нескольких лет занимает легендарная стрелялка – Counter-Strike, а точнее, ее последняя версия Global Offensive. Для достижения больших результатов требуется правильная настройка игры, а также картинка со стабильно высоким FPS.

Ведь там, где все решают доли секунды, о зависаниях и лагах не может идти и речи. Сегодня мы расскажем вам какие системные требования CS GO, а также, как быть тем, кто является владельцами слабых компьютеров и ноутбуков, но они тоже рвутся в мир виртуальных баталий.

Необходимый минимум

На протяжении долгих лет, серии CS были весьма нетребовательны к системам пользователей, однако, последняя версия все изменила. Разработчики полностью переработали часть Global Offensive: новая графика, новый движок, детализированные карты – подробнее об этом читайте в обзоре CS: GO – все это повлияло на требуемые характеристики ПК.

Эти параметры рекомендует сервис Steam, который является одним из официальных распространителей игры:

  • OC: Windows 7\Vista\XP.
  • Процессор: Intel Core 2 Duo E6600, AMD Phenom X3 8750 или выше.
  • Оперативная память: 2 Гб.
  • Видеокарта: Видеокарта должна быть на 256 Мб или выше.
  • DirectX: Версии 9.0c.
  • Место на диске: 8 Гб.

Компания Valve, которая является разработчиком CS: GO, хорошо поработала над оптимизацией. Конечно, это позволят запустить КС даже на очень слабых ПК и ноутбуках, однако, это всего лишь необходимый минимум.

Пользователи должны вручную выставлять настройки, отключить сглаживания, тени, синхронизацию, и все дополнительные эффекты.

Что касается ноутбуков, то слабым местом становится отдельная видеокарта, ее там попросту может не быть. Производители позаботились о бюджетном сегменте устройств, выпустив линейки процессоров, в которые уже встроено графическое ядро.

Такое решение является идеальным для офисных задач, но не для игр. Конечно, вы сможете запустить CS, но возможность появления лагов и зависаний весьма высока. Поэтому при выборе ноутбуков, обращайте внимание на наличие внешней (дискретной) видеокарты.

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

Рекомендуемые параметры

КС – игра, которая требует стабильной картинки, с большим количеством кадров. Там, где секунда промедления может решить исход раунда, нужен мощный, производительный компьютер.

Минимальный ФПС, который необходим, для комфортного гейминга, равен 100 кадрам в секунду. Тут следует остановиться и разобраться поподробнее, что же такое ФПС.

Frames per Second (FPS) – это количество сменяемых кадров за секунду. Этот параметр определяет производительность системы в графических приложениях. Соответственно, чем выше это значение, тем более плавно будет изменяться картинка на экране.

Для получения высокого значения показателя FPS на максимальных настройках требуется весьма производительные внутренности ПК:

  • OC: Windows 7\Vista\XP.
  • Процессор: Intel i3-4130, AMD FX 4100 или выше.
  • Оперативная память: 8 Гб.
  • Видеокарта: Графическая карта с объёмом памяти от 1 Гб.
  • DirectX: Версии 9.0c.
  • Место на диске: 10 Гб.

Также стоит позаботиться о хорошем интернет-соединении, так как игра является клиент-серверной. Задержка между компьютером и удаленным сервером, так называемый ping, не должна превышать 100 миллисекунд.

Геймерам, которых не устраивают их текущие системы, остается одно – покупка современных комплектующих. Уж они-то раскроют весь внутренний мир знаменитой, Counter-Strike: Global Offensive.

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

Итог

Последняя часть легендарной Counter-Strike вышла довольно требовательной к характеристикам PC. Обладателям старых компьютеров придется настроить игру, установив все на минимум, тем самым лишив себя какого-либо удовольствия от графических эффектов. Но главное атмосфера, которая присутствует в КС.

На этом на сегодня все. Надеемся, наша статья помогла вам, и каждый нашёл здесь ответы на вопросы, по выбору оптимальной игровой системы для КС. Подписывайтесь на обновления блога. Пишите свои комментарии. Тренируйтесь и выигрывайте. Всем пока.

Команда Gamebizclub

Параметры запуска для CS:GO

В этой статье мы опишем параметры запуска CS:GO. Для того чтобы установить эти опции, стоит запустить Steam, перейти в библиотеку игр и правым кликом мыши нажать на Counter-Strike: Global Offensive, а затем перейти в её свойства. Для владельцев Non-Steam версии: Откройте 7Launcher, нажмите на кнопку с шестерёнкой и вам будет доступно поле опций запуска игры.

В этих полях мы и будем вводить параметры запуска для CS:GO. В начале разберём наиболее популярные команды, а далее приведём примеры профессиональных геймеров и набор опций для тех, у кого малопроизводительные ПК (менее 100 FPS на большинстве карт).

Список основных параметров запуска

  • -console – активирует консоль разработчика
  • -novid — убирает интро-ролик приветствия
  • -freq «число» – задает частоту обновление картинки на экране, к примеру: 60 (-freq «60»). Это соответствует монитору с 60 Гц
  • +exec «название .cfg файла» – автоматически загружает заданную конфигурацию
  • -high — запускает игру с наивысшим приоритетом (не советуем если слабый CPU)
  • -low — запускает игру с наименьшим приоритетом (актуально для снижения энергопотребления)
  • -full — игра запускается в полноэкранном режиме
  • -windowed — игра запускается в оконном режиме
  • -noborder – игра запускается в режиме полного экрана без рамки
  • -w — установить ширину экрана в пикселях (1920 px)
  • -h —  установить длину экрана в пикселях (1080 px)
  • -language russian – запускает игру на русском языке, применяется только когда игру имеется необходимость запустить на другом языке, например, на английском (english) или украинском (ukrainian).
  • +rate 120000 – задает предельное число бит в секунду, которое сервер сможет принять
  • +cl_cmdrate 64 — задаёт число пакетов в секунду отправляемых на хост
  • +cl_updaterate 64 – задаёт число обновления пакетов в секунду принимаемых от хоста
  • -tickrate 128 — частота обмена от хоста клиенту в секунду (актуально только для хоста)
  • +ex_interpratio 1 — задает автоматическое определение интерпретации
  • -noforcemspd – задать системные настройки скорости мыши
  • -noforcemaccel – полностью отключить акселерацию мышки
  • -noforcemparms – установить системные настройки кнопок мышки
  • -threads – задать число используемых потоков ЦП (CPU)
  • -condebug — сохраняет в файл содержимое консоли (расположен в папке /csgo/console.log)
  • -toconsole — запускает игру посредством консоли,  если в опции +map не была указана карта
  • -nosound — полностью отключает звук
  • -nojoy — отключает поддержку игровых манипуляторов
  • -dev — активирует режим разработчика, выключает автоматическую подгрузку карт в фоновом режиме
  • -noipx — не подгружает IPX соединения
  • -autoconfig — сбрасывает все настройки до стандартных, игнорирую установки команд из cfg файлов
  • -processheap — исправляет проблему снижения FPS через определенное время после запуска игры
  • -nocrashdialog — выключает отображение некоторых оповещений об ошибках чтения памяти

 

Параметры запуска для CS:GO от профессиональных игроков:

  • «Edward» (Иоанн Сухарев): -novid -freq 120 +fps_max 0 +cl_interp 0 +cl_interp_ratio 1
  • «GuardiaN» (Ладислав Ковач): -noforcemaccel -noforcemspd -noforcemparms -freq 120 -tickrate 100
  • «Zeus» (Даня Тесленко): -noforcemspd -noforcemaccel -noforcemparms -freq 120 -console
  • «starix» (Сергий Ищук): -novid -freq 120 -tickrate 128
  • «seized» (Денис Костин): -freq 144 -tickrate 128 -processheap -novid -threads 8 -m_rawinput 0
  • » s1mple» (Александр Костылев): -novid -freq 144 +rate 128000 +cl_interp 0. 01 +cpu_frequency_monitoring 1 +engine_no_focus_sleep convar 1 cl_obs_interp_enable 0 +cl_hideserverip -console
Команда NaVi празднует победу

Команды для всех, кто ведёт стримы:

  • +cpu_frequency_monitoring – включить показ тактовой частоты ЦП (CPU)
  • +engine_no_focus_sleep_convar – при открытии другого окна фокус не теряется
  • cl_obs_interp_enable — быстрый переход от одного игрока к следующему
  • +cl_hideserverip – не показывать айпи адрес сервера

Параметры запуска для слабых PC:

  • -console -novid -refresh 60 -noforcemparms -tickrate 64 +cl_cmdrate 64+cl_updaterate 64 +rate 120000 +ex_interpratio 1

Советуем применить эти параметры, независимо от производительности вашей системы. Пожалуй, это наилучшие параметры запуска CS:GO.

58, 64кг у мужчин и 50, 54, 59кг у женщин

11 ноября 2021                    

Завтра, в пятницу, 12 ноября, на коврах спортивного комплекса «Sports  complex  «Uzbekistan», в Ташкенте, Узбекситан, стартует Чемпионат мира по САМБО и Боевому САМБО. В первый день соревнований за награды будут бороться мужчины весовых категорий 58 и 64кг и женщины трех весовых категорий: 50, 54, 59кг. А также два комплекта наград ЧМ-2021 по боевому САМБО будут разыграны в тяжелом и супертяжелом весе 98 и +98кг

Wrestlingua.com предлагает вам ознакомиться с жеребьевкой, турнирными сетками 1-го дня ЧМ-2021 по САМБО FIAS в Ташкенте.




 ЖЕРЕБЬЕВКА: W:50, 54, 59kg; M:58, 64kg; CS:98, +98kg | W:65, 72kg; M:71, 79, 88kg; CS:58, 64kg | W:80, +80kg; M:98, +98kg; CS:71, 79, 88kg

 ОНЛАЙН РЕЗУЛЬТАТЫ: W:50, 54, 59kg; M:58, 64kg; CS:98, +98kg | W:65, 72kg; M:71, 79, 88kg; CS:58, 64kg | W:80, +80kg; M:98, +98kg; CS:71, 79, 88kg

ПРЯМАЯ ВИДЕО ТРАНСЛЯЦИЯ: W:50, 54, 59kg; M:58, 64kg; CS:98, +98kg | W:65, 72kg; M:71, 79, 88kg; CS:58, 64kg | W:80, +80kg; M:98, +98kg; CS:71, 79, 88kg

САМБО, Чемпионат Мира-2021 FIAS. Жеребьевка, турнирные сетки, протоколы на 12-е ноябр.

В/к: Женщины: 50, 54, 59kg; Мужчины: 58, 64kg; Боевое САМБО:98, +98kg
64кг:world-sambo-championships-2021-mens-64kg.pdf [57,43 Kb] (cкачиваний: 69)


54кг:world-sambo-championships-2021-womens-54kg.pdf [40,11 Kb] (cкачиваний: 21)

59кг:world-sambo-championships-2021-womens-59kg.pdf [57,35 Kb] (cкачиваний: 34)

БОЕВОЕ САМБО:
98кг:world-sambo-championships-2021-combat-sambo-98kg.pdf [28,9 Kb] (cкачиваний: 53)

+98кг:world-sambo-championships-2021-combat-sambo-98kg.pdf [36,47 Kb] (cкачиваний: 52)

Наше приложение для iOS и Android

Автор / Синчук Иван для Wrestlingua.com
© Все права защищены, при использовании материалов ссылка (для интернет-изданий активная, индексируемая гиперссылка) на Wrestlingua.com обязательна!

64 тика против 128 тиков аргумент …: GlobalOffensive

Теперь я вижу, что это время от времени всплывает в разделах комментариев, и я нашел некоторую информацию по этому поводу . .. Я хотел бы добавить, что это не моя статья , и я не беру на себя ответственность за какое-либо его содержимое, которое должно быть передано его создателю «молись и распыляй» — однако я согласен со всем этим

Почему люди хотят 128tick? Потому что от этого им становится легче. Counter-Strike — это очень психологическая игра, и простое пребывание в плохом настроении может привести к снижению коэффициента убийств и заставить вас чувствовать себя еще более ужасно, пока, наконец, не сделаете перерыв.

Просто видя цифру «128Tick», нанесенную на сервере, игроки думают, что они более способные, и, в свою очередь, на самом деле играют лучше и счастливее. Без этого 128-го штампа игроки чувствуют, что они не могут полностью раскрыть свой потенциал, и когда им не удается кого-то убить или кто-то убивает их первым, они, конечно, винят 64-х годов в своем поражении.

Цель этой статьи — заменить идею о сильной разнице между 128 и 64 метками реальными фактами.Официальное заявление Valve о том, почему они не собирались переходить на 128-битные MM-серверы, заключается в том, что большинство людей, играющих в игру, не могут достичь более 100 FPS, чтобы использовать ее. Хотя это может быть хорошей причиной, я считаю, что независимо от вашего FPS разница между 128 и 64 метками должна быть незначительной.

Давайте сначала поговорим о цифрах.

  • Быстрый человек способен на 200 миллисекундных рефлексов.

  • В лабораторных условиях вашим глазам требуется около 150 миллисекунд, чтобы распознать вновь появляющийся входной сигнал.

  • Вы можете быстро щелкнуть мышью, примерно со скоростью 100 мс на щелчок или 60 мс, если очень постараетесь.

  • Негев, самое скорострельное ружье в CS: GO, выпускает пулю каждые 60 миллисекунд.

  • AK47 выпускает пулю каждые 100 миллисекунд.

  • Глок может выстреливать каждые 150 миллисекунд.

Частота обновления 64 импульсов составляет каждые 16 миллисекунд. Любой ответ менее 25 миллисекунд практически невозможен для человека, и они подпадают под категорию «мгновенных».(единственное исключение — способность ушей преобразовывать мельчайшие разности фаз в стереопозиционирование). Вы можете проверить свое восприятие задержки в синтезаторе звука, отрегулировав время буферизации.

Итак, 16 миллисекунд — очень маленький период времени. Уменьшение этого количества до 8 миллисекунд на обновление было бы пустой тратой ресурсов на данном этапе (и довольно большой тратой, поскольку для этого требуется вдвое больше). Существует не так много веских аргументов относительно того, почему люди требуют 128 тиков, но вот несколько общих, которые приходят на ум (обратите внимание, что ни один из этих аргументов никогда не подкреплялся какими-либо разумными доказательствами, кроме «они могут это почувствовать»):

Аргумент 1) Схема распыления отличается в 64 тика и затрудняет попадание в людей.

Это аргумент, созданный людьми, которых убивают, а затем обвиняют в том, что их пули не попали, потому что они привыкли «наносить удары по узорам брызг». Правда в том, что формы распыления такие же. 64tick по-прежнему обеспечивает более чем вдвое большую точность обработки, чем аэрозоль для любого оружия.

Аргумент 2) 128 тиков обеспечивает лучшую регистрацию попаданий.

Хотя это всегда будет технически верно, никто не обращает внимания на то, насколько это прирост производительности.

Для начала вам нужно понять, как исходные серверы определяют, если кто-то поражен.

Исходные серверы сохраняют небольшой буфер «где были люди» по умолчанию на 1 секунду позади фактического времени. Когда пакеты «пули» достигают сервера, сервер проверяет время, в которое пакет был отправлен, применяет текущую задержку клиента, от которого он пришел, а затем просматривает буфер проигрывателя, чтобы увидеть, действительно ли пуля попала во что-нибудь.

Например, предположим, что сервер получает пулю, которая, как он определил, должна была попасть 150 миллисекунд назад.На 64tick потребуется тики 9 и 10, а затем интерполировать между ними примерно 9 миллисекунд, чтобы определить точное местоположение игрока. В этой системе 128 тиков практически не даст прироста производительности по сравнению с 64 тиками, но при этом потребует вдвое больше ресурсов.

ФАКТ: Единственные элементы, которые ухудшают производительность регистрации попаданий:

A) Колебание задержки. Это может быть причиной того, что между клиентом и сервером отправленные или полученные пакеты задерживаются на непредсказуемое время.Это, конечно, меняет то, как сервер предсказывает, когда произошел выстрел. B) Низкая пропускная способность сервера. Если пакеты отброшены, они не достигнут сервера, и сервер не будет обрабатывать определенные события, которые выполняет клиент. C) Перегрузка. Когда серверы перегружены, их тиковая частота может упасть ниже желаемых пороговых значений. Хотя здесь говорится, что низкая тиковая скорость напрямую связана с плохой регистрацией совпадений, это применимо только к тикам ниже определенного нижнего порога, а не 64 тика.

ФАКТ: Если бы у клиента была постоянная стабильная задержка, сервер не задыхался и пакеты не отбрасывались, попадания никогда не перестали бы регистрироваться. Клиент видит именно то, что видит сервер, но это задерживается из-за задержки и искажается из-за потери пакетов.

Аргумент 3) 128 тиков обеспечивает более плавный игровой процесс #

Я скажу вам, что если бы пользовательский ввод был ограничен интервалом в 32 тика, никто бы даже не заметил. 64tick — это очень высокая частота обновления для человеческого ввода.Даже если человек рассылает спам-спам («ADADADA»), он выполняет эти действия с гораздо меньшей частотой, чем 64 Гц.

64 Гц — большая точность для человеческого ввода. Сервер даже не влияет на ваше движение, если только вы не сильно отстаете, поскольку ваше движение прогнозируется на стороне клиента. Насколько гладким будет ваш дисплей, зависит от:

Опять же, вы по-прежнему получаете выгоду от монитора с частотой 120 Гц на 64-битном экране, потому что ваш клиент все еще выполняет интерполяцию между пакетами.

TL; DR? Люди не могут перегружать 64tick вводом с клавиатуры или мыши, и из-за этого серверы и клиенты могут интерполировать данные и обеспечивать почти идеальный опыт, который не улучшится на 128 тактов.

ТЕОРИЯ: Улучшение — это иллюзия.

Конечно, 128 тиков лучше. Но не заметно. Не стесняйтесь использовать его в своей лиге, но, пожалуйста, перестаньте требовать от Valve обновить все свои серверы на основании безосновательных обвинений. 128tick стоит дорого.

Спасибо, что прочитали, и не стесняйтесь зажечь меня. 🙂

Заключительное примечание: я действительно могу иногда засвидетельствовать низкую производительность с помощью регистрации попаданий на серверах MM, но я никогда не буду приписывать это тому факту, что они 64tick.64tick просто не имеет смысла быть причиной плохой работы.

Вот лучшие настройки и варианты запуска CS: GO

CS: GO — одна из старейших конкурентоспособных игр на рынке. Начиная с CS 1.6 , уровень конкуренции только повысился, и вам понадобятся все преимущества, которые вы можете получить, чтобы превзойти остальных.

Большинство игроков в CS: GO уже знакомы с игрой либо по старым версиям, либо просто по тому, как долго они играли. Хотя вы сможете восполнить пробел только в игре, важно, чтобы вы делали это в наиболее оптимальных обстоятельствах.

При первом запуске CS: GO игра автоматически настроит ваши настройки в соответствии с вашим оборудованием. Хотя у вас, скорее всего, будет плавный игровой процесс, автоматическая настройка часто фокусируется на обеспечении наилучших визуальных результатов с минимальными потерями в производительности. Может показаться, что в этом нет ничего плохого, но вы захотите, чтобы все дополнительные кадры были на вашей стороне, если вы серьезно относитесь к достижению этого ранга Global Elite.

Профессиональные игроки и игроки-ветераны полагаются на мониторы с высокой частотой обновления, а более высокие кадры позволят вам полностью раскрыть их потенциал. Монитор с высокой частотой обновления по существу позволит вам получать визуальную информацию быстрее, чем любой монитор с частотой обновления 60 Гц, что дает вам небольшое конкурентное преимущество в этом процессе.

Помимо корректировки настроек к лучшему, вы также можете использовать параметры / команды запуска, которые улучшают качество жизни. Если вас раздражает вступительное видео, которое, как вы всегда думали, вам нужно посмотреть, прежде чем перейти в главное меню, вы будете рады узнать, что существует команда, которая автоматически пропускает это видео.

Вот лучшие настройки CS: GO , которые помогут вам вывести игру на новый уровень, наряду с консольными командами, которые сделают вашу жизнь проще.

Лучшие

CS: GO настройки

«Лучшие» — это субъективный термин, когда дело касается настроек. Это может зависеть от того, ценит ли игрок визуальное качество выше производительности, наоборот. Однако при внимательном рассмотрении настроек большинства высококлассных игроков можно заметить закономерность.

Большинство из них имеют похожие макеты, что означает, что вы можете применить макет настроек, близкий к наилучшему.Хотя следующие настройки основаны на нескольких популярных именах, таких как ZywOo, s1mple и shroud, вы можете улучшить их только своими собственными настройками.

Лучшие настройки видео для CS: GO
  • Яркость : 80 процентов
    • Ваши настройки яркости будут сильно зависеть от яркости вашего монитора, но 80 процентов — это приятное место, когда дело доходит до -игровые настройки.
  • Соотношение сторон : 4: 3
  • Разрешение : 1280 × 960
    • Вышеупомянутые параметры соотношения сторон и разрешения в основном растянут вашу игру.Сначала все будет выглядеть немного не так, но модели игроков будут увеличиваться при применении этих настроек, что упрощает стрельбу.
  • Режим отображения : Полноэкранный
  • Энергосбережение ноутбука : Отключено
Расширенные настройки видео
  • Глобальное качество теней: Высокое
    • В то время как опытные игроки предпочитают оставлять большинство своих настроек на нижняя граница спектра, общее качество теней — исключение, которое они все делают. Сохранение этого значения на высоком уровне упростит обнаружение врагов по их теням, что повысит вашу общую осведомленность о карте.
  • Детализация модели / текстуры: Низкая
    • Довольно сложно отличить низкокачественные игровые модели от высококачественных, если вы не смотрите на них в упор.
  • Потоковое воспроизведение текстур: Отключено
  • Детализация эффекта: Низкая
  • Детализация шейдера: Низкая
  • Повышение контрастности проигрывателя: Включено
    • Повышение контрастности проигрывателя делает модели проигрывателей более различимыми по сравнению с другими элементы игры.
  • Многоядерный рендеринг: Включен
    • Это обязательный параметр, если у вас многоядерный процессор.
  • Режим сглаживания мультисэмплинга: 8x MSAA
    • Сглаживание в основном рассматривается как снижение производительности. Хотя для этого требуется определенный уровень ресурсов, он делает игру более плавной, делая края более четкими. Этот параметр имеет решающее значение для игроков, которые хотят увеличить частоту попаданий в голову. Если после включения функций сглаживания вы заметили, что ваши кадры сильно падают, мы рекомендуем их отключить.
  • FXAA сглаживание: Включено
  • Режим фильтрации текстур: Анизотропный 8x
    • Режим фильтрации текстур обычно почти не влияет на частоту кадров, а его включение делает игру заметно лучше.
  • Ожидание вертикальной синхронизации: Отключено
    • Оставить вертикальную синхронизацию отключенной, поскольку она приводит к задержке ввода.
  • Размытие в движении: Отключено
    • Размытие в движении добавляет небольшой эффект размытия, если вы слишком быстро перемещаете камеру во время игры в CS: GO .Несмотря на то, что игра добавляет реалистичности, становится труднее обнаруживать врагов во время движения.
  • Режим с тремя мониторами: Отключено
  • Использовать шейдеры uber: Отключено

Лучшие настройки звука для CS: GO

Качество звука во многом будет зависеть от вашей гарнитуры, в то время как играет CS: GO . Гарнитурам высшего уровня будет легче различать более тихие звуки, такие как шаги.Единственная рекомендация, которую вы можете применить к своим настройкам, — это отключить опцию музыки.

Хотя в CS: GO есть некоторые фишки, позволяющие каждому переключиться на свои игровые лица, биты иногда могут отвлекать.

Лучшие настройки прицела для CS: GO

Общее практическое правило при настройке параметров прицела — выбрать цвет, который можно легко отличить от других поверхностей в игре. Такие цвета, как серый, будет сложнее отслеживать, а яркие оттенки зеленого и красного гарантируют, что вы никогда не потеряете прицел в грязных боях.

  • Стиль перекрестия : Классический статичный
  • Центральная точка : Нет
  • Длина : 3,0
  • Толщина : 1,1
  • Зазор : -3,0
  • Контур : отключен
  • Красный : 255
  • Зеленый : 255
  • Синий : 165
  • Alpha : 255
  • T-образный : Нет
  • Разрыв для оружия : Нет
  • Показать прицел игрока : Все

Лучшие варианты запуска в

CS: GO

В CS: GO есть много других настроек, которые вы можете настроить.Внутриигровые настройки наполнены различными вариантами конфигурации, но они не включают в себя все, с чем вы можете повозиться.

Параметры или команды запуска позволяют изменять настройки, которые ваша игра будет применять каждый раз при ее запуске.

Вот лучшие варианты запуска CS: GO .

  • -novid
    • CS: GO сам по себе не требует много времени для запуска, но интерактивное видео может заставить его показаться годами. Все станет только хуже, если у вас также будет максимальный звук, поэтому обязательно используйте эту опцию запуска, чтобы сэкономить время и свой слух.
  • -nojoy
    • Эта команда запуска отключила поддержку джойстика CS: GO . Большинство игроков считают, что это уменьшает объем памяти, который требуется CS: GO , тем самым повышая общую производительность.
  • -высокий
    • Эта команда устанавливает высокий приоритет CS: GO для вашего ЦП. Это означает, что ваш процессор будет направлять больше своих ресурсов, чтобы помочь CS: GO работать лучше, увеличивая общее количество кадров в процессе на пару чисел.
  • -tickrate 128
    • Конкурентные серверы на CS: GO работают со скоростью 128 тиков, в то время как другие держат ее на 64. Эта команда устанавливает скорость тика 128 для всех матчей «Offline with Bots», которые приходят пригодится, если вы хотите попрактиковаться в игровой механике.
  • + cl_forcepreload 1
    • Не все играют с быстрым SSD, который позволяет загружать матчи за считанные секунды. Если у вас более медленный жесткий диск и вы все еще загружаетесь, в то время как другие участвуют в игре, вы можете попробовать эту консольную команду, чтобы предварительно загрузить большинство деталей карты и звуков.Это сократит время загрузки, но CS: GO может начать использовать немного больше памяти.
  • -консоль
    • У всех игроков старой школы CS: GO будет набор команд, которые они должны будут ввести или захотят опробовать при запуске CS: GO . Хотя есть горячая клавиша для открытия консоли, вы также можете открыть ее по умолчанию при каждом запуске CS: GO .

Вам нужно будет щелкнуть правой кнопкой мыши по CS: GO в вашей библиотеке Steam и нажать «Свойства», чтобы использовать указанные выше параметры запуска. Перейдите на вкладку «Общие», и «Параметры запуска» должны быть внизу окна.

Полный список доступных вариантов запуска CS: GO можно найти здесь. Обратите внимание, что большинство параметров со временем были добавлены в меню настроек игры, поэтому мы рекомендуем дважды проверить, не изменяете ли вы параметр, который можно настроить через внутриигровое меню с параметром запуска.

Что все это значит?

Гостевой пост Стива Берарди из PhotoNaturalist

В цифровой фотографии много говорят о битах:

  • 12-битные и 14-битные аналого-цифровые преобразователи (АЦП)
  • 8-битный и 16-битный цвет
  • 32-битная и 64-битная Photoshop

Но что все это значит? Хотя большее количество битов обычно означает более качественную обработку, это не всегда так просто.Иногда вам действительно нужно знать всю историю, прежде чем делать выводы.

Прежде чем мы перейдем к этим конкретным примерам, которые распространены в цифровой фотографии, важно понять, что такое немного на самом деле.

Что такое бит?

Слово «бит» происходит от двух слов: двоичного и цифрового. У каждого бита есть два возможных значения: 1 или 0. Иногда полезно думать о бите как о «вкл.» (1) или «выкл.» (0).

Хотя один бит может хранить два возможных значения, последовательность из двух битов может хранить четыре возможных значения: 00, 01, 10 и 11.В последовательности битов порядок имеет значение, поэтому «01» сильно отличается от «10».

Каждый раз, когда вы добавляете бит в последовательность, вы удваиваете количество возможных значений, поэтому, если вы переходите от двух битов к трем, вы переходите от четырех возможных значений к восьми возможным значениям.

В качестве примера предположим, что вы хотели сохранить что-то, имеющее 16 возможных значений. В этом случае вам понадобится 4 бита (2 x 2 x 2 x 2 = 16).

Аналого-цифровые преобразователи (АЦП): 12-бит против.14-битный

Каждая цифровая камера оснащена аналого-цифровым преобразователем (АЦП), который преобразует аналоговый сигнал, полученный датчиком, в цифровой сигнал, который создает ваше изображение. Большинство зеркалок в наши дни имеют 12-битный или 14-битный АЦП.

Биты в этом случае относятся к количеству возможных значений тона, которые может зафиксировать сенсор вашей камеры. Например, 12-битный АЦП может захватывать 4096 возможных тональных значений для каждого пикселя. С другой стороны, 14-битный АЦП может захватывать 16 384 тональных значения для каждого пикселя.

На первый взгляд может показаться, что 14-битный АЦП — явный победитель: он может захватывать на 12 000 тональных значений больше! Но эти два дополнительных бита не увеличивают динамический диапазон вашей камеры, они только добавляют дополнительные шаги в этом диапазоне. Это как если бы вы взяли буханку хлеба и разрезали каждый ломтик пополам, чтобы сделать еще более мелкие ломтики. Теперь у вас может быть больше ломтиков хлеба, но размер буханки остался прежним!

Итак, вы получите немного лучшее качество изображения с 14-битным АЦП, но на самом деле это заметно только в глубоких тенях и плавных градиентах (как на фотографиях заката).

Более подробную информацию о 14-битных и 12-битных АЦП можно найти в следующих полезных статьях:

Цвет: 8 бит Vs. 16 бит

В большинстве программ постобработки у вас есть выбор между 8-битным и 16-битным цветом. Биты в этом случае относятся к количеству возможных тональных значений, доступных для каждого цветового канала (красного, зеленого и синего) каждого пикселя.

Для 8-битных изображений у вас есть 256 возможных значений для красного канала, 256 значений для зеленого канала и 256 значений для синего канала.А с 16-битными изображениями у вас есть 65 536 возможных значений для каждого цветового канала.

Использование 16-битного цвета приведет к довольно большому размеру файла, но оно того стоит, потому что с 16-битной обработкой вы значительно снизите свои шансы на постеризацию (как показано на фото ниже). Рекомендуется использовать 16-битный цвет, даже если вы изначально снимали в формате JPEG (который является 8-битным), потому что дополнительные биты помогут уменьшить ошибки округления при выполнении общих задач постобработки, таких как кривые или уровни.

Для получения дополнительной информации о 8-битном и 16-битном цвете ознакомьтесь с этими полезными статьями:

Photoshop: 32-битная версия. 64-битная

Некоторые приложения для постобработки, например Adobe Photoshop, предлагают 32-битные и 64-битные версии. Биты в этом случае относятся к количеству возможных адресов памяти. С 32-разрядной версией вы можете использовать до 4 ГБ физической памяти, но с 64-разрядной версией теоретически вы можете использовать до 17,2 млрд ГБ памяти (хотя этот объем обычно сильно ограничен операционной системой).

Существует распространенное заблуждение, что 64-разрядная версия Photoshop всегда быстрее, но на самом деле, чтобы воспользоваться преимуществом ускорения (которое минимально), должны произойти три вещи:

  1. Вам нужно более 4 ГБ физической памяти
  2. Вам необходимо работать с очень большими изображениями (не менее 800 МБ)
  3. У вас должна быть 64-разрядная операционная система (например, Vista x64 или Mac OS 10. 6)

Вы можете подумать, что 800 МБ больше, чем вы когда-либо будете работать, но размеры файлов могут быстро увеличиться, если вы создаете панорамное изображение или работаете с несколькими слоями изображений для совмещения экспозиций.

Даже если вы соблюдаете все три вышеуказанных условия, есть шанс, что вы вообще не заметите ускорения, в зависимости от операций, которые вы выполняете с изображением. Также имейте в виду, что многие сторонние плагины не работают с 64-битной версией Photoshop.

Для получения более подробной информации о 32-битном Vs. 64-битный Photoshop, ознакомьтесь со следующими информативными статьями:

Помните: не все биты созданы одинаково

Ключевым моментом, который следует вынести из этого поста, является то, что не все биты созданы одинаково.То, что что-то содержит вдвое больше битов, не означает, что оно автоматически в два раза быстрее или в два раза лучше по качеству. Прежде чем делать какие-либо выводы о 16-битной и 32-битной / и т. Д., Вы действительно должны понять историю того, как эти биты используются.

Об авторе: Стив Берарди — натуралист, фотограф и ученый-компьютерщик.

Обычно его можно встретить в походах по красивым горам и пустыням Южной Калифорнии.Читайте больше его статей о фотографии природы на сайте PhotoNaturalist и подписывайтесь на него в Twitter .

TGA — Сообщество разработчиков клапанов

Графический адаптер Truevision ( TGA ), обычно называемый «targa» (усовершенствованный растровый графический адаптер Truevision), представляет собой непатентованный формат изображения от Truevision, который пользуется поддержкой Valve. Расширение файла targas — .tga . Это базовый формат для файлов текстур Valve (.vtf), который используется для хранения изображений, используемых клиентом Steam.

В этом формате хранятся основные каналы RGB (красный, зеленый, синий) с точностью 8 бит (0-255) каждый, всего 24 бита на пиксель, с дополнительным дополнительным 8-битным альфа-каналом, всего 32 бит / пиксель. Дополнительный канал содержит информацию, которую шейдеры VMT могут использовать для таких эффектов, как прозрачность или зеркальность.

Большинство текстур в исходном коде начинают свою жизнь как файлы TGA, которые редактируются и корректируются с помощью любого подходящего редактора изображений.Затем TGA компилируется в формат текстуры клапана (VTF) с помощью Vtex.exe (или стороннего инструмента, такого как VTFEdit) для участия в Системе материалов.

Targa для Vtex

Действительный формат

Для того, чтобы изображение targa было признано действительным Vtex, оно должно соответствовать следующим критериям:

  • Глубина должна быть 24 или 32 бит / пиксель. (16 бит / пиксель не распознается.)
  • Его размеры (высота и ширина) должны иметь размер в пикселях, равный степени 2.9 = 512 и т. Д.)
  • Его размеры не могут быть больше 2048 пикселей.
  • Высота и ширина не обязательно должны быть одинаковыми — 64×128, 256×512 работают нормально — но движок Source предпочитает квадратные изображения, поэтому используйте их по возможности, даже если это не кажется лучшим вариантом.
  • Сжатие
  • RLE является необязательным, но его следует избегать из-за случайных проблем с преобразованием.

Масштаб

Масштаб текстуры по умолчанию в Hammer составляет 0,25 .Это означает, что 1 пиксель текстуры = 0,25 единицы карты в Hammer и в игре, или текстура 512×512 покрывает 128×128 единиц карты (эквивалент 8×8 футов или 2,4×2,4 метра).

Относительные размеры для (по умолчанию) масштаба текстуры 0,25
Текстура Молот Размер файла Описание
пикселей единиц карты КБ (32 бит)
4 x 4 1 х 1 0.06
8 x 8 2 х 2 0,25
16 x 16 4 х 4 1
32 x 32 8 х 8 4
64 x 64 16 х 16 16
128 x 128 32 х 32 64
256 x 256 64 х 64 256
512 x 512 128 х 128 1024 (1 МБ) Это наиболее распространенный размер для архитектурных текстур: кирпичной кладки, бетона и т. Д.
1024 x 1024 256 х 256 4096 (4 МБ)
2048 x 2048 512 x 512 16384 (16 МБ) Это самый большой размер, с которым может справиться vtex, и используется только для больших кистей без тайлинга, таких как 2D-скайбоксы.
  • Текстура (в пикселях) : Квадратный формат предпочтителен, но допустимы прямоугольники. Каждое измерение должно быть степенью двойки до 2048.
  • Hammer (единицы карты) : используется масштаб текстуры по умолчанию 0,25. Это можно изменить локально для каждой поверхности в Hammer или для материала , используя коэффициент масштаба $ basetexturetransform в VMT. Например, текстура 512×512 с масштабом 0,5 будет охватывать только единицы карты 64×64 и при просмотре вблизи должна выглядеть очень детализированной.
  • Размер файла (кБ) : указывается для 32-битного несжатого раста-изображения. Для выполнения: VTF использует собственную систему сжатия…
Примечание: Масштаб 3D Skybox составляет 1/16 масштаба карты, поэтому текстуры для поверхностей 3D Skybox должны быть разработаны соответствующим образом.

Место сохранения

Помните, что Vtex может находить только изображения targa, расположенные внутри папки / materialsrc / текущей игры, так что вы можете сохранить их прямо там, чтобы избавить вас от необходимости перемещать их туда позже.

Внешние ссылки

Создайте свой собственный выделенный сервер для игры в Counter Strike: Global Offensive (CS: GO)

В этом блоге показано, как вы можете создавать и поддерживать свой собственный Counter Strike: Global Offensive (CS: GO), используя серверы, защищенные от DDoS-атак Alibaba Cloud.

Александру Андрей, автор блога сообщества Alibaba Cloud.

Многопользовательский шутер от первого лица Counter-Strike: Global Offensive (сокращенно CS: GO) стал очень популярным в последние месяцы, и на момент написания статьи она все еще растет. В настоящее время это третья по популярности игра в Steam после многопользовательских сетевых боевых игр Dota 2 и PlayerUnknown’s Battlegrounds (обычно сокращенно PUBG).

Вы можете посетить страницу статистики Steam и посмотреть, где сейчас находится игра.

В игре есть опция «Официальный подбор игроков». При этом выбирается ближайший сервер, принадлежащий Steam, на котором вы можете играть против других игроков со всего мира. Это может быть весело, поскольку вы получаете бесконечный запас уровней навыков и стилей игры врагов. Однако вы не можете контролировать, кто присоединяется к серверу, какие существуют правила и настройки. Это проблема, когда вы хотите организовать матчи в соответствии со своими предпочтениями или если вы хотите проводить частные игры, в которых вы играете только против своих друзей.Решение этой проблемы — создать собственный выделенный сервер для Counter Strike: Global Offensive. Помимо этого, получение собственного места, где вы можете повеселиться и расслабиться, также является жизнеспособной возможностью для бизнеса. С сотнями тысяч активных игроков, безусловно, есть несколько игроков, которым нужен собственный сервер, который вы можете создать для них, а затем арендовать, или просто проводить свои матчи и найти другой способ монетизировать его.

Стоит отметить, что Alibaba Cloud — один из немногих поставщиков облачных услуг, который предлагает бесплатную защиту от DDoS-атак.Игровые серверы часто становятся целью атак такого типа. Однако в основном они исходят от игроков, которые были чем-то расстроены тем, что произошло во время игры. В результате крупномасштабные атаки могут время от времени нарушать работу вашего сервиса, поэтому постарайтесь управлять своим сервером таким образом, чтобы не расстраивать людей, которые могут захотеть отомстить. Следовательно, также попробуйте выбрать модераторов (если они вам нужны), которые знают, как правильно управлять «эмоциональным огнем», который может возникнуть во время матчей.

Предварительные требования

Перед запуском необходимо:

1. Создайте учетную запись Steam на https://store.steampowered.com/join/. Конечно, если у вас уже есть учетная запись, вы можете ее использовать.

2. Установите Counter Strike: Global Offensive на свой компьютер, чтобы вы могли позже протестировать свой сервер. На момент написания этого руководства игра бесплатна.

3. Запустите новый экземпляр ECS. Выберите регион (физическое расположение сервера), который максимально приближен к региону, в котором находятся игроки, которые хотят присоединиться.

При выборе типа экземпляра избегайте серверов начального уровня (общих) и пакетного типа.Это дает вам ограниченное время, когда вы можете использовать 100% производительности процессора. Игровые серверы должны быстро реагировать на события, поэтому вам нужна полная мощность центрального процессора (ЦП / процессора), доступная в любое время.

4. Выберите экземпляр, оптимизированный для вычислений, как показано на следующем рисунке.

Экземпляр Intensive Compute Type с 2 виртуальными ЦП и 2 ГБ ОЗУ должен быть достаточным для небольших серверов. Во время тестирования процесс выделенного сервера обычно может работать даже с менее 1 ГБ ОЗУ при очень небольших нагрузках.Однако, если ваш сервер становится популярным, и вам нужно будет выделить больше процессоров и / или памяти, вы можете выключить его позже и перейти на более выгодный план без потери данных или повторной настройки.

Имейте в виду, что если у экземпляра заканчивается свободная оперативная память, процесс игрового сервера будет принудительно завершен, и в результате клиенты будут отключены. Итак, следите за использованием ресурсов, особенно если вы собираетесь запустить сервер со 128 тиками, к которому присоединяется много игроков.

5. Используйте последний образ Ubuntu для операционной системы

6.Выделите не менее 40 ГБ дискового пространства. Файлы игры занимают от 15 до 20 ГБ, а операционной системе обычно требуется от 2 до 4 ГБ.

7. На следующем этапе настройки сети переместите ползунок полосы пропускания на максимальное значение.

8. Щелкните Создать группу безопасности .

Откроется новая вкладка, и вы увидите эту кнопку в правом верхнем углу:

Интерфейс может измениться в будущем.В этом случае вы можете прочитать инструкции о том, как создать группу безопасности.

В шаблоне : выберите Настроить . Назовите группу безопасности allow-all под именем группы безопасности : . Щелкните поле VPC: и выберите доступный VPC по умолчанию. Окончательный результат должен выглядеть так:

Затем вам будет предложено добавить новые правила в эту группу безопасности. На странице правил щелкните Добавить правило группы безопасности в правом верхнем углу.

Меньше Тип протокола: выберите Все . Для объектов авторизации : введите 0.0.0.0/0 . Окончательный результат должен выглядеть как на следующем рисунке.

9. Вернитесь на страницу, на которой вы настраивали экземпляр, который собираетесь запустить. Щелкните Повторно выберите группу безопасности .

Выберите ранее созданную группу безопасности «Разрешить все».

10.Выберите остальные желаемые настройки и запустите экземпляр. Когда вы дойдете до шага System Configurations , рекомендуется использовать пары ключей SSH для входа в систему вместо менее безопасных паролей. Перечитайте руководство по созданию нового экземпляра, если вы не знакомы с необходимыми шагами.

Установить SteamCMD в Linux

Войдите в свой экземпляр через SSH как пользователь root. Обновите все пакеты на своем сервере.

  обновление apt && обновление apt
  

Перезагрузите экземпляр.

  перезагрузка systemctl
  

Подождите 10–30 секунд и повторно подключитесь с помощью SSH и снова войдите в систему как root.

SteamCMD, инструмент для загрузки файлов игры CS: GO, недоступен в репозиториях по умолчанию в Ubuntu. Чтобы включить дополнительные репозитории «мультивселенной», сначала установите этот пакет:

  apt install software-properties-common
  

Включить репозиторий мультивселенной.

  add-apt-repository multiverse
  

Также необходимо включить поддержку 32-разрядной версии, поскольку пакет SteamCMD является 32-разрядным приложением.

  dpkg --add-architecture i386
  

Обновить информацию о пакете.

  APT обновить
  

И теперь вы, наконец, можете установить SteamCMD.

  apt установить steamcmd
  

При появлении запроса о юридическом соглашении вам может потребоваться нажать клавишу TAB, чтобы выбрать кнопку Ok .

При следующем запросе выберите Я согласен , иначе установка будет прервана.

Установить выделенный сервер CS: GO на Linux

Это очень плохая практика — запускать процесс игрового сервера с правами root.Итак, создайте нового непривилегированного пользователя.

  adduser --gecos "" --disabled-login csgo
  

Войдите в систему как новый пользователь с именем csgo .

  su - csgo
  

Установить файлы выделенного сервера CS: GO.

  steamcmd + force_install_dir ~ / csgo-ds / + анонимный вход + app_update 740 проверка + выход
  

Если это прерывается или вы отключаетесь от сервера, снова войдите в систему как пользователь csgo и повторите ту же команду.Установка должна продолжиться с того места, где она была остановлена.

По завершении установки вы должны увидеть это (или подобное) сообщение: Успех! Приложение «740» полностью установлено. .

В будущем вы, возможно, захотите обновить свой игровой сервер. Вместо steamcmd + force_install_dir ~ / csgo-ds / + анонимный логин + app_update 740 validate + quit , используйте steamcmd + force_install_dir ~ / csgo-ds / + анонимный логин + app_update 740 + quit . Параметр проверить следует использовать только при первой установке и когда вы хотите проверить целостность файлов и, возможно, восстановить поврежденные / поврежденные / отсутствующие данные.

Зарегистрируйте токен входа на игровой сервер Steam

Посетите следующую страницу, чтобы сгенерировать токен входа на игровой сервер (GSLT). Это умный способ аутентификации вашего сервера в вашей учетной записи Steam без использования вашего личного пароля. Это также способ предотвратить нарушение правил сообщества операторами серверов. Вы должны прочитать инструкции, иначе вы можете заблокировать свою учетную запись. Обратите особое внимание на этот пост в блоге Counter Strike.

Используйте 730 в качестве идентификатора приложения. В команде steamcmd идентификатор был 740, а здесь 730, вероятно потому, что сама игра зарегистрирована как 740, а выделенный сервер игры — как 730. Вы можете свободно выбирать текст заметки, который хотите использовать.

После того, как вы сгенерируете этот токен, вам нужно будет использовать его идентификатор в следующей команде при запуске серверного процесса. Вот пример токена входа.

Запустите Counter-Strike: Global Offensive Server

Вернитесь к сеансу SSH, где вы все еще должны войти в систему как пользователь csgo .Выйдите из этого сеанса входа в систему, чтобы снова стать пользователем root.

  выход
  

Установите tmux.

  apt установить tmux
  

Эта утилита будет использоваться для поддержания активности терминального сеанса даже после выхода из системы. Без него, когда вы выйдете из сеанса SSH, сервер CS: GO будет прерван. Помимо поддержания процесса в рабочем состоянии, даже когда вы выходите из системы, tmux также позволит вам вернуться и увидеть выходные данные сервера (например, сообщения журнала) и позволит вам выдавать команды приложению игрового сервера, поскольку оно повторно подключает вас к интерфейсу ввода команд. Если вы хотите узнать больше, вы можете прочитать руководство по использованию tmux.

Войдите в систему как пользователь csgo .

  su - csgo
  

Запустите tmux.

  tmux
  

Теперь вам нужен токен входа на странице управления учетной записью на игровом сервере Steam. В следующей команде, которую вы видите, замените код B38F6E71E4FA3BD74BE08354AF5BE025 , предлагаемый в качестве примера, вашим собственным токеном входа!

Запустите выделенный сервер Counter Strike: Global Offensive.

  ~ / csgo-ds / srcds_run -game csgo -net_port_try 1 + game_type 0 + game_mode 0 + mapgroup mg_active + map de_dust2 + sv_setsteamaccount B38F6E71E4FA3BD74BE08354AF5BE025
  

Вы всегда должны передавать параметры -game csgo -net_port_try 1 команде srcds_run и + sv_setsteamaccount . Остальные параметры вы можете изменить или даже добавить свои, в соответствии с вашими потребностями для сервера.

Общедоступный IP-адрес вашего сервера будет отображаться в выходном тексте команды srcds_run .Это адрес, который вы будете использовать для подключения к игровому серверу (это тот же IP-адрес, который вы можете найти в консоли Alibaba ECS). Запустите Counter Strike: Global Offensive на своем компьютере. Нажмите кнопку воспроизведения и выберите в качестве типа игры Браузер Сервера совместной работы.

Перейдите на вкладку «Избранное».

Нажмите кнопку « Добавить сервер» в правом нижнем углу и вставьте IP-адрес своего сервера. Добавьте его в список избранных.

Теперь вы можете щелкнуть правой кнопкой мыши по записи и присоединиться к игре.Если опция недоступна, нажмите Обновить (кнопка в правом нижнем углу) или закройте браузер сообщества, откройте его снова и повторите попытку (похоже, это ошибка).

Управление сеансами tmux и завершение srcds

Выйдите из игры и вернитесь к сеансу SSH, на котором в настоящее время работает игровой сервер.

Если вы хотите выйти из сеанса SSH, но оставить сервер работающим, нажмите CTRL + b , отпустите клавиши и затем нажмите d . Это называется «отсоединением».«

Для выхода из csgo пользователь:

  выход
  

Чтобы полностью выйти из сеанса SSH, введите exit еще раз. Даже если вы не завершите сеанс tmux таким образом, например, ваш компьютер выйдет из строя или ваше интернет-соединение разорвется, игровой сервер продолжит работать без повреждений, заключенный в сеанс tmux.

Чтобы повторно подключиться к выходу / вводу игрового сервера, размещенному в сеансе tmux, сначала войдите на свой сервер через SSH как root.После этого войдите в систему как пользователь csgo .

  su - csgo
  

Теперь подключитесь к сеансу tmux, который вы оставили запущенным (или отсоединились от него).

  tmux прикрепить
  

При подключении к выходу и входу приложения srcds (выделенный сервер SouRCe) нажмите CTRL + c , чтобы завершить его.

Запуск процесса выделенного сервера с более высоким приоритетом

Этот раздел предназначен только для справки, и вам не нужно выполнять действия на этом этапе.Фактически, используйте этот совет только в случае возникновения проблем.

Если вы заметили, что на сервере периодически возникают сбои, и вы уверены, что это не проблема клиента, а у вашего экземпляра достаточно ресурсов, может помочь выполнение приложения srcds с более высоким приоритетом.

Вам необходимо выполнить следующую команду от имени пользователя root, поскольку только этот пользователь может повысить приоритет процесса. Если вы вошли в систему как csgo и запустили сеанс tmux, сначала отключите и оставьте процесс игрового сервера запущенным в фоновом режиме.Затем введите exit , чтобы выйти из системы пользователя csgo и вернуться к пользователю root. Теперь введите:

  renice -n -15 -u csgo
  

Это увеличит все процессы, которые в настоящее время выполняет пользователь csgo , до приоритета -15. На самом деле более высокий приоритет — это меньшее число, наименьшее из которых -20. Логика состоит в том, что процесс, выполняющийся на 10-м уровне, «лучше» для других приложений, позволяя им иметь больше процессорного времени. Процесс, работающий с -10, не является «приятным», поскольку он отнимает у себя больше процессорного времени и заставляет другие приложения ждать своей очереди.По умолчанию все приложения работают с нейтральным значением nice, равным 0.

Параметры командной строки для выделенного сервера CS: GO

В CS: GO есть пять типов игр. Вы можете узнать, как запустить сервер в каждом из этих режимов, на этой вики-странице Counter Strike: Global Offensive Dedicated Server. Извлеките нужные вам числа + game_type и + game_mode и затем используйте их в команде, представленной в этом руководстве.

Например, для классического соревновательного матча эта строка со страницы вики:

  srcds -game csgo -console -usercon + game_type 0 + game_mode 1 + mapgroup mg_active + map de_dust2
  

Стало:

  ~ / csgo-ds / srcds_run -game csgo -net_port_try 1 + game_type 0 + game_mode 1 + mapgroup mg_active + map de_dust2 + sv_setsteamaccount PUTYOURGSLTIDHERE
  

-console параметр команды используется только в Windows. Кроме того, в Linux рекомендуется использовать команду srcds_run , а не srcds . Поскольку большинство примеров на вики-странице относятся к платформе Windows, вам нужно будет адаптировать все представленные там команды аналогичным образом. В противном случае поставьте, начните с этой командной строки:

  ~ / csgo-ds / srcds_run -game csgo -net_port_try 1 + sv_setsteamaccount YOURGSLTHERE
  

И добавьте + mapgroup , + map , + game_mode , + game_type и другие необходимые вам параметры в качестве дополнительных параметров к этой команде.

Дополнительные параметры, которые можно передать команде srcds_run , можно найти на вики-странице Valve для исходного выделенного сервера. Например, -nobots может быть интересен, если вы не хотите, чтобы боты автоматически присоединялись и заполняли пустые слоты, когда недостаточно игроков.

Файлы конфигурации для выделенного сервера CS: GO

Два основных файла, которые вы захотите использовать для настройки сервера, — это autoexec. cfg и server.cfg . Вы можете найти краткую информацию о файлах на этой странице.

По следующей ссылке вы можете найти список переменных, которые вы можете установить в игре Counter Strike. Обычно вы обнаружите, что большинство необходимых вам переменных начинаются с префиксов sv_ и mp_ , например, mp_roundtime . Вы также можете посетить эту страницу для получения краткого списка часто используемых переменных.

Чтобы создать autoexec.cfg , войдя в систему как пользователь csgo , выполните следующую команду:

  нано ~ / csgo-ds / csgo / cfg / autoexec.cfg
  

Запишите желаемый файл конфигурации и затем нажмите CTRL + x , затем y и затем ENTER , чтобы сохранить его на диск.

Чтобы создать server.cfg , запустите:

  нано ~ / csgo-ds / csgo / cfg / server. cfg
  

И следуйте тем же инструкциям, чтобы сохранить файл.

Как создать Counter Strike: Global Offensive на 128 тиков

Преимущества использования 128-тиковых серверов все еще обсуждаются, и на то есть веские причины.Способы расчета и оценки позиций игроков, попаданий и промахов — очень сложный процесс. Но вы все равно можете запустить 128-тиковый сервер, если хотите и думаете, что это даст конкурентное преимущество. Серверы в Alibaba более чем способны.

Помимо запуска сервера со скоростью 128 снимков в секунду, вам также необходимо принудительно настроить эти параметры на стороне клиента. В противном случае клиенты будут просто отправлять по умолчанию 64 обновления в секунду (cl_cmdrate) и получать 64 снимка данных игрового мира (cl_updaterate) в секунду.Чтобы сервер заставил клиентов получать и отправлять 128 обновлений в секунду, войдя в систему как пользователь csgo , создайте (или отредактируйте) autoexec.cfg :

  нано ~ / csgo-ds / csgo / cfg / autoexec. cfg
  

Добавьте в файл следующее содержимое:

  sv_minupdaterate 128
sv_mincmdrate 128
  

Нажмите CTRL + x , затем y и затем ENTER, чтобы сохранить файл.

Теперь, когда вы запускаете сервер, добавьте -tickrate 128 к вашей команде srcds_run .Например:

  ~ / csgo-ds / srcds_run -game csgo -tickrate 128 -net_port_try 1 + game_type 0 + game_mode 1 + mapgroup mg_active + map de_dust2 + sv_setsteamaccount PUTYOURGSLTIDHERE
  

Запустите игру, перейдите в «Настройки » -> «Настройки игры» и включите консоль разработчика .

После подключения к серверу нажмите клавишу ` (та, на которой также есть знак ~ ). В открывшейся консоли напишите:

  net_graph 1
  

И нажмите ENTER.

tick , up и cmd должны быть установлены на 128 на сетевом графике, который вы увидите в правом нижнем углу. Вот пример изображения:

Снова откройте игровую консоль ( ` key) и введите net_graph 0 , чтобы закрыть сетевую статистику.

Заключение

Не забывайте использовать моментальные снимки для периодического резервного копирования вашего сервера. Это поможет вам избежать переустановки файлов игры, что может занять относительно много времени.Если в какой-то момент что-то пойдет не так, вы можете быстро вернуться к хорошему снимку. Кроме того, вы также можете использовать это для создания изображений и запуска других серверов Counter Strike без необходимости повторять шаги настройки снова.

Время от времени, когда вы замечаете, что игровой сервер не используется, запускайте apt update && apt upgrade от имени пользователя root, чтобы получить последние версии безопасности операционной системы и исправления ошибок. После применения важных исправлений безопасности перезагрузитесь. Также, как пользователь csgo , периодически обновляйте файлы игрового сервера, используя steamcmd + force_install_dir ~ / csgo-ds / + анонимный вход + app_update 740 + выход из .

SkyTech Blaze II Gaming Computer Настольный компьютер — Ryzen 5 2600, 6 ядер, 3,4 ГГц, NVIDIA GeForce GTX 1660 6G, 500G SSD, 8GB DDR4, RGB, AC WiFi, Windows 10 Home 64-bit: Electronics

5.0 из 5 звезд Отличное качество и фантастическая ценность. Не стесняйтесь.
Автор: J.Салас 27 декабря 2019 г.

Позвольте мне начать с того, что я занимаюсь ИТ и построил свой первый компьютер в 90-х годах. Теперь, когда я достаточно устарел, я могу безоговорочно сказать, что Skytech превзошла мои ожидания с этим продуктом.

Эта покупка была сделана для обновления / замены игрового компьютера для моего сына. Я искал компьютер верхнего и среднего уровня, который мог бы хорошо запускать практически любую игру и не обанкротился бы.Будучи парнем из DELL (говорите, что хотите, с ними невозможно превзойти стоимость доллара, удобство и поддержку), я остановился на одном из новых игровых компьютеров G5, которые они выпустили не так давно. i5, 8 ГБ ОЗУ, загрузочный накопитель SSD / конфигурация с двумя жесткими дисками 1 ТБ, 1660 Ti. Все за 750 долларов. Я не мог найти лучшего предложения для этих компонентов.

Увы, они не могли отправить систему до января, а я хотел компьютер до Рождества. Обширные поиски чего-то сопоставимого (которое можно было бы быстро доставить) по той же цене в конечном итоге привели меня к Skytech.Мне пришлось отказаться от Intel в пользу процессора AMD, согласиться на отдельный накопитель SSD на 500 ГБ, и мне пришлось понизить версию 1660 Ti до обычного 1660. Но цена была такой же, и я мог получить ее через два дня. Я решил купить и надеялся на лучшее, так как никогда не имел дела со Skytech. Другие отзывы здесь, на Amazon, были положительными и помогли моему решению.

Агрегат прибыл очень хорошо упакованным и защищенным. Установка была простой, и первоначальный вход в систему и настройка прошли без сучка и задоринки. (Прилагаемые инструкции были очень хорошими.Лично мне они не нужны, но для тех, кто не так хорошо разбирается в компьютерах, как я, они были превосходны.)

Входящие в комплект клавиатура и мышь — шаг вперед по сравнению с тем, что обычно идет в комплекте с компьютерами. Намного лучше, чем то, что поставляется с системами DELL по умолчанию. Не было никаких причин для их замены, и клавиатура продолжает эстетику геймера, подсвечиваясь светодиодной подсветкой. Приятное прикосновение.

Я был рад увидеть, что на компьютере не было установлено НИКАКИХ вредоносных программ или ненужных программ.Фактически, единственное, что мне нужно было очистить и удалить, — это некоторые из программ по умолчанию, которые поставляются с Windows 10, которые не нужны на игровом компьютере.

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

Действительно, когда я открыл компьютер, я заметил, что видеокарта на самом деле была 1660 Ti вместо обычной 1660. Я должен предположить, что у них не было предварительно собранных систем 1660, и отправили мне повышающую систему на убедитесь, что двухдневная доставка была соблюдена. Никто не будет жаловаться на бесплатное обновление, и я, конечно же, благодарю Skytech за то, что он подумал о клиенте, прежде чем он их прибыль. Это мелочь, но такой жест / решение компании имеет большое значение для того, чтобы я снова покупал у них компьютеры в будущем.

Прошла около недели с тех пор, как мой сын начал использовать систему, и не было никаких проблем или жалоб по поводу производительности. Система работает отлично, остается прохладной, тихой и выглядит фантастически. Хотя я думал, что сделаю небольшой шаг вниз по сравнению с Dell, чтобы получить компьютер вовремя, я могу сказать, что я на 100% удовлетворен этой системой, как и мой сын.

(Я добавил несколько изображений системы со вспышкой и без нее, чтобы вы могли видеть ее под его столом)

В будущем я снова буду вести дела со Skytech.Гарантированно.

CS231n Сверточные нейронные сети для визуального распознавания

Содержание:

Сверточные нейронные сети (CNN / ConvNets)

Сверточные нейронные сети

очень похожи на обычные нейронные сети из предыдущей главы: они состоят из нейронов, у которых есть обучаемые веса и смещения. Каждый нейрон получает некоторые входные данные, выполняет скалярное произведение и, возможно, следует за ним с нелинейностью. Вся сеть по-прежнему выражает одну дифференцируемую функцию оценки: от пикселей необработанного изображения на одном конце до оценок класса на другом.И у них по-прежнему есть функция потерь (например, SVM / Softmax) на последнем (полностью подключенном) слое, и все советы / приемы, которые мы разработали для изучения обычных нейронных сетей, по-прежнему применимы.

Так что же меняется? Архитектуры ConvNet явно предполагают, что входными данными являются изображения, что позволяет нам кодировать определенные свойства в архитектуре. Затем они делают прямую функцию более эффективной для реализации и значительно сокращают количество параметров в сети.

Обзор архитектуры

Напоминание: обычные нейронные сети. Как мы видели в предыдущей главе, нейронные сети получают ввод (один вектор) и преобразуют его через серию из скрытых слоев . Каждый скрытый слой состоит из набора нейронов, где каждый нейрон полностью связан со всеми нейронами в предыдущем слое, а нейроны в одном слое функционируют полностью независимо и не имеют общих связей. Последний полностью связанный слой называется «выходным слоем» и в настройках классификации представляет оценки класса.

Обычные нейронные сети плохо масштабируются до полных изображений . В CIFAR-10 изображения имеют размер только 32x32x3 (32 в ширину, 32 в высоту, 3 цветовых канала), поэтому один полностью подключенный нейрон в первом скрытом слое обычной нейронной сети будет иметь 32 * 32 * 3 = 3072 веса. . Эта сумма все еще кажется управляемой, но очевидно, что эта полностью связанная структура не масштабируется для больших изображений. Например, изображение более приличного размера, например 200x200x3, приведет к нейронам с весом 200 * 200 * 3 = 120 000.Более того, мы почти наверняка захотели бы иметь несколько таких нейронов, чтобы параметры быстро складывались! Ясно, что такое полное подключение является расточительным, и огромное количество параметров быстро приведет к переобучению.

Трехмерные объемы нейронов . Сверточные нейронные сети используют тот факт, что входные данные состоят из изображений, и они более разумно ограничивают архитектуру. В частности, в отличие от обычной нейронной сети, уровни ConvNet имеют нейроны, расположенные в трех измерениях: ширина , высота, глубина .(Обратите внимание, что слово глубина здесь относится к третьему измерению объема активации, а не к глубине полной нейронной сети, которая может относиться к общему количеству слоев в сети.) Например, входные изображения в CIFAR-10 — это входной объем активаций, причем объем имеет размеры 32x32x3 (ширина, высота, глубина соответственно). Как мы скоро увидим, нейроны в слое будут подключены только к небольшой области слоя перед ним, а не ко всем нейронам полностью подключенным образом.Более того, конечный выходной слой для CIFAR-10 будет иметь размеры 1x1x10, потому что к концу архитектуры ConvNet мы сократим полное изображение до единого вектора оценок классов, расположенных по измерению глубины. Вот визуализация:

Слева: обычная трехуровневая нейронная сеть. Справа: ConvNet размещает свои нейроны в трех измерениях (ширина, высота, глубина), как это показано на одном из слоев. Каждый слой ConvNet преобразует трехмерный входной объем в трехмерный выходной объем активации нейронов.В этом примере красный входной слой содержит изображение, поэтому его ширина и высота будут размерами изображения, а глубина будет равна 3 (красный, зеленый, синий каналы).

ConvNet состоит из слоев. Каждый слой имеет простой API: он преобразует входной 3D-объем в выходной 3D-объем с некоторой дифференцируемой функцией, которая может иметь или не иметь параметры.

слоев, используемых для построения ConvNets

Как мы описали выше, простая ConvNet — это последовательность уровней, и каждый уровень ConvNet преобразует один объем активаций в другой с помощью дифференцируемой функции.Мы используем три основных типа уровней для построения архитектур ConvNet: сверточный уровень , уровень пула и полностью подключенный уровень (точно так же, как в обычных нейронных сетях). Мы сложим эти слои, чтобы сформировать полную архитектуру ConvNet .

Пример архитектуры: обзор . Мы рассмотрим более подробную информацию ниже, но простая классификация ConvNet для CIFAR-10 может иметь архитектуру [INPUT — CONV — RELU — POOL — FC].Более подробно:

  • INPUT [32x32x3] будет содержать необработанные значения пикселей изображения, в данном случае изображение шириной 32, высотой 32 и с тремя цветовыми каналами R, G, B.
  • Слой
  • CONV будет вычислять выходные данные нейронов, которые подключены к локальным областям на входе, каждый вычисляет скалярное произведение между их весами и небольшой областью, к которой они подключены во входном объеме. Это может привести к объему [32x32x12], если мы решили использовать 12 фильтров.
  • Слой
  • RELU будет применять поэлементную функцию активации, такую ​​как пороговое значение \ (max (0, x) \) на нуле.При этом размер тома остается неизменным ([32x32x12]).
  • Слой
  • POOL выполнит операцию понижения дискретизации по пространственным измерениям (ширина, высота), в результате чего получится такой объем, как [16x16x12].
  • Уровень
  • FC (т.е. полностью подключенный) будет вычислять оценки класса, в результате чего получается объем размером [1x1x10], где каждое из 10 чисел соответствует оценке класса, например, среди 10 категорий CIFAR-10. Как и в случае с обычными нейронными сетями, и как следует из названия, каждый нейрон в этом слое будет связан со всеми числами в предыдущем томе.

Таким образом, ConvNets преобразует исходное изображение слой за слоем из исходных значений пикселей в окончательные оценки класса. Обратите внимание, что некоторые слои содержат параметры, а другие — нет. В частности, уровни CONV / FC выполняют преобразования, которые являются функцией не только активаций во входном объеме, но и параметров (весов и смещений нейронов). С другой стороны, уровни RELU / POOL будут реализовывать фиксированную функцию. Параметры в слоях CONV / FC будут обучаться с градиентным спуском, чтобы оценки классов, вычисляемые ConvNet, согласовывались с метками в обучающем наборе для каждого изображения.

Итого:

  • Архитектура ConvNet в простейшем случае представляет собой список слоев, которые преобразуют объем изображения в выходной объем (например, удерживая оценки класса)
  • Существует несколько различных типов слоев (например, CONV / FC / RELU / POOL, безусловно, самые популярные)
  • Каждый слой принимает входной 3D-объем и преобразует его в выходной 3D-объем с помощью дифференцируемой функции
  • Каждый уровень может иметь или не иметь параметры (например,CONV / FC — нет, RELU / POOL — нет)
  • Каждый уровень может иметь или не иметь дополнительные гиперпараметры (например, CONV / FC / POOL имеют, а RELU нет).
Активации примера архитектуры ConvNet. В исходном томе хранятся пиксели необработанного изображения (слева), а в последнем томе хранятся оценки классов (справа). Каждый объем активаций на пути обработки отображается в виде столбца. Поскольку визуализировать трехмерные объемы сложно, мы располагаем срезы каждого объема рядами. В томе последнего слоя хранятся оценки для каждого класса, но здесь мы визуализируем только отсортированные 5 лучших оценок и печатаем ярлыки для каждого из них.Полная веб-демонстрация показана в заголовке нашего веб-сайта. Показанная здесь архитектура представляет собой крошечную сеть VGG Net, о которой мы поговорим позже.

Теперь мы опишем отдельные слои и детали их гиперпараметров и их взаимосвязей.

Сверточный слой

Слой Conv — это основной строительный блок сверточной сети, который выполняет большую часть тяжелой вычислительной работы.

Обзор и интуиция без мозгов. Давайте сначала обсудим, что вычисляет слой CONV без аналогий мозг / нейрон.Параметры слоя CONV состоят из набора обучаемых фильтров. Каждый фильтр мал в пространстве (по ширине и высоте), но проходит на всю глубину входного объема. Например, типичный фильтр на первом уровне ConvNet может иметь размер 5x5x3 (т.е. 5 пикселей в ширину и высоту и 3, потому что изображения имеют глубину 3, цветовые каналы). Во время прямого прохода мы перемещаем (точнее, сворачиваем) каждый фильтр по ширине и высоте входного объема и вычисляем скалярные произведения между элементами фильтра и входом в любой позиции.Когда мы перемещаем фильтр по ширине и высоте входного объема, мы создаем двухмерную карту активации, которая дает ответы этого фильтра в каждой пространственной позиции. Интуитивно сеть будет изучать фильтры, которые активируются, когда они видят какой-либо тип визуального элемента, такой как край определенной ориентации или пятно определенного цвета на первом слое, или, в конечном итоге, целые соты или похожие на колеса узоры на более высоких уровнях сети. . Теперь у нас будет полный набор фильтров в каждом слое CONV (например,грамм. 12 фильтров), и каждый из них создаст отдельную двухмерную карту активации. Мы сложим эти карты активации по размеру глубины и создадим выходной объем.

Мозг . Если вы поклонник аналогий между мозгом и нейроном, каждую запись в трехмерном выходном объеме можно также интерпретировать как выход нейрона, который смотрит только на небольшую область на входе и разделяет параметры со всеми нейронами слева и справа. пространственно справа (поскольку все эти числа являются результатом применения одного и того же фильтра).

Теперь мы обсудим детали связности нейронов, их расположение в пространстве и их схему разделения параметров.

Локальное подключение. При работе с многомерными входными данными, такими как изображения, как мы видели выше, непрактично подключать нейроны ко всем нейронам в предыдущем томе. Вместо этого мы подключим каждый нейрон только к локальной области входного объема. Пространственная протяженность этой связи — гиперпараметр, называемый рецептивным полем нейрона (эквивалентно размеру фильтра).Степень связности по оси глубины всегда равна глубине входного объема. Важно еще раз подчеркнуть эту асимметрию в том, как мы относимся к пространственным размерам (ширине и высоте) и к измерению глубины: соединения локальны в 2D-пространстве (по ширине и высоте), но всегда полны по всей глубине входного объема. .

Пример 1 . Например, предположим, что входной объем имеет размер [32x32x3] (например, изображение RGB CIFAR-10). Если рецептивное поле (или размер фильтра) составляет 5×5, то каждый нейрон в Conv Layer будет иметь веса в области [5x5x3] во входном объеме, всего 5 * 5 * 3 = 75 весов (и +1 параметр смещения).Обратите внимание, что степень связности по оси глубины должна быть 3, поскольку это глубина входного объема.

Пример 2 . Предположим, что входной том имел размер [16x16x20]. Затем, используя пример размера воспринимающего поля 3×3, каждый нейрон в Conv Layer теперь будет иметь в общей сложности 3 * 3 * 20 = 180 подключений к входному объему. Обратите внимание, что, опять же, подключение является локальным в 2D-пространстве (например, 3×3), но полным по глубине ввода (20).

Слева: Пример входной громкости красным цветом (например,грамм. изображение 32x32x3 CIFAR-10) и примерный объем нейронов в первом сверточном слое. Каждый нейрон в сверточном слое связан только с локальной областью во входном объеме пространственно, но на полную глубину (то есть со всеми цветовыми каналами). Обратите внимание, есть несколько нейронов (5 в этом примере) по глубине, все они смотрят на одну и ту же область на входе: линии, соединяющие этот столбец из 5 нейронов, не представляют веса (т. Е. Эти 5 нейронов не имеют одинаковых веса, но они связаны с 5 разными фильтрами), они просто указывают, что эти нейроны подключены или смотрят на одно и то же рецептивное поле или область входного объема, т.е.е. у них одно и то же рецептивное поле, но разные веса. Справа: Нейроны из главы о нейронных сетях остаются неизменными: они по-прежнему вычисляют скалярное произведение своих весов с входными данными, за которыми следует нелинейность, но их связь теперь ограничена локальной пространственной связью.

Пространственное устройство . Мы объяснили, как каждый нейрон в Conv Layer связан с входным объемом, но мы еще не обсуждали, сколько нейронов находится в выходном объеме и как они устроены.Три гиперпараметра управляют размером выходного объема: глубина , шаг и с заполнением нулями . Мы обсудим это дальше:

  1. Во-первых, глубина выходного объема — это гиперпараметр: он соответствует количеству фильтров, которые мы хотели бы использовать, каждый из которых учится искать что-то другое во входных данных. Например, если первый сверточный слой принимает в качестве входных данных необработанное изображение, то различные нейроны по измерению глубины могут активироваться в присутствии различных ориентированных краев или пятен цвета.Мы будем ссылаться на набор нейронов, которые все смотрят на одну и ту же область входа, как на столбец глубины (некоторые люди также предпочитают термин волокно ).
  2. Во-вторых, мы должны указать шаг , с помощью которого мы перемещаем фильтр. Когда шаг равен 1, мы перемещаем фильтры по одному пикселю за раз. Когда шаг равен 2 (или, как правило, 3 или больше, хотя на практике это редко), фильтры переходят на 2 пикселя за раз, когда мы их перемещаем. Это будет производить меньшие объемы вывода в пространстве.
  3. Как мы скоро увидим, иногда бывает удобно заполнить входной объем нулями по краю. Размер с нулевым заполнением является гиперпараметром. Приятной особенностью нулевого заполнения является то, что он позволяет нам контролировать пространственный размер выходных томов (чаще всего, как мы вскоре увидим, мы будем использовать его для точного сохранения пространственного размера входного объема, чтобы ширина входного и выходного и высота такие же).

Мы можем вычислить пространственный размер выходного объема как функцию размера входного объема (\ (W \)), размера рецептивного поля нейронов Conv Layer (\ (F \)), шага, с которым они применяются (\ (S \)), и количество используемых нулевых отступов (\ (P \)) на границе.Вы можете убедить себя, что правильная формула для расчета количества «подходящих» нейронов задается как \ ((W — F + 2P) / S + 1 \). Например, для входа 7×7 и фильтра 3×3 с шагом 1 и контактной площадкой 0 мы получим выход 5×5. С шагом 2 мы получим результат 3×3. Давайте также посмотрим еще один графический пример:

Иллюстрация пространственного расположения. В этом примере есть только одно пространственное измерение (ось x), один нейрон с размером рецептивного поля F = 3, входной размер W = 5 и нулевое заполнение P = 1. Слева: Нейрон пересекает вход с шагом S = 1, давая результат размером (5 — 3 + 2) / 1 + 1 = 5. Справа: Нейрон использует шаг S = 2, давая выход размера (5 — 3 + 2) / 2 + 1 = 3. Обратите внимание, что шаг S = 3 использовать нельзя, так как он не поместится точно по всему объему. В терминах уравнения это можно определить, поскольку (5 — 3 + 2) = 4 не делится на 3.
Вес нейрона в этом примере [1,0, -1] (показан справа), а его смещение равно нулю.Эти веса являются общими для всех желтых нейронов (см. Разделение параметров ниже).

Использование заполнения нулями . В приведенном выше примере слева обратите внимание, что входное измерение было 5, а выходное измерение было равно: также 5. Это сработало, потому что наши принимающие поля были 3, и мы использовали нулевое заполнение 1. Если не использовалось нулевое заполнение , то выходной объем имел бы пространственное измерение только 3, потому что именно столько нейронов «поместилось бы» на исходном входе.В общем, установка нулевого отступа равным \ (P = (F — 1) / 2 \), когда шаг равен \ (S = 1 \), гарантирует, что входной и выходной объем будут иметь одинаковый пространственный размер. Таким образом очень часто используется заполнение нулями, и мы обсудим все причины, когда поговорим больше об архитектурах ConvNet.

Ограничения на шаг . Отметим еще раз, что гиперпараметры пространственного расположения имеют взаимные ограничения. Например, когда вход имеет размер \ (W = 10 \), нулевое заполнение не используется \ (P = 0 \), а размер фильтра равен \ (F = 3 \), тогда было бы невозможно использовать шаг \ (S = 2 \), поскольку \ ((W — F + 2P) / S + 1 = (10-3 + 0) / 2 + 1 = 4.5 \), то есть не целое число, что указывает на то, что нейроны не «вписываются» аккуратно и симметрично по входу. Следовательно, этот параметр гиперпараметров считается недопустимым, и библиотека ConvNet может выдать исключение или обнулить все остальное, чтобы оно соответствовало, или обрезать ввод, чтобы он соответствовал, или что-то в этом роде. Как мы увидим в разделе «Архитектура ConvNet», правильное определение размеров ConvNets, чтобы все измерения «работали», могло стать настоящей головной болью, которую значительно облегчит использование нулевого отступа и некоторых рекомендаций по проектированию.

Реальный пример . Крижевский и др. Архитектура, победившая в конкурсе ImageNet в 2012 году, принимала изображения размером [227x227x3]. На первом сверточном слое он использовал нейроны с размером рецептивного поля \ (F = 11 \), шагом \ (S = 4 \) и без нулевого заполнения \ (P = 0 \). Поскольку (227 — 11) / 4 + 1 = 55, и поскольку слой Conv имел глубину \ (K = 96 \), выходной объем слоя Conv имел размер [55x55x96]. Каждый из 55 * 55 * 96 нейронов в этом объеме был подключен к области размером [11x11x3] во входном объеме.Более того, все 96 нейронов в каждом столбце глубины подключены к одной и той же области входа [11x11x3], но, конечно, с разными весами. В качестве забавы, если вы читаете настоящую статью, в ней утверждается, что входные изображения были 224×224, что, безусловно, неверно, потому что (224-11) / 4 + 1 явно не является целым числом. Это сбило с толку многих людей в истории ConvNets, и мало что известно о том, что произошло. Мое собственное предположение состоит в том, что Алекс использовал нулевое заполнение из 3 дополнительных пикселей, о которых он не упоминает в статье.

Совместное использование параметров. Схема совместного использования параметров используется в сверточных слоях для управления количеством параметров. Используя приведенный выше реальный пример, мы видим, что в первом слое Conv имеется 55 * 55 * 96 = 290 400 нейронов, и каждый имеет 11 * 11 * 3 = 363 веса и 1 смещение. Вместе это добавляет до 2 * 364 = 105 705 600 параметров только на первом уровне ConvNet. Понятно, что это очень много.

Оказывается, мы можем значительно сократить количество параметров, сделав одно разумное предположение: если одна функция полезна для вычисления в некоторой пространственной позиции (x, y), то ее также полезно вычислить в другой позиции ( х2, у2).Другими словами, обозначая один двумерный срез глубины как срез глубины (например, объем размером [55x55x96] имеет 96 срезов глубины, каждый размером [55×55]), мы собираемся ограничить нейроны в каждом срез глубины, чтобы использовать те же веса и смещение. С этой схемой совместного использования параметров первый слой Conv в нашем примере теперь будет иметь только 96 уникальных наборов весов (по одному для каждого среза глубины), всего 96 * 11 * 11 * 3 = 34 848 уникальных весов или 34 944 параметра ( +96 предубеждений). В качестве альтернативы все нейроны размером 55 * 55 в каждом глубинном срезе теперь будут использовать одни и те же параметры.На практике во время обратного распространения каждый нейрон в объеме будет вычислять градиент для своих весов, но эти градиенты будут суммироваться по каждому срезу глубины и обновлять только один набор весов для каждого среза.

Обратите внимание, что если все нейроны в одном глубинном срезе используют один и тот же вектор весов, то прямой проход слоя CONV на каждом глубинном срезе может быть вычислен как свертка весов нейрона с входным объемом (отсюда и название : Сверточный слой).Вот почему обычно наборы весов называются фильтром (или ядром ), который свертывается с вводом.

Примеры фильтров, изученные Крижевским и др. Каждый из 96 фильтров, показанных здесь, имеет размер [11x11x3], и каждый из них используется нейронами размером 55 * 55 в одном глубинном срезе. Обратите внимание, что предположение о совместном использовании параметров относительно разумно: если обнаружение горизонтального края важно в каком-то месте изображения, оно должно интуитивно быть полезным и в другом месте из-за трансляционно-инвариантной структуры изображений.Следовательно, нет необходимости переучиваться, чтобы обнаруживать горизонтальный край в каждом из 55 * 55 различных мест в выходном объеме Conv-слоя.

Обратите внимание, что иногда предположение о совместном использовании параметров может не иметь смысла. Это особенно актуально, когда входные изображения в ConvNet имеют некоторую конкретную центрированную структуру, где мы должны ожидать, например, что на одной стороне изображения должны быть изучены совершенно разные функции, чем на другой. Одним из практических примеров является случай, когда в качестве входных данных используются лица, расположенные по центру изображения.Вы можете ожидать, что различные особенности глаз или волос могут (и должны) изучаться в разных пространственных точках. В этом случае обычно ослабляют схему совместного использования параметров и вместо этого просто называют уровень , уровень с локальным подключением .

Примеры Numpy. Чтобы сделать обсуждение выше более конкретным, давайте выразим те же идеи, но в коде и на конкретном примере. Предположим, что входной объем представляет собой массив numpy X . Тогда:

  • Столбец глубины (или волокно ) в позиции (x, y) будет активами X [x, y ,:] .
  • Срез глубины или, что эквивалентно, карта активации на глубине d будет активами X [:,:, d] .

Пример слоя Conv . Предположим, что входной объем X имеет форму X.shape: (11,11,4) . Предположим далее, что мы не используем нулевое заполнение (\ (P = 0 \)), что размер фильтра равен \ (F = 5 \), а шаг равен \ (S = 2 \). Таким образом, выходной объем будет иметь пространственный размер (11-5) / 2 + 1 = 4, что дает объем с шириной и высотой 4.Карта активации в выходном томе (назовите ее V ) будет выглядеть следующим образом (в этом примере вычисляются только некоторые элементы):

  • V [0,0,0] = np.sum (X [: 5,: 5 ,:] * W0) + b0
  • V [1,0,0] = np.sum (X [2: 7,: 5 ,:] * W0) + b0
  • V [2,0,0] = np.sum (X [4: 9,: 5 ,:] * W0) + b0
  • V [3,0,0] = np.sum (X [6: 11,: 5 ,:] * W0) + b0

Помните, что в numpy операция * выше означает поэлементное умножение между массивами.Также обратите внимание, что весовой вектор W0 является весовым вектором этого нейрона, а b0 — смещение. Здесь предполагается, что W0 имеет форму W0.shape: (5,5,4) , поскольку размер фильтра равен 5, а глубина входного объема равна 4. Обратите внимание, что в каждой точке мы вычисляем скалярный продукт, который мы видели ранее в обычных нейронных сетях. Кроме того, мы видим, что мы используем тот же вес и смещение (из-за совместного использования параметров), и где размеры по ширине увеличиваются с шагом 2 (т.е.е. шаг). Чтобы построить вторую карту активации в выходном томе, у нас будет:

  • V [0,0,1] = np.sum (X [: 5,: 5 ,:] * W1) + b1
  • V [1,0,1] = np.sum (X [2: 7,: 5 ,:] * W1) + b1
  • V [2,0,1] = np.sum (X [4: 9,: 5 ,:] * W1) + b1
  • V [3,0,1] = np.sum (X [6: 11,: 5 ,:] * W1) + b1
  • V [0,1,1] = np.sum (X [: 5,2: 7 ,:] * W1) + b1 (пример движения по y)
  • В [2,3,1] = np.sum (X [4: 9,6: 11 ,:] * W1) + b1 (или по обоим)

, где мы видим, что мы индексируем второе измерение глубины в V (с индексом 1), потому что мы вычисляем вторую карту активации и что теперь используется другой набор параметров ( W1 ). В приведенном выше примере мы для краткости опускаем некоторые другие операции, которые Conv Layer будет выполнять для заполнения других частей выходного массива V . Кроме того, помните, что эти карты активации часто выполняются поэлементно с помощью функции активации, такой как ReLU, но здесь это не показано.

Резюме . Подводя итог, уровень Conv:

  • Принимает том размером \ (W_1 \ times H_1 \ times D_1 \)
  • Требуется четыре гиперпараметра:
    • Кол-во фильтров \ (К \),
    • их пространственная протяженность \ (F \),
    • шаг \ (S \),
    • количество нулевых отступов \ (P \).
  • Создает объем размером \ (W_2 \ раз H_2 \ раз D_2 \), где:
    • \ (W_2 = (W_1 — F + 2P) / S + 1 \)
    • \ (H_2 = (H_1 — F + 2P) / S + 1 \) (т.е. ширина и высота вычисляются одинаково по симметрии)
    • \ (D_2 = К \)
  • При совместном использовании параметров вводятся веса \ (F \ cdot F \ cdot D_1 \) для каждого фильтра, всего \ ((F \ cdot F \ cdot D_1) \ cdot K \) весов и \ (K \) смещений. .
  • В выходном объеме срез \ (d \) — й глубины (размером \ (W_2 \ times H_2 \)) является результатом выполнения действительной свертки \ (d \) — го фильтра по входному объему. с шагом \ (S \), а затем смещением на \ (d \) — й уклон.

Обычная установка гиперпараметров — \ (F = 3, S = 1, P = 1 \). Однако существуют общие соглашения и практические правила, которые мотивируют эти гиперпараметры. См. Раздел «Архитектура ConvNet» ниже.

Демонстрация свертки . Ниже представлена ​​работающая демонстрация слоя CONV. Поскольку трехмерные объемы трудно визуализировать, все объемы (входной объем (синий), весовой объем (красный), выходной объем (зеленый)) визуализируются с каждым срезом глубины, сложенным в ряды.Входной объем имеет размер \ (W_1 = 5, H_1 = 5, D_1 = 3 \), а параметры слоя CONV равны \ (K = 2, F = 3, S = 2, P = 1 \). То есть у нас есть два фильтра размером \ (3 \ times 3 \), и они применяются с шагом 2. Следовательно, размер выходного тома имеет пространственный размер (5 — 3 + 2) / 2 + 1 = 3. Более того, обратите внимание на то, что к входному объему применяется заполнение \ (P = 1 \), в результате чего внешняя граница входного объема становится нулевой. Визуализация ниже повторяет активацию вывода (зеленый) и показывает, что каждый элемент вычисляется путем поэлементного умножения выделенного ввода (синий) на фильтр (красный), суммирования и последующего смещения результата смещением.

Реализация как матричное умножение . Обратите внимание, что операция свертки по существу выполняет скалярные произведения между фильтрами и локальными областями ввода. Распространенный шаблон реализации уровня CONV состоит в том, чтобы воспользоваться этим фактом и сформулировать прямой проход сверточного слоя как одну большую матрицу, умноженную следующим образом:

  1. Локальные области входного изображения растягиваются в столбцы в операции, обычно называемой im2col .Например, если на входе [227x227x3] и он должен быть свернут с фильтрами 11x11x3 на шаге 4, то мы должны взять [11x11x3] блоков пикселей на входе и растянуть каждый блок в вектор-столбец размером 11 * 11 * 3 = 363. Итерация этого процесса на входе с шагом 4 дает (227-11) / 4 + 1 = 55 точек по ширине и высоте, что приводит к выходной матрице X_col из im2col размером [363 x 3025], где каждый столбец представляет собой вытянутое воспринимающее поле, а всего их 55 * 55 = 3025.Обратите внимание, что поскольку принимающие поля перекрываются, каждое число во входном объеме может дублироваться в нескольких отдельных столбцах.
  2. Веса слоя CONV аналогичным образом растягиваются в ряды. Например, если имеется 96 фильтров размером [11x11x3], это даст матрицу W_row размера [96 x 363].
  3. Результат свертки теперь эквивалентен выполнению одного большого матричного умножения np.dot (W_row, X_col) , которое оценивает скалярное произведение между каждым фильтром и каждым местоположением принимающего поля.В нашем примере результат этой операции будет [96 x 3025], что даст результат скалярного произведения каждого фильтра в каждом месте.
  4. Наконец, результат должен быть возвращен к правильному выходному размеру [55x55x96].

У этого подхода есть обратная сторона, заключающаяся в том, что он может использовать большой объем памяти, поскольку некоторые значения во входном объеме многократно реплицируются в X_col . Однако преимущество состоит в том, что существует множество очень эффективных реализаций умножения матриц, которыми мы можем воспользоваться (например, в широко используемом API BLAS).Более того, та же идея im2col может быть повторно использована для выполнения операции объединения, которую мы обсудим далее.

Обратное распространение. Обратный проход для операции свертки (как для данных, так и для весов) также является сверткой (но с фильтрами с перевернутым пространством). Это легко вывести в одномерном случае на игрушечном примере (пока не раскрываемом).

Свертка 1×1 . Кстати, в нескольких статьях используются свертки 1×1, впервые исследованные Network in Network.Некоторые люди сначала смущаются, увидев свертки 1×1, особенно когда они исходят из фона обработки сигналов. Обычно сигналы двумерны, поэтому свертки 1×1 не имеют смысла (это просто точечное масштабирование). Однако в ConvNets это не так, потому что нужно помнить, что мы работаем с трехмерными объемами и что фильтры всегда проходят на всю глубину входного объема. Например, если на входе [32x32x3], то свертки 1×1 будут эффективно выполнять 3-мерные скалярные произведения (поскольку глубина ввода составляет 3 канала).

Дилатированные извилины. Недавняя разработка (например, см. Статью Фишера Ю и Владлена Колтуна) состоит в том, чтобы ввести еще один гиперпараметр в слой CONV, называемый расширением . До сих пор мы обсуждали только смежные фильтры CONV. Однако можно использовать фильтры с промежутками между ячейками, что называется расширением. Например, в одном измерении фильтр w размера 3 будет вычислять по входным данным x следующее: w [0] * x [0] + w [1] * x [1] + w [2] * х [2] .Это расширение 0. Для расширения 1 фильтр вместо этого вычислит w [0] * x [0] + w [1] * x [2] + w [2] * x [4] ; Другими словами, между приложениями есть разрыв в 1. Это может быть очень полезно в некоторых настройках для использования в сочетании с фильтрами с нулевым расширением, потому что это позволяет вам гораздо более агрессивно объединять пространственную информацию по входам с меньшим количеством слоев. Например, если вы складываете два слоя 3×3 CONV друг на друга, вы можете убедить себя, что нейроны на 2-м слое являются функцией участка ввода 5×5 (мы бы сказали, что эффективное рецептивное поле из них нейронов 5х5).Если мы будем использовать расширенные извилины, то это эффективное рецептивное поле будет расти намного быстрее.

Уровень пула

Обычно в архитектуре ConvNet между последовательными слоями Conv периодически вставляют слой объединения. Его функция заключается в постепенном уменьшении пространственного размера представления для уменьшения количества параметров и вычислений в сети и, следовательно, для управления переобучением. Уровень объединения работает независимо на каждом глубинном срезе ввода и изменяет его размер в пространстве с помощью операции MAX.Самая распространенная форма — это объединяющий слой с фильтрами размера 2×2, применяемыми с шагом 2 субдискретизации каждого среза глубины на входе на 2 по ширине и высоте, отбрасывая 75% активаций. В этом случае каждая операция MAX будет принимать не более 4 чисел (небольшая область 2×2 на некотором срезе глубины). Размер глубины остается неизменным. В более общем смысле, уровень объединения:

  • Принимает том размером \ (W_1 \ times H_1 \ times D_1 \)
  • Требуется два гиперпараметра:
    • их пространственная протяженность \ (F \),
    • шаг \ (S \),
  • Создает объем размером \ (W_2 \ раз H_2 \ раз D_2 \), где:
    • \ (W_2 = (W_1 — F) / S + 1 \)
    • \ (H_2 = (H_1 — F) / S + 1 \)
    • \ (D_2 = D_1 \)
  • Вводит нулевые параметры, так как он вычисляет фиксированную функцию ввода
  • Для слоев пула не принято заполнять ввод нулевым заполнением.

Стоит отметить, что на практике встречаются только два наиболее часто встречающихся варианта максимального уровня объединения: уровень объединения с \ (F = 3, S = 2 \) (также называемый перекрывающимся объединением) и, чаще, \ ( F = 2, S = 2 \). Объединение размеров с более крупными рецептивными полями слишком разрушительно.

Общий пул . В дополнение к максимальному объединению, блоки объединения могут также выполнять другие функции, такие как среднего пула или даже пула L2-norm .Исторически сложилось так, что средний пул часто использовался, но в последнее время он потерял популярность по сравнению с операцией максимального пула, который на практике работает лучше.

Слой объединения уменьшает объемную дискретизацию в пространстве независимо в каждом глубинном срезе входного объема. Слева: В этом примере входной объем размером [224x224x64] объединяется с размером фильтра 2, шаг 2 в выходной объем размером [112x112x64]. Обратите внимание, что глубина громкости сохраняется. Справа: Наиболее распространенная операция понижения дискретизации — max, что приводит к максимальному объединению , здесь показано с шагом 2.То есть каждый максимум берется за 4 числа (маленький квадрат 2×2).

Обратное распространение . Вспомните из главы, посвященной обратному распространению, что обратный проход для операции max (x, y) имеет простую интерпретацию как направление градиента только на вход, который имел наибольшее значение в прямом проходе. Следовательно, во время прямого прохода уровня объединения обычно отслеживается индекс максимальной активации (иногда также называемый коммутаторами ), чтобы градиентная маршрутизация была эффективной во время обратного распространения.

Избавление от пула . Многим не нравится операция объединения в пул, и они думают, что мы можем обойтись без нее. Например, «Стремление к простоте: вся сверточная сеть» предлагает отказаться от уровня объединения в пользу архитектуры, которая состоит только из повторяющихся уровней CONV. Чтобы уменьшить размер представления, они предлагают время от времени использовать более крупный шаг в слое CONV. Также было обнаружено, что отказ от слоев пула важен при обучении хороших генеративных моделей, таких как вариационные автокодеры (VAE) или генеративные состязательные сети (GAN).Похоже, что в будущих архитектурах будет очень мало уровней объединения или вообще не будет.

Слой нормализации

Многие типы уровней нормализации были предложены для использования в архитектурах ConvNet, иногда с намерением реализовать схемы ингибирования, наблюдаемые в биологическом мозге. Однако с тех пор эти уровни перестали пользоваться популярностью, потому что на практике их вклад был минимальным, если вообще был. Для различных типов нормализации см. Обсуждение в API библиотеки cuda-convnet Алекса Крижевского.

Полносвязный слой

Нейроны в полностью подключенном слое имеют полные соединения со всеми активациями на предыдущем уровне, как это видно в обычных нейронных сетях. Следовательно, их активации могут быть вычислены с помощью матричного умножения с последующим смещением смещения. См. Раздел примечаний Neural Network для получения дополнительной информации.

Преобразование слоев FC в слои CONV

Стоит отметить, что единственное различие между слоями FC и CONV состоит в том, что нейроны в слое CONV подключены только к локальной области на входе, и что многие из нейронов в объеме CONV имеют общие параметры.Однако нейроны в обоих слоях по-прежнему вычисляют скалярные произведения, поэтому их функциональная форма идентична. Следовательно, оказывается, что можно преобразовать между слоями FC и CONV:

  • Для любого уровня CONV существует уровень FC, который реализует ту же функцию пересылки. Матрица весов будет большой матрицей, которая в основном равна нулю, за исключением некоторых блоков (из-за локальной связи), где веса во многих из блоков равны (из-за совместного использования параметров).
  • И наоборот, любой уровень FC может быть преобразован в уровень CONV.Например, слой FC с \ (K = 4096 \), который смотрит на некоторый входной объем размером \ (7 \ times 7 \ times 512 \), может быть эквивалентно выражен как слой CONV с \ (F = 7, P = 0, S = 1, K = 4096 \). Другими словами, мы устанавливаем размер фильтра в точности равным размеру входного объема, и, следовательно, на выходе будет просто \ (1 \ умножить на 1 \ умножить на 4096 \), поскольку только один столбец глубины «умещается» на входе. объем, дающий тот же результат, что и исходный слой FC.

FC-> CONV преобразование .Из этих двух преобразований возможность преобразования уровня FC в уровень CONV особенно полезна на практике. Рассмотрим архитектуру ConvNet, которая принимает изображение 224x224x3, а затем использует серию слоев CONV и слоев POOL, чтобы уменьшить изображение до объема активации размером 7x7x512 (в архитектуре AlexNet , которую мы увидим позже, это делается с помощью использование 5 объединяющих слоев, которые каждый раз уменьшают размер входных данных в два раза, в результате чего конечный пространственный размер равен 224/2/2/2/2/2 = 7).Отсюда AlexNet использует два слоя FC размером 4096 и, наконец, последние слои FC с 1000 нейронами, которые вычисляют оценки класса. Мы можем преобразовать каждый из этих трех слоев FC в слои CONV, как описано выше:

  • Замените первый слой FC, который смотрит на объем [7x7x512], на слой CONV, который использует размер фильтра \ (F = 7 \), давая выходной объем [1x1x4096].
  • Замените второй слой FC на слой CONV, который использует размер фильтра \ (F = 1 \), давая выходной объем [1x1x4096]
  • Замените последний слой FC аналогичным образом на \ (F = 1 \), получив окончательный результат [1x1x1000]

Каждое из этих преобразований на практике может включать в себя манипуляции (например,грамм. преобразование) весовой матрицы \ (W \) в каждом уровне FC в фильтры уровня CONV. Оказывается, это преобразование позволяет нам очень эффективно «перемещать» исходную ConvNet по множеству пространственных положений на большом изображении за один прямой проход.

Например, если изображение 224×224 дает объем размером [7x7x512], то есть уменьшение на 32, то пересылка изображения размером 384×384 через преобразованную архитектуру даст эквивалентный объем размером [12x12x512], поскольку 384/32 = 12 Выполнение следующих трех слоев CONV, которые мы только что преобразовали из слоев FC, теперь даст окончательный объем размером [6x6x1000], поскольку (12-7) / 1 + 1 = 6.Обратите внимание, что вместо одного вектора оценок классов размером [1x1x1000] мы теперь получаем весь массив оценок классов 6×6 на изображении 384×384.

Оценка исходной ConvNet (со слоями FC) независимо по кадрированию 224×224 изображения 384×384 с шагом 32 пикселя дает тот же результат, что и однократная пересылка преобразованной ConvNet.

Естественно, пересылка преобразованной ConvNet за один раз намного эффективнее, чем повторение исходной ConvNet по всем этим 36 местоположениям, поскольку 36 оценок совместно используют вычисления.Этот трюк часто используется на практике для повышения производительности, где, например, принято изменять размер изображения, чтобы сделать его больше, использовать преобразованную ConvNet для оценки оценок класса во многих пространственных положениях, а затем усреднять оценки класса.

Наконец, что, если бы мы хотели эффективно применить исходную ConvNet к изображению, но с шагом менее 32 пикселей? Мы могли добиться этого с помощью нескольких проходов вперед. Например, обратите внимание, что если бы мы хотели использовать шаг в 16 пикселей, мы могли бы сделать это, объединив объемы, полученные путем пересылки преобразованного ConvNet дважды: сначала над исходным изображением, а затем над изображением, но с пространственным смещением изображения на 16 пикселей. как по ширине, так и по высоте.

  • Записная книжка IPython в Net Surgery показывает, как выполнить преобразование на практике, в коде (с использованием Caffe)

Архитектуры ConvNet

Мы видели, что сверточные сети обычно состоят только из трех типов уровней: CONV, POOL (мы предполагаем максимальный пул, если не указано иное) и FC (сокращенно от полностью подключенного). Мы также явно напишем функцию активации RELU как слой, который применяет поэлементную нелинейность. В этом разделе мы обсудим, как они обычно складываются вместе, чтобы сформировать целые ConvNets.

Образцы слоев

Наиболее распространенная форма архитектуры ConvNet состоит из нескольких слоев CONV-RELU, следующих за ними слоев POOL и повторения этого шаблона до тех пор, пока изображение не будет пространственно объединено до небольшого размера. В какой-то момент обычно переходят на полносвязные слои. Последний полностью подключенный уровень содержит выходные данные, такие как оценки класса. Другими словами, наиболее распространенная архитектура ConvNet следует шаблону:

ВХОД -> [[CONV -> RELU] * N -> POOL?] * M -> [FC -> RELU] * K -> FC

, где * означает повторение, а БАССЕЙН? указывает необязательный уровень объединения.Более того, N> = 0 (и обычно N <= 3 ), M> = 0 , K> = 0 (и обычно K <3 ). Например, вот несколько распространенных архитектур ConvNet, которые вы можете увидеть, следуя этому шаблону:

  • INPUT -> FC , реализует линейный классификатор. Здесь N = M = K = 0 .
  • ВХОД -> CONV -> RELU -> FC
  • ВХОД -> [CONV -> RELU -> POOL] * 2 -> FC -> RELU -> FC .Здесь мы видим, что между каждым слоем POOL есть один слой CONV.
  • INPUT -> [CONV -> RELU -> CONV -> RELU -> POOL] * 3 -> [FC -> RELU] * 2 -> FC Здесь мы видим два слоя CONV, сложенных перед каждым слоем POOL. Как правило, это хорошая идея для больших и более глубоких сетей, потому что несколько составных слоев CONV могут развить более сложные функции входного тома до операции деструктивного объединения.

Предпочитайте набор небольших фильтров CONV одному большому принимающему полю CONV уровня .Предположим, вы складываете три слоя 3x3 CONV друг на друга (конечно, с промежуточными нелинейностями). В этой схеме каждый нейрон на первом уровне CONV имеет вид входного объема 3x3. Нейрон на втором уровне CONV имеет вид 3x3 первого слоя CONV и, следовательно, расширенный вид входного объема 5x5. Точно так же нейрон на третьем уровне CONV имеет вид 3x3 второго слоя CONV и, следовательно, вид 7x7 входного объема. Предположим, что вместо этих трех уровней 3x3 CONV, мы хотели использовать только один слой CONV с рецептивными полями 7x7.2 \) параметры. Интуитивно понятно, что наложение слоев CONV с крошечными фильтрами вместо одного слоя CONV с большими фильтрами позволяет нам выражать более мощные функции ввода и с меньшим количеством параметров. В качестве практического недостатка нам может потребоваться больше памяти для хранения всех результатов промежуточного уровня CONV, если мы планируем использовать обратное распространение.

Последние отъезды. Следует отметить, что традиционная парадигма линейного списка уровней недавно подверглась сомнению в начальных архитектурах Google, а также в текущих (современных) остаточных сетях от Microsoft Research Asia.Оба из них (см. Подробности ниже в разделе тематических исследований) имеют более сложные и разные структуры подключения.

На практике: используйте то, что лучше всего работает в ImageNet . Если вы чувствуете некоторую усталость при обдумывании архитектурных решений, вам будет приятно узнать, что в 90% или более приложений вам не следует об этом беспокоиться. Мне нравится резюмировать этот момент следующим образом: « не будь героем »: вместо того, чтобы использовать собственную архитектуру для решения проблемы, вам следует взглянуть на ту архитектуру, которая в настоящее время лучше всего работает в ImageNet, загрузить предварительно обученную модель и настроить ее на своих данных. .Вам редко когда-либо придется обучать ConvNet с нуля или проектировать с нуля. Я также говорил об этом в школе глубокого обучения.

Шаблоны размеров слоев

До сих пор мы не упоминали общие гиперпараметры, используемые на каждом из уровней в ConvNet. Сначала мы сформулируем общие практические правила определения размеров архитектур, а затем, следуя правилам, обсудим обозначения:

Входной слой (содержащий изображение) должен делиться на 2 многократно.Общие числа включают 32 (например, CIFAR-10), 64, 96 (например, STL-10) или 224 (например, обычные ImageNet ConvNets), 384 и 512.

Сверточные слои должны использовать небольшие фильтры (например, 3x3 или самое большее 5x5) с шагом \ (S = 1 \) и, что особенно важно, заполнять входной объем нулями таким образом, чтобы сверточный слой не изменить пространственные размеры ввода. То есть, когда \ (F = 3 \), то использование \ (P = 1 \) сохранит исходный размер ввода. Когда \ (F = 5 \), \ (P = 2 \).Для общего \ (F \) видно, что \ (P = (F - 1) / 2 \) сохраняет размер ввода. Если вам необходимо использовать фильтры большего размера (например, 7x7 или около того), это обычно можно увидеть только на самом первом сверточном слое, который смотрит на входное изображение.

Слои пула отвечают за понижающую дискретизацию пространственных размеров входных данных. Наиболее распространенная настройка - использовать max-pooling с принимающими полями 2x2 (то есть \ (F = 2 \)) и с шагом 2 (то есть \ (S = 2 \)). Обратите внимание, что это отбрасывает ровно 75% активаций во входном томе (из-за пониженной дискретизации на 2 как по ширине, так и по высоте).Другой немного менее распространенной настройкой является использование рецептивных полей 3x3 с шагом 2, но это усложняет «подгонку» (например, для слоя 32x32x3 потребуется нулевое заполнение, чтобы использовать слой max-pooling с принимающим полем 3x3 и шагом. 2). Очень редко можно увидеть размер принимающего поля для максимального объединения, превышающий 3, потому что в этом случае объединение слишком агрессивно и с потерями. Обычно это приводит к снижению производительности.

Уменьшение головной боли при калибровке. Схема, представленная выше, приятна, потому что все слои CONV сохраняют пространственный размер своих входных данных, в то время как только слои POOL отвечают за пространственную понижающую дискретизацию объемов.В альтернативной схеме, где мы используем шаги больше 1 или не обнуляем входные данные в слоях CONV, нам пришлось бы очень тщательно отслеживать входные объемы по всей архитектуре CNN и следить за тем, чтобы все шаги и фильтры «работали» out », и что архитектура ConvNet имеет красивую и симметричную проводку.

Зачем использовать шаг 1 в CONV? Меньшие шаги лучше работают на практике. Кроме того, как уже упоминалось, шаг 1 позволяет нам оставить всю пространственную понижающую дискретизацию слоям POOL, при этом слои CONV только преобразуют входной объем по глубине.

Зачем нужны отступы? В дополнение к вышеупомянутому преимуществу сохранения постоянных пространственных размеров после CONV, выполнение этого фактически улучшает производительность. Если бы слои CONV не обнуляли входные данные и выполняли только допустимые свертки, то размер томов уменьшился бы на небольшую величину после каждого CONV, и информация на границах была бы «смыта» слишком быстро.

Компрометация на основе ограничений памяти. В некоторых случаях (особенно на ранних этапах архитектур ConvNet) объем памяти может увеличиваться очень быстро в соответствии с приведенными выше эмпирическими правилами.Например, фильтрация изображения 224x224x3 с тремя слоями 3x3 CONV с 64 фильтрами в каждом и заполнением 1 создаст три активационных тома размером [224x224x64]. Это составляет в общей сложности около 10 миллионов активаций или 72 МБ памяти (на изображение, как для активаций, так и для градиентов). Поскольку графические процессоры часто ограничены памятью, возможно, придется пойти на компромисс. На практике люди предпочитают идти на компромисс только на первом уровне CONV сети. Например, одним из компромиссов может быть использование первого слоя CONV с размером фильтра 7x7 и шагом 2 (как видно в сети ZF).В качестве другого примера AlexNet использует размер фильтра 11x11 и шаг 4.

Примеры из практики

Есть несколько архитектур в области сверточных сетей, у которых есть имя. Наиболее распространены:

  • LeNet . Первые успешные приложения сверточных сетей были разработаны Янном ЛеКуном в 1990-х годах. Из них самой известной является архитектура LeNet, которая использовалась для чтения почтовых индексов, цифр и т. Д.
  • AlexNet .Первой работой, популяризировавшей сверточные сети в компьютерном зрении, была AlexNet, разработанная Алексом Крижевским, Ильей Суцкевер и Джеффом Хинтоном. AlexNet был представлен на конкурсе ImageNet ILSVRC в 2012 году и значительно превзошел второго участника, занявшего второе место (ошибка первой пятерки в 16% по сравнению с занявшим второе место с ошибкой 26%). Сеть имела очень похожую архитектуру на LeNet, но была глубже, крупнее и содержала сверточные слои, расположенные друг над другом (раньше было обычным делом иметь только один слой CONV, за которым сразу же следовал слой POOL).
  • Сеть ZF . Победителем ILSVRC 2013 стала сверточная сеть от Мэтью Цейлера и Роба Фергуса. Он стал известен как ZFNet (сокращение от Zeiler & Fergus Net). Это было улучшение AlexNet за счет настройки гиперпараметров архитектуры, в частности, путем увеличения размера средних сверточных слоев и уменьшения шага и размера фильтра на первом слое.
  • GoogLeNet . Победителем ILSVRC 2014 стала сверточная сеть от Szegedy et al.от Google. Его основным вкладом была разработка Начального модуля , который резко сократил количество параметров в сети (4M по сравнению с AlexNet с 60M). Кроме того, в этом документе используется средний пул вместо полностью связанных слоев в верхней части ConvNet, что устраняет большое количество параметров, которые, кажется, не имеют большого значения. Существует также несколько версий GoogLeNet, последняя из которых - Inception-v4.
  • VGGNet . Второе место на ILSVRC 2014 заняла сеть Карена Симоняна и Андрея Зиссермана, которая стала известна как VGGNet.Его основной вклад состоял в том, чтобы показать, что глубина сети является критически важным компонентом хорошей производительности. Их последняя лучшая сеть содержит 16 уровней CONV / FC и, что интересно, имеет чрезвычайно однородную архитектуру, которая выполняет только свертки 3x3 и объединение 2x2 от начала до конца. Их предварительно обученная модель доступна для использования в Caffe. Обратной стороной VGGNet является то, что ее дороже оценивать и использует гораздо больше памяти и параметров (140 МБ). Большинство этих параметров находятся на первом полностью подключенном уровне, и с тех пор было обнаружено, что эти уровни FC могут быть удалены без снижения производительности, что значительно сокращает количество необходимых параметров.
  • ResNet . Остаточная сеть, разработанная Kaiming He et al. был победителем ILSVRC 2015. Он отличается особыми пропускными соединениями и интенсивным использованием пакетной нормализации. В архитектуре также отсутствуют полностью связанные уровни в конце сети. Читателю также предлагается ознакомиться с презентацией Кайминга (видео, слайды) и некоторыми недавними экспериментами, воспроизводящими эти сети в Torch. ResNets в настоящее время являются современными моделями сверточных нейронных сетей и являются выбором по умолчанию для использования ConvNets на практике (по состоянию на 10 мая 2016 г.).В частности, также ознакомьтесь с более поздними разработками, которые изменяют оригинальную архитектуру от Kaiming He et al. Сопоставления удостоверений в глубоких остаточных сетях (опубликовано в марте 2016 г.).

Подробнее о VGGNet . Давайте разберем VGGNet более подробно в качестве примера. Вся VGGNet состоит из слоев CONV, которые выполняют свертки 3x3 с шагом 1 и площадкой 1, и слоев POOL, которые выполняют максимальное объединение 2x2 с шагом 2 (без заполнения). Мы можем записывать размер представления на каждом этапе обработки и отслеживать как размер представления, так и общее количество весов:

  ВХОД: [224x224x3] память: 224 * 224 * 3 = 150K веса: 0
CONV3-64: [224x224x64] память: 224 * 224 * 64 = 3.2М веса: (3 * 3 * 3) * 64 = 1728
CONV3-64: [224x224x64] память: 224 * 224 * 64 = 3,2M веса: (3 * 3 * 64) * 64 = 36 864
POOL2: [112x112x64] память: 112 * 112 * 64 = 800K весов: 0
CONV3-128: [112x112x128] память: 112 * 112 * 128 = 1,6M веса: (3 * 3 * 64) * 128 = 73728
CONV3-128: [112x112x128] память: 112 * 112 * 128 = 1,6M веса: (3 * 3 * 128) * 128 = 147 456
POOL2: [56x56x128] память: 56 * 56 * 128 = 400K весов: 0
CONV3-256: [56x56x256] память: 56 * 56 * 256 = 800K веса: (3 * 3 * 128) * 256 = 294 912
CONV3-256: [56x56x256] память: 56 * 56 * 256 = 800K веса: (3 * 3 * 256) * 256 = 589 824
CONV3-256: [56x56x256] память: 56 * 56 * 256 = 800K веса: (3 * 3 * 256) * 256 = 589 824
POOL2: [28x28x256] память: 28 * 28 * 256 = 200K весов: 0
CONV3-512: [28x28x512] память: 28 * 28 * 512 = 400 КБ весов: (3 * 3 * 256) * 512 = 1,179 648
CONV3-512: [28x28x512] память: 28 * 28 * 512 = 400K веса: (3 * 3 * 512) * 512 = 2359 296
CONV3-512: [28x28x512] память: 28 * 28 * 512 = 400K веса: (3 * 3 * 512) * 512 = 2359 296
POOL2: [14x14x512] память: 14 * 14 * 512 = 100K весов: 0
CONV3-512: [14x14x512] память: 14 * 14 * 512 = 100K веса: (3 * 3 * 512) * 512 = 2359 296
CONV3-512: [14x14x512] память: 14 * 14 * 512 = 100K веса: (3 * 3 * 512) * 512 = 2359 296
CONV3-512: [14x14x512] память: 14 * 14 * 512 = 100K веса: (3 * 3 * 512) * 512 = 2359 296
POOL2: [7x7x512] память: 7 * 7 * 512 = 25K весов: 0
FC: [1x1x4096] память: 4096 весов: 7 * 7 * 512 * 4096 = 102 760 448
FC: [1x1x4096] память: 4096 весов: 4096 * 4096 = 16 777 216
FC: [1x1x1000] память: 1000 весов: 4096 * 1000 = 4 096 000

ОБЩАЯ память: 24M * 4 байта ~ = 93MB / изображение (только вперед! ~ * 2 для bwd)
ИТОГО параметры: 138M параметров
  

Как это обычно бывает со сверточными сетями, обратите внимание, что большая часть памяти (а также время вычислений) используется на ранних уровнях CONV, и что большинство параметров находятся на последних уровнях FC.В данном конкретном случае первый уровень FC содержит 100M весов из 140M.

Вычислительные аспекты

Самым большим узким местом, о котором следует помнить при построении архитектур ConvNet, является узкое место памяти. Многие современные графические процессоры имеют ограничение в 3/4/6 ГБ памяти, а лучшие графические процессоры имеют около 12 ГБ памяти. Необходимо отслеживать три основных источника памяти:

  • Из промежуточных размеров томов: это исходное количество активаций, на каждом уровне ConvNet, а также их градиенты (равного размера).Обычно большинство активаций происходит на более ранних уровнях ConvNet (то есть на первых уровнях Conv). Они хранятся, потому что они необходимы для обратного распространения, но умная реализация, которая запускает ConvNet только во время тестирования, может в принципе уменьшить это в огромной степени, сохраняя только текущие активации на любом уровне и отбрасывая предыдущие активации на уровнях ниже. .
  • Из размеров параметров: это числа, которые содержат параметры сети , , их градиенты во время обратного распространения, а также обычно кэш шагов, если оптимизация использует импульс, Adagrad или RMSProp.Следовательно, объем памяти для хранения одного вектора параметров обычно должен быть увеличен как минимум в 3 раза или около того.
  • Каждая реализация ConvNet должна поддерживать разную память , такую ​​как пакеты данных изображений, возможно, их расширенные версии и т. Д.

Как только у вас будет приблизительная оценка общего количества значений (для активаций, градиентов и прочего), число следует преобразовать в размер в ГБ. Возьмите количество значений, умножьте на 4, чтобы получить необработанное количество байтов (поскольку каждая плавающая точка составляет 4 байта или, возможно, на 8 для двойной точности), а затем разделите на 1024 несколько раз, чтобы получить объем памяти в КБ, МБ и, наконец, ГБ.Если ваша сеть не подходит, обычная эвристика для «подгонки» заключается в уменьшении размера пакета, поскольку большая часть памяти обычно используется активациями.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *