Содержание

Установка фильтра грубой очистки для воды и его чистка

Установка фильтра грубой очистки для воды

Содержание статьи

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

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

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

ru с видео подсказками в конце.

Что потребуется для установки фильтра на воду

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

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

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

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

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

Установка фильтра грубой очистки для воды

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

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

Порядок выполнения работ по установке фильтра грубой очистки, такой:

  • Перекрыть воду на стояке;
  • Уплотнить резьбы. На фильтре они внутренние, поэтому уплотнению подвергается резьба на шаровом кране, накидных гайках (американках), ниппелях и переходах;
  • Затем потребуется накрутить на резьбу водопроводной трубы, сначала кран, а затем фильтр грубой очистки к нему;
  • Расположить фильтр грязевиком вниз, таким образом, чтобы к нему было легко подобраться;
  • Открыть воду и проверить фильтр грубой очистки на предмет протечек.

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

Как почистить фильтр грубой очистки

Чистить фильтр грубой очистки нужно регулярно.

Сделать это можно следующим образом:

  • Сначала нужно полностью перекрыть подачу холодной и горячей воды в доме;
  • Затем, подобравшись к фильтру и устроившись поудобней возле него, нужно открутить крышку грязевика, используя для этих целей разводной ключ;
  • Добравшись до внутренностей фильтра, требуется аккуратно извлечь металлическую сеточку, после чего хорошенько промыть её и почистить, соскоблив с поверхности ржавчину и налёт. Сделать это можно не слишком острым ножом или старой зубной щеткой;
  • Далее необходимо установить сетку на своё законное место и закрутить крышку грязевика назад, несильно подтянув её разводным ключом;
  • После чистки фильтра грубой очистки можно открывать подачу воды и проверять, не потёк ли фильтр.

На все про все, уйдёт не более 20 минут. Также быстро происходит и установка фильтра грубой очистки для воды, главное не спешить и запомнить все вышеперечисленные правила монтажа.

Оценить статью и поделиться ссылкой:

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

Как правильно установить?

Если есть опыт обращения с инструментами и понимание основных законов движения жидкости по трубам, то монтаж фильтра можно выполнить самостоятельно.

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

Выбор устройства

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

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

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

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

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

Дисковые очистители состоят из пластмассовых округлых пластинок, которые не пропускают механические фрагменты размером 5 – 250 мкм.

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

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

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

Инструменты и материалы

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

  • Гаечные ключи;
  • Сварочный аппарат;
  • Болгарку;
  • Два сгона подходящего диаметра с односторонней резьбой;
  • Силиконовый герметик;
  • Тряпочку.

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

Как ставить своими руками?

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

Затем работа осуществляется в такой последовательности:

  1. Промазать внутреннюю резьбу фильтра силиконовым герметиком с обеих сторон, затем установить поочерёдно каждый сгон в тиски и накрутить на его резьбу фильтрующий элемент.
  2. После того как герметик застынет (минимум 4 часа) следует перекрыть кран, замерить общую длину фильтрующего элемента со сгонами и с помощью болгарки вырезать часть трубы водопровода такого же размера. Удалить следует часть водопровода, отступив от крана не менее 10 см.
  3. Затем расположив фильтрующий элемент таким образом, чтобы отстойник «смотрел» вниз, ранее собранную конструкцию сваривают с трубой водопровода с двух сторон.

Когда труба остынет, можно открыть кран и подать воду в систему. Перед использованием следует дать стечь воде в течение 1 – 2 минут, чтобы удалить окалины и другие загрязнения, образовавшиеся в результате сваривания металла.

Возможные проблемы при монтаже

При установке фильтрующего элемента могут возникнуть следующие проблемы:

  • Утечка большого количества жидкости из водопровода;
  • Возгорание легковоспламенимых предметов во время сварки;
  • Удаление слишком большого отрезка водопровода.

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

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

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

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

Срок службы фильтрующего элемента

На срок службы фильтрующего элемента влияет:

  • Качество изделия;
  • Отсутствие нарушений при выполнении монтажных работ;
  • Качество воды;
  • Периодичность очистки.

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

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

Советы

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

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

Монтаж фильтрующего элемента без учёта направленности жидкости, также приведёт к неудовлетворительным результатам.

Важно. Чтобы обеспечить высокую эффективность использования изделия следует производить монтажные работы с учётом стрелок, расположенных на корпусе изделия.

Полезное видео

Смотрите интересный видеоматериал, в котором рассказано как правильно установить фильтр грубой очистки воды.

Заключение

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

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

Фильтр грубой очистки воды для квартиры или частного дома: как выбрать и установить

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

Средства механической очистки воды

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

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

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

Воздействие неочищенной воды на бытовую технику

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

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

Отсеивание взвешенных частиц с помощью сетки

Чтобы увеличить эффективность фильтрации, после грубой производится тонкая очистка воды, отличие которой заключается в меньшей пропускной способности (< 5 мкм). В этом случае в роли фильтрующего элемента выступает сорбционный материал (например, уголь), ионообменная смола или мембрана обратного осмоса.

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

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

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

Сетчатые ↑

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

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

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

Сетчатый фильтр в разрезе

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

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

Картриджные ↑

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

Интересно знать. По форме конструкция картриджа напоминает патрон. Отсюда и альтернативное название – патронный фильтр.

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

Схема картриджного (патронного) фильтра грубой очистки воды

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

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

Правила монтажа ↑

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

Схема размещения фильтра

Очистка фильтрующего элемента ↑

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

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

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

Очистные мероприятия нужно проводить не реже 1 раза в 3-4 месяца

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

Grad-CAM: визуализируйте карты активации классов с помощью Keras, TensorFlow и Deep Learning

Щелкните здесь, чтобы загрузить исходный код этого сообщения

В этом руководстве вы узнаете, как визуализировать карты активации классов для отладки глубоких нейронных сетей с помощью алгоритма Grad-CAM. Затем мы реализуем Grad-CAM с помощью Keras и TensorFlow.

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

На практике модели глубокого обучения рассматриваются как методы «черного ящика», и во многих случаях у нас нет разумного представления о том, что:

  • Куда «смотрит» сеть во входном изображении
  • Какая серия нейронов активировалась при прямом проходе во время вывода / предсказания
  • Как сеть достигла своего окончательного результата

Возникает интересный вопрос — как можно доверять решениям модели, если вы не можете должным образом проверить, как она появилась?

Чтобы помочь специалистам в области глубокого обучения визуально отладить свои модели и правильно понять, где они «выглядят» на изображении, Selvaraju et al. создано Градиентно-взвешенное отображение активации классов

или, проще говоря, Grad-CAM:

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

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

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

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

Grad-CAM — это инструмент, который должен быть в наборе инструментов любого специалиста по глубокому обучению — найдите время, чтобы узнать, как его применить.

Чтобы узнать, как использовать Grad-CAM для отладки глубоких нейронных сетей и визуализации карт активации классов с помощью Keras и TensorFlow,

просто продолжайте читать!

Grad-CAM: Визуализируйте карты активации классов с помощью Keras, TensorFlow и Deep Learning

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

Далее мы погрузимся в Grad-CAM, алгоритм, который можно использовать для визуализации карт активации классов сверточной нейронной сети (CNN), тем самым позволяя вам убедиться, что ваша сеть «смотрит» и «активируется» на правильные места.

Затем мы реализуем Grad-CAM с помощью Keras и TensorFlow.

После того, как наша реализация Grad-CAM будет завершена, мы рассмотрим несколько примеров визуализации карт активации классов.

Зачем нам нужно визуализировать карты активации классов в сверточных нейронных сетях?

Рисунок 1: Модели глубокого обучения часто критикуют за то, что они являются алгоритмами «черного ящика», когда мы не знаем, что происходит под капотом.Используя градиентную камеру (например, Grad-CAM), практикующие глубокое обучение могут визуализировать тепловые карты активации слоя CNN с помощью Keras / TensorFlow. Подобные визуализации позволяют нам заглянуть в то, что делает «черный ящик», гарантируя, что инженеры не станут жертвами городской легенды о несчастном разработчике искусственного интеллекта, который создал детектор облаков, а не желании армии детектора танков. (источник изображения)

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

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

Исследователи, задействованные в проекте, собрали набор данных из 200 изображений:

  • 100 из которых содержат замаскированных танка, прячущихся на деревьях
  • 100 из которых не содержали танков и были изображениями исключительно деревьев / леса

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

Нейронная сеть была обучена на обучающей выборке и получила 100% точность. Исследователи были невероятно довольны этим результатом и с радостью применили его к своим данным тестирования. В очередной раз они получили 100% точность.

Исследователи позвонили в Пентагон, взволнованные новостью о том, что они только что «раскрыли» замаскированное обнаружение танков.

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

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

Так было до тех пор, пока один умный исследователь визуально не проверил их набор данных и, наконец, не осознал проблему:

  • Фото замаскированных танков запечатлено в солнечных дней
  • Снимки леса (без танков) сделаны в пасмурных дней

По сути, U.С. Арми создал многомиллионный детектор облаков.

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

Если бы у исследовательской группы был алгоритм наподобие Grad-CAM, они бы заметили, что модель активировалась вокруг наличия / отсутствия облаков, а , а не самих танков (отсюда их проблема).

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

Что такое «Градиентно-взвешенное отображение активации классов» (Grad-CAM) и зачем нам его использовать?

Рисунок 2: Визуализации карт активации Grad-CAM, примененных к изображению собаки и кошки с помощью Keras, TensorFlow и глубокого обучения. (источник изображения: рис. 1 Сельвараджу и др.)

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

Чтобы помочь практикам глубокого обучения отлаживать свои сети, Selvaraju et al. опубликовал новую статью под названием Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization .

Это метод:

  • Легко внедряется
  • Работает практически с любой архитектурой сверточной нейронной сети
  • Может использоваться для визуальной отладки, когда сеть смотрит на изображение

Grad-CAM работает, (1) находя последний сверточный слой в сети, а затем (2) исследуя градиентную информацию, поступающую в этот слой.

Результатом Grad-CAM является визуализация тепловой карты для данной метки класса (либо верхней, прогнозируемой, либо произвольной метки, которую мы выбираем для отладки). Мы можем использовать эту тепловую карту, чтобы визуально проверить, где на изображении смотрит CNN.

Для получения дополнительной информации о том, как работает Grad-CAM, я бы порекомендовал вам прочитать статью Сельвараджу и др., А также эту отличную статью Дивяншу Мишры (просто обратите внимание, что их реализация не будет работать с TensorFlow 2. .0, а у нас делает работает с TF 2. 0).

Настройка среды разработки

Чтобы использовать нашу реализацию Grad-CAM, нам необходимо настроить нашу систему с помощью нескольких программных пакетов, включая:

К счастью, каждый из этих пакетов можно установить с помощью pip. Я лично рекомендую вам следовать одному из моих руководств по установке TensorFlow 2.0:

Обратите внимание: PyImageSearch не поддерживает Windows — см. Наш FAQ.Хотя мы не поддерживаем Windows, код, представленный в этом сообщении в блоге, будет работать в Windows с правильно настроенной системой.

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

После того, как ваша система настроена, вы готовы следовать оставшейся части этого руководства.

Структура проекта

Давайте проверим структуру проекта нашего учебника. Но сначала обязательно возьмите код и примеры изображений из раздела «Загрузки» этого сообщения в блоге. Оттуда извлеките файлы и используйте команду tree в своем терминале:

 $ дерево --dirsfirst
.
├── изображения
│ ├── beagle.jpg
│ ├── soccer_ball.jpg
│ └── space_shuttle.jpg
├── pyimagesearch
│ ├── __init__.py
│ └── gradcam.py
└── apply_gradcam.py

2 каталога, 6 файлов 

Сегодня модуль pyimagesearch содержит реализацию Grad-CAM внутри класса GradCAM .

Наш сценарий драйвера apply_gradcam.py принимает любой из наших образцов изображений / и применяет либо VGG16, либо ResNet CNN, обученную в ImageNet, для обоих (1) вычисления тепловой карты Grad-CAM и (2) отображения результатов в OpenCV окно.

Давайте погрузимся в реализацию.

Реализация Grad-CAM с использованием Keras и TensorFlow

Несмотря на то, что алгоритм Grad-CAM относительно прост, я изо всех сил пытался найти реализацию, совместимую с TensorFlow 2.0.

Самый близкий, который я нашел, был в tf-manage; однако этот метод можно было использовать только при обучении — он не мог использовать после того, как модель была обучена.

Поэтому я решил создать свою собственную реализацию Grad-CAM, основываясь на своей работе над tf-объяснением, гарантируя, что моя реализация Grad-CAM:

  • Совместим с Keras и TensorFlow 2. 0
  • Можно использовать после модель уже обучена
  • И также может быть легко модифицирован для работы в качестве обратного вызова во время обучения (не рассматривается в этом посте)

Давайте углубимся в нашу реализацию Keras и TensorFlow Grad-CAM.

Откройте файл gradcam.py в структуре каталогов вашего проекта, и приступим:

 # импортируем необходимые пакеты
из модели импорта tenorflow.keras.models
импортировать тензорный поток как tf
импортировать numpy как np
импорт cv2

класс GradCAM:
def __init __ (self, model, classIdx, layerName = None):
# сохранить модель, индекс класса, используемый для измерения класса
# карта активации и слой, который будет использоваться при визуализации
# карта активации класса
я. модель = модель
self.classIdx = classIdx
self.layerName = имя слоя

# если имя слоя None, попытаться автоматически найти
# целевой выходной слой
если self.layerName - None:
self.layerName = self.find_target_layer () 

Прежде чем мы определим класс GradCAM , нам нужно импортировать несколько пакетов. К ним относятся TensorFlow Model , для которой мы построим нашу модель градиента, NumPy для математических вычислений и OpenCV.

Наш класс GradCAM и конструктор затем определяются, начиная с строк 7 и 8 .Конструктор принимает и хранит:

  • Модель TensorFlow , которую мы будем использовать для вычисления тепловой карты
  • classIdx - особый индекс класса, который мы будем использовать для измерения тепловой карты активации класса
  • Необязательный CONV layerName модели на случай, если мы хотим визуализировать тепловую карту конкретного слоя нашей CNN; в противном случае, если конкретное имя уровня не указано, автоматически выведет на последнем уровне CONV / POOL архитектуры модели (, строки 18 и 19, )

Теперь, когда наш конструктор определен и атрибуты класса установлены, давайте определим метод для поиска целевого слоя:

 def find_target_layer (сам):
# попытаться найти последний сверточный слой в сети
# перебирая слои сети в обратном порядке
для слоя в перевернутом виде (self. model.layers):
# проверяем, есть ли у слоя 4D выход
если len (layer.output_shape) == 4:
вернуть имя слоя

# иначе мы не смогли бы найти 4D слой, поэтому GradCAM
# алгоритм не может быть применен
Raise ValueError («Не удалось найти 4D слой. Невозможно применить GradCAM.») 

Наша функция find_target_layer перебирает все уровни в сети в обратном порядке , в течение этого времени она проверяет, имеет ли текущий слой 4D-выход (подразумевая слой CONV или POOL).

Если находим такой 4D-вывод, мы возвращаем с этим именем слоя ( строк 24–27, ).

В противном случае, , если сеть не имеет вывода 4D, тогда мы не можем применить Grad-CAM, , в этот момент мы вызовем исключение ValueError , в результате чего наша программа остановится (, строка 31, ).

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

 def compute_heatmap (self, image, eps = 1e-8):
# построить нашу модель градиента, предоставив (1) входные данные
# к нашей предварительно обученной модели, (2) вывод (предположительно)
# последний 4D слой в сети, и (3) вывод
# softmax активации из модели
gradModel = Модель (
входы = [self.model.inputs],
output = [self.model.get_layer (self.layerName) .output,
self.model.output]) 

Строка 33 определяет метод compute_heatmap , который является сердцем нашего Grad-CAM . Давайте рассмотрим эту реализацию шаг за шагом, чтобы узнать, как она работает.

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

Оттуда мы создаем нашу модель gradModel ( строк 38-41 ), которая состоит из входного и выходного :

  • входов : Стандартный ввод изображения для модели
  • выходы : Выходные данные атрибута класса layerName , используемые для генерации сопоставлений активации классов.Обратите внимание, как мы вызываем get_layer в самой модели , а также захватываем выход этого конкретного слоя

Когда наша модель градиента будет построена, мы приступим к вычислению градиентов:

 # запись операций для автоматического распознавания
с tf. GradientTape () в качестве ленты:
# преобразовать тензор изображения к типу данных float-32, передать
# изображение через модель градиента, и захватить потерю
# связанный с определенным индексом класса
входы = tf.cast (изображение, tf.float32)
(convOutputs, прогнозы) = gradModel (входы)
потеря = прогнозы [:, self.classIdx]

# использовать автоматическое дифференцирование для вычисления градиентов
grads = tape.gradient (потери, convOutputs) 

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

Во-первых, автоматическое дифференцирование - это процесс вычисления значения и вычисления производных от этого значения (CS321 Toronto, Wikipedia).

TenorFlow 2.0 обеспечивает реализацию автоматического дифференцирования с помощью так называемой градиентной ленты :

TensorFlow предоставляет tf. GradientTape API для автоматического дифференцирования - вычисления градиента вычисления относительно его входных переменных. TensorFlow «записывает» все операции, выполняемые в контексте tf.GradientTape , на «ленту». Затем TensorFlow использует эту ленту и градиенты, связанные с каждой записанной операцией, для вычисления градиентов «записанного» вычисления с использованием дифференцирования в обратном режиме »(TensorFlow Автоматическая дифференциация и градиентная лента Tutorial).

Я предлагаю вам потратить некоторое время на документацию TensorFlow GradientTape, особенно на метод градиента, который мы сейчас будем использовать.

Начинаем запись операций для автоматического дифференцирования с помощью GradientTape ( Line 44 ).

Строка 48 принимает входное изображение и преобразует его в 32-битный тип с плавающей запятой. Прямой проход через модель градиента (, строка 49, ) дает convOutputs и предсказания слоя layerName .

Затем мы извлекаем потери , связанные с нашими прогнозами и конкретным classIdx , который нас интересует (, строка 50, ).

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

Строка 53 использует автоматическое дифференцирование для вычисления градиентов, которые мы назовем градами ( Строка 53 ).

Учитывая наши градиенты, мы теперь вычислим управляемых градиента :

 # вычисляем управляемые градиенты
castConvOutputs = tf. cast (convOutputs> 0, "float32")
castGrads = tf.cast (грады> 0, "float32")
guidedGrads = castConvOutputs * castGrads * grads

# свертка и управляемые градиенты имеют размерность партии
# (который нам не нужен) поэтому возьмем сам том и
# отказаться от партии
convOutputs = convOutputs [0]
guidedGrads = guidedGrads [0] 

Сначала мы находим все выходные данные и градиенты со значением > 0 и преобразуем их из двоичной маски в 32-битный тип данных с плавающей запятой (, строки 56 и 57, ).

Затем мы вычисляем управляемых градиента путем умножения (, строка 58, ).

Имейте в виду, что и castConvOutputs , и castGrads содержат только значения 1 - и 0 - ; следовательно, если во время этого умножения любой из castConvOutputs , castGrads и grads равен нулю, то выходное значение для этого конкретного индекса в томе будет равно нулю.

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

Свертка и управляемые градиенты имеют размер партии, который нам не нужен. Строки 63 и 64 захватывают сам том и отбрасывают пакет из convOutput и guidedGrads .

Мы приближаемся к тепловой карте визуализации; продолжим:

 # вычислить среднее значение градиента и использовать его
# в качестве весов вычислить взвешенность фильтров с помощью
# относительно веса
веса = tf. reduce_mean (guidedGrads, axis = (0, 1))
кулачок = tf.reduce_sum (tf.multiply (веса, convOutputs), ось = -1) 

Строка 69 вычисляет весов значений градиента путем вычисления среднего значения guidedGrads , которое по сути является средним значением 1 x 1 x N по всему объему.

Затем мы берем эти весов и суммируем взвешенные (т.е. математически взвешенные) карты в визуализацию Grad-CAM ( cam ) на Line 70 .

Нашим следующим шагом будет создание выходной тепловой карты, связанной с нашим изображением:

 # захватить пространственные размеры входного изображения и изменить размер
# карта активации выходного класса для соответствия входному изображению
# Габаритные размеры
(w, h) = (изображение. shape [2], image.shape [1])
heatmap = cv2.resize (cam.numpy (), (w, h))

# нормализовать тепловую карту так, чтобы все значения лежали в диапазоне
# [0, 1], масштабировать полученные значения до диапазона [0, 255],
# а затем преобразовать в 8-битное целое число без знака
numer = тепловая карта - np.min (тепловая карта)
denom = (heatmap.max () - heatmap.min ()) + eps
тепловая карта = число / деном
heatmap = (тепловая карта * 255) .astype ("uint8")

# возвращаем полученную тепловую карту вызывающей функции
возвратная тепловая карта 

Мы берем исходные размеры входного изображения и масштабируем наше отображение cam до размеров исходного изображения (, строки 75 и 76, ).

Оттуда мы выполняем масштабирование min-max до диапазона [0, 1] , а затем преобразовываем значения пикселей обратно в диапазон [0, 255] ( строк 81-84 ).

Наконец, последний шаг нашего метода compute_heatmap возвращает вызывающему абоненту тепловую карту .

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

Давайте определим такую ​​полезность:

 def overlay_heatmap (self, heatmap, image, alpha = 0.5,
цветовая карта = cv2.COLORMAP_VIRIDIS):
# применить предоставленную цветовую карту к тепловой карте, а затем
# накладываем тепловую карту на входное изображение
heatmap = cv2.applyColorMap (тепловая карта, цветовая карта)
output = cv2.addWeighted (изображение, альфа, тепловая карта, 1 - альфа, 0)

# возвращаем кортеж из двух отображаемых цветов тепловой карты и вывод,
# наложенное изображение
возврат (тепловая карта, вывод) 

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

Чтобы наложить тепловую карту, нам сначала нужно применить псевдо / ложный цвет к тепловой карте. Для этого мы будем использовать цветовую карту OpenCV, встроенную в VIRIDIS (то есть cv2.COLORMAP_VIRIDIS ).

Температура VIRIDIS указана ниже:

Рисунок 3: Цветовая карта VIRIDIS будет применена к нашей тепловой карте Grad-CAM, чтобы мы могли визуализировать карты активации глубокого обучения с помощью Keras и TensorFlow. (источник изображения)

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

Строки 93 применяет цветовую карту к входной тепловой карте с помощью VIRIDIS.

Оттуда мы прозрачно накладываем тепловую карту на нашу выходную визуализацию (, строка 94, ). Альфа-канал — это , непосредственно взвешенный в изображении BGR (т.е. мы не добавляем альфа-канал к изображению). Чтобы узнать больше о прозрачных наложениях, я предлагаю вам прочитать мое руководство «Прозрачные наложения с OpenCV ».

Наконец, Строка 98 возвращает кортеж из 2-х элементов тепловой карты (с примененной цветовой картой VIRIDIS) вместе с выходным изображением визуализации .

Создание скрипта визуализации Grad-CAM

Завершив реализацию Grad-CAM, мы можем перейти к сценарию драйвера, используемому для его применения для сопоставления активации классов.

Как указывалось ранее, наш сценарий драйвера apply_gradcam.py принимает изображение и выполняет логический вывод, используя либо VGG16, либо ResNet CNN, обученную в ImageNet, чтобы (1) вычислить тепловую карту Grad-CAM и (2) показать результаты в OpenCV окно.

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

Давайте погрузимся в дело, открыв apply_gradcam.py в структуре вашего проекта и вставив следующий код:

 # импортируем необходимые пакеты
из pyimagesearch.gradcam импорт GradCAM
из tensorflow.keras.applications импортировать ResNet50
из tensorflow.keras.applications импортировать VGG16
из tensorflow.keras.preprocessing. image import img_to_array
из tensorflow.keras.preprocessing.image import load_img
из tensorflow.keras.applications импортировать imagenet_utils
импортировать numpy как np
import argparse
импорт imutils
импорт cv2

# создать парсер аргументов и проанализировать аргументы
ap = argparse.ArgumentParser ()
ap.add_argument ("- i", "--image", required = True,
help = "путь к входному изображению")
ap.add_argument ("- m", "--model", type = str, default = "vgg",
choices = ("vgg", "resnet"),
help = "модель, которая будет использоваться")
args = vars (ap.parse_args ()) 

Наиболее заметными импортированными из этого сценария являются наша реализация GradCAM , архитектуры ResNet / VGG и OpenCV.

Наш сценарий принимает два аргумента командной строки:

  • --image : путь к нашему входному изображению, которое мы стремимся как классифицировать, так и применить к нему Grad-CAM.
  • --model : модель глубокого обучения, которую мы хотели бы применить. По умолчанию мы будем использовать VGG16 с нашим Grad-CAM. Как вариант, вы можете указать ResNet50. Ваш выбор в этом примере ограничен vgg или resenet , вводимым непосредственно в вашем терминале при вводе команды, но вы также можете изменить этот сценарий для работы с вашей собственной архитектурой.

Учитывая аргумент --model , загрузим нашу модель:

 # инициализировать модель как VGG16
Модель = VGG16

# проверяем, используем ли мы ResNet
if args ["model"] == "resnet":
Модель = ResNet50

# загружаем предварительно обученную CNN с диска
print ("[INFO] модель загрузки. .. ")
model = Model (weights = "imagenet") 

Строки 23–31 загружают VGG16 или ResNet50 с предварительно обученными весами ImageNet.

В качестве альтернативы вы можете загрузить свою собственную модель; в нашем примере мы используем VGG16 и ResNet50 для простоты.

Затем мы загрузим и предварительно обработаем наш --image :

 # загружаем исходное изображение с диска (в формате OpenCV), а затем
# изменить размер изображения до его целевых размеров
orig = cv2.imread (args ["изображение"])
измененный размер = cv2.изменить размер (ориг, (224, 224))

# загружаем входное изображение с диска (в формате Keras / TensorFlow) и
# предварительно обработать это
image = load_img (args ["изображение"], target_size = (224, 224))
image = img_to_array (изображение)
image = np. expand_dims (изображение, ось = 0)
image = imagenet_utils.preprocess_input (изображение) 

Учитывая наше входное изображение (предоставленное с помощью аргумента командной строки), Line 35 загружает его с диска в формате OpenCV BGR, а Line 40 загружает то же изображение в формате TensorFlow / Keras RGB.

Наш первый шаг предварительной обработки изменяет размер изображения до 224 × 224 пикселей (, строка 36, и , строка 40, ).

Если на этом этапе мы проверим форму .shape нашего изображения, вы заметите, что форма массива NumPy составляет (224, 224, 3) - каждое изображение имеет ширину 224 пикселя и высоту 224 пикселя и имеет 3 канала. (по одному для красного, зеленого и синего каналов соответственно).

Однако, прежде чем мы сможем передать наше изображение через нашу CNN для классификации, нам нужно расширить размеры до (1, 224, 224, 3) .

Почему мы это делаем?

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

Таким образом, мы конвертируем изображение в массив и добавляем пакетное измерение (, строки 41 и 42, ).

Затем мы предварительно обрабатываем изображение в строке , строка 43, , вычитая среднюю интенсивность пикселей RGB, вычисленную из набора данных ImageNet (т.е. среднее вычитание).

Для целей классификации (т.е., еще не Grad-CAM), далее мы сделаем прогнозы на изображении с помощью нашей модели:

 # использовать сеть, чтобы делать прогнозы на входном изображении и находить
# индекс метки класса с наибольшей соответствующей вероятностью
preds = model. predict (изображение)
i = np.argmax (пред. [0])

# расшифровать предсказания ImageNet, чтобы получить читаемую этикетку
decoded = imagenet_utils.decode_predictions (прогнозы)
(imagenetID, label, prob) = decoded [0] [0]
label = "{}: {: .2f}%". format (метка, вероятность * 100)
print ("[ИНФОРМАЦИЯ] {}".формат (метка)) 

Строка 47 выполняет логический вывод, передавая изображение через нашу CNN.

Затем мы находим индекс метки класса с наибольшей соответствующей вероятностью ( строки 48-53 ).

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

На этом этапе мы готовы вычислить нашу визуализацию тепловой карты Grad-CAM:

 # инициализируем нашу карту активации класса градиента и строим тепловую карту
cam = GradCAM (модель, i)
тепловая карта = cam. compute_heatmap (изображение)

# изменить размер результирующей тепловой карты до размеров исходного входного изображения
# а затем наложите тепловую карту поверх изображения
heatmap = cv2.resize (тепловая карта, (orig.shape [1], orig.shape [0]))
(тепловая карта, вывод) = cam.overlay_heatmap (тепловая карта, ориг., альфа = 0,5) 

Чтобы применить Grad-CAM, мы создаем экземпляр объекта GradCAM с нашей моделью и индексом класса наибольшей вероятности, i (, строка 57, ).

Затем мы вычисляем тепловую карту - сердце Grad-CAM лежит в методе compute_heatmap (, строка 58, ).

Затем мы масштабируем / изменяем размер тепловой карты до наших исходных входных размеров и накладываем тепловую карту на наше выходное изображение с 50% альфа-прозрачностью ( строки 62 и 63 ).

Наконец, мы производим составную визуализацию, состоящую из (1) исходного изображения, (2) тепловой карты и (3) тепловой карты, прозрачно наложенной на исходное изображение с прогнозируемой меткой класса:

 # рисуем предсказанную метку на выходном изображении
cv2.rectangle (вывод, (0, 0), (340, 40), (0, 0, 0), -1)
cv2.putText (вывод, метка, (10, 25), cv2.FONT_HERSHEY_SIMPLEX,
0,8, (255, 255, 255), 2)

# отображаем исходное изображение и результирующую тепловую карту и выходное изображение
# на наш экран
output = np.vstack ([исходная, тепловая карта, выход])
output = imutils.resize (вывод, высота = 700)
cv2.imshow ("Вывод", вывод)
cv2.waitKey (0) 

Строки 66-68 рисуют метку прогнозируемого класса в верхней части выходного изображения Grad-CAM.

Затем мы складываем наши три изображения для визуализации, изменяем размер до известной высоты , которая поместится на нашем экране, и отображаем результат в окне OpenCV ( строк 72-75 ).

В следующем разделе мы применим Grad-CAM к трем образцам изображений и посмотрим, соответствуют ли результаты нашим ожиданиям.

Визуализация карт активации классов с помощью Grad-CAM, Keras и TensorFlow

Чтобы использовать Grad-CAM для визуализации карт активации классов, убедитесь, что вы используете раздел «Загрузки» этого руководства для загрузки наших реализаций Grad-CAM Keras и TensorFlow.

Оттуда откройте терминал и выполните следующую команду:

 $ python apply_gradcam. py --image images / space_shuttle.jpg
[INFO] загрузка модели ...
[ИНФОРМАЦИЯ] space_shuttle: 100.00% 
Рисунок 4: Визуализация карт активации Grad-CAM с помощью Keras, TensorFlow и глубокого обучения применительно к фотографии космического челнока.

Здесь вы можете видеть, что VGG16 правильно классифицировал наше входное изображение как космический шаттл со 100% уверенностью - и, посмотрев на наши выходные данные Grad-CAM в Рисунок 4 , мы видим, что VGG16 правильно активируется вокруг шаблонов на космический шаттл, проверяя, что сеть ведет себя должным образом.

Давайте попробуем другое изображение:

 $ python apply_gradcam. py --image images / beagle.jpg
[INFO] загрузка модели ...
[ИНФОРМАЦИЯ] бигль: 73.94% 
Рисунок 5: Применение Grad-CAM для визуализации карт активации с помощью Keras, TensorFlow и глубокого обучения, примененных к фотографии моей гончей, Джени.

На этот раз мы проходим в образе моей собаки Джени. VGG16 правильно маркирует изображение как beagle .

Изучая вывод Grad-CAM в , рис. 5 , мы видим, что VGG16 активируется вокруг лица Джени, указывая на то, что морда моей собаки является важной характеристикой, используемой сетью для классификации ее как гончей.

Давайте рассмотрим последнее изображение, на этот раз с использованием архитектуры ResNet:

 $ python apply_gradcam. py --image images / soccer_ball.jpg --model resnet
[INFO] загрузка модели ...
[ИНФОРМАЦИЯ] soccer_ball: 99.97% 
Рисунок 6: В этой визуализации мы применили Grad-CAM с Keras, TensorFlow и глубокое обучение, примененное к фотографии футбольного мяча.

Наш футбольный мяч правильно классифицирован с точностью 99,97%, но что более интересно, так это визуализация активации класса в Рисунок 6 - обратите внимание, как наша сеть эффективно игнорирует футбольное поле, активируя только вокруг футбола мяч.

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

После обучения ваших собственных CNN, я настоятельно рекомендую вам применить Grad-CAM и визуально убедиться, что ваша модель изучает шаблоны, которые, по вашему мнению, она изучает , а не , какой-то другой шаблон, который случайно возникает в вашем наборе данных) .

Что дальше?

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

Удалось ли вам следовать этому руководству? Или вы оказались в затруднительном положении, попадая в ловушку фундаментальных терминов глубокого обучения, таких как «вывод», «потеря» и «карты активации»?

Независимо от того, являетесь ли вы новичком, борющимся с ключевыми концепциями, или экспертом, надеющимся изучить современные методологии, я бы посоветовал вам прочитать Deep Learning for Computer Vision with Python.

В моей книге вы найдете:

  • Супер-практические пошаговые руководства , которые представляют решения для классификации реальных изображений (ResNet, VGG и т. Д.), Обнаружения объектов (более быстрый R-CNN, SSD, RetinaNet и т. Д.) И сегментации (Mask R-CNN) ) проблемы.
  • Практические руководства (с большим количеством кода) , которые не только показывают вам алгоритмы , лежащие в основе глубокого обучения для компьютерного зрения, но и их реализации .
  • Серьезный стиль обучения , который гарантированно поможет вам овладеть глубоким обучением для понимания изображений и визуального распознавания.

Не ждите!

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

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

Не будьте разработчиком программного обеспечения без знания ИИ - от этого зависит ваша карьера.

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

Сводка

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

Имейте в виду, что если ваша сеть хорошо работает на ваших тренировочных и тестовых наборах, остается , все еще вероятность того, что ваша точность возникла случайно или случайно!

Ваша модель «высокой точности» может активироваться под паттернами, которые вы не заметили или не заметили в наборе данных изображения.

Я бы посоветовал вам сознательно включить Grad-CAM в свои собственные конвейеры глубокого обучения и визуально проверить правильность работы вашей модели.

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

Чтобы загрузить исходный код этого сообщения (и получать уведомления о публикации будущих руководств на PyImageSearch), просто введите свой адрес электронной почты в форму ниже!

Загрузите исходный код и БЕСПЛАТНОЕ 17-страничное руководство по ресурсам

Введите свой адрес электронной почты ниже, чтобы получить.zip кода и БЕСПЛАТНОЕ 17-страничное руководство по ресурсам по компьютерному зрению, OpenCV и глубокому обучению. Внутри вы найдете мои тщательно отобранные учебники, книги, курсы и библиотеки, которые помогут вам освоить CV и DL!

Установка внешних библиотек и ядер в экземплярах Notebook

Экземпляры ноутбуков Amazon SageMaker поставляются с уже установленными несколькими средами.Эти среды содержат ядра Jupyter и пакеты Python, включая scikit, Pandas, NumPy, TensorFlow и MXNet. Эти среды вместе со всеми файлами в sample-notebooks , обновляются, когда вы останавливаете и запускаете экземпляр ноутбука. Вы также можете установить свои собственные среды, содержащие ваш выбор пакетов и ядер.

Различные ядра Jupyter в инстансах ноутбуков Amazon SageMaker являются отдельными Conda среды. Для получения информации о средах conda см. Управление среды в документации Conda .

Установите пользовательские среды и ядра на том Amazon EBS экземпляра ноутбука.Этот гарантирует, что они сохранятся при остановке и перезапуске экземпляра ноутбука, и что любой внешние библиотеки, которые вы устанавливаете, не обновляются SageMaker. Для этого используйте жизненный цикл конфигурация, которая включает как сценарий, который запускается при создании экземпляра записной книжки ( при создании) и скрипт, который запускается каждый раз при перезапуске ноутбука экземпляр ( на старте ).Дополнительные сведения об использовании экземпляра записной книжки конфигурации жизненного цикла, см. раздел Настройка экземпляра ноутбука с помощью Сценарий настройки жизненного цикла. Есть GitHub репозиторий, содержащий образцы сценариев конфигурации жизненного цикла в SageMaker Примеры конфигурации жизненного цикла экземпляра ноутбука.

Примеры на https: // github.com / aws-samples / amazon-sagemaker-notebook-instance-lifecycle-config-samples / blob / master / scripts / persistent-conda-ebs / on-create. sh и https://github.com/aws-samples/amazon-sagemaker-notebook-instance-lifecycle-config-samples/blob/master/scripts/persistent-conda-ebs/on-start.sh показать лучшие практики для установки сред и ядер на экземпляр ноутбука. при создании скрипт устанавливает библиотеку ipykernel , чтобы вы могли использовать команду create custom окружающая среда как ядра Jupyter, а затем использует pip install и conda установите для установки библиотек.Вы можете адаптировать скрипт для создания собственных среды и установить библиотеки что ты хочешь. SageMaker не обновляет эти библиотеки при остановке и перезапуске то ноутбук, поэтому вы можете убедиться, что в вашей пользовательской среде есть версии библиотек, которые вам нужны. Сценарий при запуске устанавливает любые пользовательские среды, которые вы создаете как ядра Jupyter, чтобы они отображались в раскрывающийся список в меню Jupyter New .

Ноутбуки

SageMaker поддерживают следующие инструменты установки пакетов:

  • conda установить

  • pip install

Пакеты можно установить следующими способами:

Из записной книжки можно использовать синтаксис системных команд (строки, начинающиеся с !) в установить пакеты, например, ! pip install и ! conda install . Совсем недавно в IPython были добавлены новые команды: % pip и % conda . Эти команды - рекомендуемый способ установки пакетов из записной книжки, поскольку они правильно учитывать активную среду или используемый интерпретатор. Для дополнительной информации, увидеть Добавьте волшебные функции% pip и% conda.

Конда

Conda - это система управления пакетами с открытым исходным кодом и система управления средой, который может устанавливать пакеты и их зависимости. SageMaker поддерживает использование Conda либо с из двух основных каналов, канала по умолчанию и канала conda-forge. Для большего информацию см. Каналы Conda. Канал conda-forge - это канал сообщества, куда участники могут загружать пакеты.

Из-за того, как Conda разрешает граф зависимостей, установка пакетов из conda-forge может занять значительно больше времени (в худшем случае до 10 минут).

AMI Deep Learning поставляется с множеством сред conda и множеством пакетов. предустановлен. Из-за количества предустановленных пакетов поиск набора пакетов что гарантированно быть совместимыми сложно. Вы можете увидеть предупреждение "Окружающая среда является непоследовательно, внимательно проверьте план пакета ". Несмотря на это предупреждение, SageMaker обеспечивает что все среды, предоставленные SageMaker, верны. SageMaker не может гарантировать что любой пользователь установленные пакеты будут работать правильно.

Conda имеет два метода активации сред: активация / деактивация conda и источник активировать / деактивировать.Для получения дополнительной информации см. Должен Я использую conda activate или source в Linux.

SageMaker поддерживает перенос сред Conda на том Amazon EBS, который упорствовал, когда экземпляр остановлен. Среды не сохраняются, когда среды установлен в корневой том, что является поведением по умолчанию.Для примера сценария жизненного цикла увидеть постоянный-conda-ebs.

Поддерживаемые операции conda (см. Примечание внизу этого раздела)

  • conda установка пакета в единой среде

  • conda установка пакета во всех средах

  • conda установка пакета R в среде R

  • Установка пакета из основного репозитория conda

  • Установка пакета от conda-forge

  • Изменение места установки Conda для использования EBS

  • Поддержка как активации conda, так и активации источника

Пип

Pip - это де-факто инструмент для установки пакетов Python и управления ими.Пип ищет за пакеты в индексе пакетов Python (PyPI) по умолчанию. В отличие от Конды, pip не иметь встроенная поддержка среды и не такая тщательная, как Conda, когда дело касается пакетов с зависимостями собственных / системных библиотек. Pip можно использовать для установки пакетов в Conda среды.

Вы можете использовать альтернативные репозитории пакетов с pip вместо PyPI. Для пример сценарий жизненного цикла, см. on-start.sh.

Поддерживаемые операции pip (см. Примечание внизу этого раздела)

  • Использование pip для установки пакета без активной среды conda (установка пакетов по всей системе)

  • Использование pip для установки пакета в среде conda

  • Использование pip для установки пакета во всех средах conda

  • Изменение места установки pip для использования EBS

  • Использование альтернативного репозитория для установки пакетов с помощью pip

Не поддерживается

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

  • Удаление

  • Понижение версии

  • Обновление

Мы не поддерживаем установку пакетов через yum install или установку R пакеты от CRAN.

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

Как установить плагины в Photoshop CC 2019

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

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

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

Загрузить подключаемые модули Photoshop

Прежде чем мы перейдем к установке подключаемых модулей, давайте сначала поговорим о том, где вы можете получить указанные подключаемые модули. Что ж, есть два простых способа найти плагины для Photoshop. Вы можете перейти на веб-сайт Adobe Exchange и найти отличные плагины или выполнить поиск в Google, чтобы найти именно тот тип плагина, который вы ищете.

Посетите Adobe Exchange

В

Adobe Exchange представлен хороший выбор платных и бесплатных плагинов.Библиотека варьируется от уникальных фильтров до плагинов, которые интегрируют библиотеки стоковых фотографий прямо в программное обеспечение.

Загрузить плагины оттуда довольно просто: просто выберите плагин, который хотите загрузить, нажмите кнопку «Бесплатно / Купить», и плагин будет автоматически установлен в Photoshop. Все просто, правда? Теперь перейдем к плагинам, которые вы загружаете со сторонних сайтов.

Установить плагины Photoshop

Плагины, загруженные с других веб-сайтов, доступны в виде исполняемых файлов или сжатых файлов zip.В зависимости от типа файла их можно установить двумя способами:

Установить подключаемый модуль Photoshop с помощью исполняемого файла

Для установки подключаемых модулей с использованием исполняемых файлов выполните следующие простые шаги:

Шаг 1: Убедитесь, что Photoshop не запущен на твоем компьютере. Теперь запустите исполняемый файл, чтобы открыть мастер установки.

Шаг 2: Нажмите «Далее» и примите лицензионное соглашение в следующем окне.

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

Поскольку я использую 64-битную Windows, я выбрал 64-битную версию. Но в зависимости от конфигурации вашего компьютера вам, возможно, придется выбрать 32-разрядную версию.

Шаг 4: Выберите целевую папку, в которую вы хотите установить плагин, и нажмите «Далее».

Шаг 5: Наконец, нажмите «Установить», а после завершения установки нажмите «Готово», чтобы завершить установку.

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

Поскольку я установил фильтр, плагин появляется прямо в нижней части меню «Фильтр».

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

Установка подключаемого модуля Photoshop из сжатого Zip-файла

Для установки подключаемых модулей из Zip-файлов выполните следующие простые шаги:

Шаг 1: Извлеките содержимое Zip-файла в папку.

Шаг 2: Скопируйте файл плагина и вставьте его в папку плагинов Photoshop. Папка находится в Program Files или в том месте, где вы установили Photoshop в своей системе.

Шаг 3: Перезапустите Photoshop, и плагин должен появиться в одном из пунктов меню, в зависимости от типа установленного вами плагина. Еще раз, поскольку я установил фильтр, плагин появляется в нижней части меню «Фильтр».

Упомянутые выше методы должны работать без сбоев, если вы используете Adobe Photoshop CC 2019; в случае, если вы используете более старую версию Photoshop, вам, возможно, придется пройти дополнительный этап при установке плагинов.

В более старых версиях Photoshop сначала необходимо предоставить разрешение на установку сторонних плагинов. Для этого перейдите в меню «Правка» и выберите «Плагины» в разделе «Настройки».

В окне «Плагины» установите флажок «Дополнительные плагины», а затем установите плагины. Это диалоговое окно не входит в последнюю версию Photoshop.


Приведенная выше статья может содержать партнерские ссылки, которые помогают поддерживать Guiding Tech.Однако это не влияет на нашу редакционную честность. Содержание остается объективным и достоверным.

Интерфейс командной строки / Команды - Composer

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

Чтобы получить помощь из командной строки, позвоните по номеру composer или composer list чтобы увидеть полный список команд, затем --help в сочетании с любой из них могу дать вам больше информации.

Поскольку Composer использует symfony / console, вы можете вызывать команды по короткому имени, если оно не является двусмысленным.

  композитор дамп  

вызывает composer dump-autoload .

Глобальные параметры #

Для каждой команды доступны следующие параметры:

  • --verbose (-v): Повышение детализации сообщений.
  • --help (-h): Показать справочную информацию.
  • --quiet (-q): Не выводить никаких сообщений.
  • --no-Interaction (-n): Не задавать интерактивных вопросов.
  • --no-plugins: Отключает плагины.
  • --no-cache: Отключает использование каталога кэша. То же, что и установка COMPOSER_CACHE_DIR env var в / dev / null (или NUL в Windows).
  • --working-dir (-d): Если указано, использовать данный каталог в качестве рабочего каталога.
  • --profile: Отображение информации о времени и использовании памяти
  • --ansi: Принудительный вывод ANSI.
  • --no-ansi: Отключить вывод ANSI.
  • --version (-V): Показать версию этого приложения.

Коды выхода из процесса #

  • 0: ОК
  • 1: Общий / неизвестный код ошибки
  • 2: Код ошибки решения зависимостей

# инициализации

В главе "Библиотеки" мы рассмотрели, как создать composer.json вручную. Для этого также доступна команда init .

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

  php composer.phar init  

Опции

  • --name: Имя пакета.
  • --описание: Описание упаковки.
  • --author: Имя автора пакета.
  • - тип: Тип упаковки.
  • - домашняя страница: Домашняя страница пакета.
  • --require: Требуемый пакет с ограничением версии. Должно быть в формате foo / bar: 1.0.0 .
  • --require-dev: Требования к разработке, см. --require .
  • --stability (-s): Значение для поля с минимальной стабильностью .
  • --license (-l): Лицензия на пакет.
  • --repository: Предоставьте один (или несколько) настраиваемых репозиториев. Они будут храниться в сгенерированном композиторе.json и используется для автозаполнения при запросе список требований. Каждый репозиторий может быть либо URL-адресом HTTP, указывающим на в репозиторий композитора или строку JSON, которая похожа на то, что Ключ репозиториев принимает.

установка / я #

Команда install считывает файл composer.json из текущего каталог, разрешает зависимости и устанавливает их в vendor .

  php composer.phar установить  

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

Если нет файла composer.lock , Composer создаст его после зависимости разрешающая способность.

Опции

  • --prefer-source: Существует два способа загрузки пакета: source и dist . Для стабильных версий Composer по умолчанию будет использовать dist .Источник - это репозиторий системы управления версиями. Если --prefer-source - это включен, Composer установит из источника , если он есть. Это полезно, если вы хотите исправить ошибку в проекте и получить локальный git клонировать зависимость напрямую.
  • --prefer-dist: Реверс --prefer-source , Composer установит от dist если возможно. Это может значительно ускорить установку при сборке. серверов и других случаев использования, когда вы обычно не запускаете обновления продавцы.Это также способ обойти проблемы с git, если вы не иметь правильную настройку.
  • --dry-run: Если вы хотите запустить установку без фактического устанавливая пакет, вы можете использовать --dry-run . Это будет имитировать установки и покажу, что будет.
  • --dev: Установите пакеты, перечисленные в require-dev (это поведение по умолчанию).
  • --no-dev: Пропустить установку пакетов, перечисленных в require-dev .Автозагрузчик поколение пропускает правила autoload-dev .
  • --no-autoloader: Пропускает создание автозагрузчика.
  • --no-scripts: Пропускает выполнение скриптов, определенных в composer.json .
  • --no-progress: Удаляет отображение прогресса, которое может мешать некоторым терминалы или скрипты, которые не обрабатывают символы возврата.
  • --optimize-autoloader (-o): Преобразовать автозагрузку PSR-0/4 в карту классов для более быстрого автозагрузчик.Это особенно рекомендуется для производства, но может занять немного времени для запуска, поэтому в настоящее время это не выполняется по умолчанию.
  • --classmap-authoritative (-a): Автозагрузка классов только из карты классов. Неявно включает --optimize-autoloader .
  • --apcu-autoloader: Используйте APCu для кеширования найденных / ненайденных классов.
  • --apcu-autoloader-prefix: Использовать настраиваемый префикс для кеша автозагрузчика APCu. Неявно включает --apcu-autoloader .
  • --ignore-platform-reqs: игнорировать все требования платформы ( php , hhvm , lib- * и ext- * ) и принудительно выполнить установку, даже если локальный компьютер делает не выполнять их. См. Также параметр конфигурации платформы .
  • --ignore-platform-req: игнорировать требования конкретной платформы ( php , hhvm , lib- * и ext- * ) и принудительно выполнить установку, даже если локальный компьютер не выполняет его.

обновление / u №

Чтобы получить последние версии зависимостей и обновить composer.lock , вы должны использовать команду update . Эта команда также называется обновлением , поскольку он делает то же самое, что и обновление , если вы думаете of apt-get или аналогичные менеджеры пакетов.

  обновление php composer.phar  

Это разрешит все зависимости проекта и напишет точные версии в композитор.замок .

Если вы хотите обновить только несколько пакетов, а не все, вы можете указать их как таковые:

  поставщик обновления php composer.phar / поставщик пакета / пакет2  

Вы также можете использовать подстановочные знаки для одновременного обновления нескольких пакетов:

  обновление php composer.phar "vendor / *"  

Если вы хотите понизить версию пакета до определенной версии, не меняя composer.json вы можете использовать - с и указать пользовательское ограничение версии:

  php композитор.phar update - с поставщиком / пакетом: 2.0.1  

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

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

  php composer.phar поставщик обновления / пакет: 2.0.1 поставщик / пакет2: 3.0. *  

Опции

  • --prefer-source: Установить пакеты из источника , если он доступен.
  • --prefer-dist: Устанавливать пакеты из dist , если они доступны.
  • --dry-run: Имитировать команду, фактически ничего не делая.
  • --dev: Установите пакеты, перечисленные в require-dev (это поведение по умолчанию).
  • --no-dev: Пропустить установку пакетов, перечисленных в require-dev .Генерация автозагрузчика пропускает правила autoload-dev .
  • --no-install: Не запускает этап установки после обновления файла composer.lock.
  • --lock: Обновляет только хеш файла блокировки для подавления предупреждения о файл блокировки устарел.
  • --с: Временное ограничение версии для добавления, например foo / bar: 1.0.0 или foo / bar = 1.0.0
  • --no-autoloader: Пропускает создание автозагрузчика.
  • --no-scripts: Пропускает выполнение скриптов, определенных в composer.json .
  • --no-progress: Удаляет отображение прогресса, которое может мешать некоторым терминалы или скрипты, которые не обрабатывают символы возврата.
  • --with-dependencies (-w): Обновить также зависимости пакетов в списке аргументов, кроме тех, которые являются корневыми требованиями.
  • --with-all-dependencies (-W): Обновите также зависимости пакетов в списке аргументов, включая те, которые являются корневыми требованиями.
  • --optimize-autoloader (-o): Преобразовать автозагрузку PSR-0/4 в карту классов для более быстрого автозагрузчик.Это особенно рекомендуется для производства, но может занять немного времени для запуска, поэтому в настоящее время это не выполняется по умолчанию.
  • --classmap-authoritative (-a): Автозагрузка классов только из карты классов. Неявно включает --optimize-autoloader .
  • --apcu-autoloader: Используйте APCu для кеширования найденных / ненайденных классов.
  • --apcu-autoloader-prefix: Использовать настраиваемый префикс для кеша автозагрузчика APCu. Неявно включает --apcu-autoloader .
  • --ignore-platform-reqs: игнорировать все требования платформы ( php , hhvm , lib- * и ext- * ) и принудительно выполнить установку, даже если локальный компьютер делает не выполнять их. См. Также параметр конфигурации платформы .
  • --ignore-platform-req: игнорировать требования конкретной платформы ( php , hhvm , lib- * и ext- * ) и принудительно выполнить установку, даже если локальный компьютер не выполняет его.
  • --prefer-stable: Предпочитать стабильные версии зависимостей.
  • --prefer-low: Предпочитать самые низкие версии зависимостей. Полезно для тестирования минимального версии требований, обычно используемые с --prefer-stable .
  • --interactive: Интерактивный интерфейс с автозаполнением для выбора пакетов для обновления.
  • --root-reqs: Ограничивает обновление вашими зависимостями первой степени.

Указание одного из слов mirrors , lock или ничего в качестве аргумента имеет тот же эффект, что и указание опции --lock , например composer update mirrors точно так же, как composer обновление --lock .

требуется #

Команда require добавляет новые пакеты в файл composer.json из текущий каталог. Если файла не существует, он будет создан на лету.

  php composer.phar требуется  

После добавления / изменения требований измененные требования будут установлен или обновлен.

Если вы не хотите выбирать требования в интерактивном режиме, вы можете передать их к команде.

  php композитор.phar требует "vendor / package: 2. *" vendor / package2: dev-master  

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

Опции

  • --dev: Добавить пакеты в файл require-dev .
  • --dry-run: Имитировать команду, фактически ничего не делая.
  • --prefer-source: Установить пакеты из источника , если он доступен.
  • --prefer-dist: Устанавливать пакеты из dist , если они доступны.
  • --no-progress: Удаляет отображение прогресса, которое может мешать некоторым терминалы или скрипты, которые не обрабатывают символы возврата.
  • --no-update: Отключает автоматическое обновление зависимостей (подразумевает --no-install).
  • --no-install: Не запускает этап установки после обновления файла composer.lock.
  • --no-scripts: Пропускает выполнение скриптов, определенных в composer.json .
  • --update-no-dev: Запустить обновление зависимостей с параметром --no-dev .
  • --update-with-dependencies (-w): Также обновите зависимости новых необходимых пакетов, кроме тех, которые являются корневыми.
  • --update-with-all-dependencies (-W): Также обновите зависимости новых необходимых пакетов, включая те, которые являются корневыми.
  • --ignore-platform-reqs: игнорировать все требования платформы ( php , hhvm , lib- * и ext- * ) и принудительно выполнить установку, даже если локальный компьютер делает не выполнять их.См. Также параметр конфигурации платформы .
  • --ignore-platform-req: игнорировать требования конкретной платформы ( php , hhvm , lib- * и ext- * ) и принудительно выполнить установку, даже если локальный компьютер не выполняет его.
  • --prefer-stable: Предпочитать стабильные версии зависимостей.
  • --prefer-low: Предпочитать самые низкие версии зависимостей. Полезно для тестирования минимального версии требований, обычно используемые с --prefer-stable .
  • --sort-packages: Сохранять пакеты отсортированными в composer.json .
  • --optimize-autoloader (-o): Преобразовать автозагрузку PSR-0/4 в карту классов в получить более быстрый автозагрузчик. Это особенно рекомендуется для производства, но может потребоваться некоторое время для запуска, поэтому в настоящее время это не выполняется по умолчанию.
  • --classmap-authoritative (-a): Автозагрузка классов только из карты классов. Неявно включает --optimize-autoloader .
  • --apcu-autoloader: Используйте APCu для кеширования найденных / ненайденных классов.
  • --apcu-autoloader-prefix: Использовать настраиваемый префикс для кеша автозагрузчика APCu. Неявно включает --apcu-autoloader .

удалить #

Команда remove удаляет пакеты из файла composer.json из текущий каталог.

  php composer.phar удалить поставщика / поставщика пакета / пакет2  

После удаления требований измененные требования будут удален.

Опции

  • --dev: Удалить пакеты из require-dev .
  • --dry-run: Имитировать команду, фактически ничего не делая.
  • --no-progress: Удаляет отображение прогресса, которое может мешать некоторым терминалы или скрипты, которые не обрабатывают символы возврата.
  • --no-update: Отключает автоматическое обновление зависимостей (подразумевает --no-install).
  • --no-install: Не запускает этап установки после обновления файла composer.lock.
  • --no-scripts: Пропускает выполнение скриптов, определенных в composer.json .
  • --update-no-dev: Запустить обновление зависимостей с параметром --no-dev.
  • --update-with-dependencies (-w): Также обновляет зависимости удаленных пакетов. (Устарело, теперь поведение по умолчанию)
  • --update-with-all-dependencies (-W): Позволяет обновлять все унаследованные зависимости, включая те, которые являются корневыми требованиями.
  • --ignore-platform-reqs: игнорировать все требования платформы ( php , hhvm , lib- * и ext- * ) и принудительно выполнить установку, даже если локальный компьютер делает не выполнять их.См. Также параметр конфигурации платформы .
  • --ignore-platform-req: игнорировать требования конкретной платформы ( php , hhvm , lib- * и ext- * ) и принудительно выполнить установку, даже если локальный компьютер не выполняет его.
  • --optimize-autoloader (-o): Преобразовать автозагрузку PSR-0/4 в карту классов в получить более быстрый автозагрузчик. Это особенно рекомендуется для производства, но может потребоваться некоторое время для запуска, поэтому в настоящее время это не выполняется по умолчанию.
  • --classmap-authoritative (-a): Автозагрузка классов только из карты классов. Неявно включает --optimize-autoloader .
  • --apcu-autoloader: Используйте APCu для кеширования найденных / ненайденных классов.
  • --apcu-autoloader-prefix: Использовать настраиваемый префикс для кеша автозагрузчика APCu. Неявно включает --apcu-autoloader .

check-platform-reqs #

Команда check-platform-reqs проверяет, что версия вашего PHP и расширений соответствовать требованиям платформы установленных пакетов.Это можно использовать чтобы убедиться, что на производственном сервере есть все расширения, необходимые для запуска проект после его установки, например.

В отличие от обновления / установки, эта команда игнорирует настройки config.platform и проверьте реальные пакеты платформы, чтобы убедиться, что у вас есть необходимые зависимости от платформы.

глобальный #

Глобальная команда позволяет запускать другие команды, такие как установить , удалить , требуется или обновить , как если бы вы запускали их из COMPOSER_HOME каталог.

Это просто помощник для управления проектом, хранящимся в центральном месте, которое может содержать инструменты CLI или плагины Composer, которые вы хотите иметь доступными повсюду.

Его можно использовать для глобальной установки утилит CLI. Вот пример:

  php composer.phar global требуется friendsofphp / php-cs-fixer  

Теперь бинарный файл php-cs-fixer доступен по всему миру. Убедитесь, что ваш глобальный Каталог двоичных файлов поставщика находится в вашем $ PATH переменную среды, вы можете получить ее местоположение с помощью следующей команды:

  php композитор.глобальная конфигурация phar bin-dir --absolute  

Если вы хотите обновить двоичный файл позже, вы можете запустить глобальное обновление:

  глобальное обновление php composer.phar  

поиск №

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

  php composer.phar поиск монолог  

Вы также можете искать более одного термина, передав несколько аргументов.

Опции

  • --only-name (-N): Искать только по имени.
  • --type (-t): Поиск определенного типа пакета.

показать #

Чтобы вывести список всех доступных пакетов, вы можете использовать команду show .

  php composer.phar показать  

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

  php composer.phar показать монолог / *

монолог / монолог 1.19.0 Отправляет ваши журналы в файлы, сокеты, почтовые ящики, базы данных и различные веб-службы  

Если вы хотите увидеть детали определенного пакета, вы можете передать пакет название.

  php composer.phar показать монолог / монолог

имя: монолог / монолог
версии: master-dev, 1.0.2, 1.0.1, 1.0.0, 1.0.0-RC1
тип: библиотека
имена: монолог / монолог
источник: [git] https://github.com/Seldaek/monolog.git 3d4e60d0cbc4b888fe5ad223d77964428b1978da
dist: [zip] https: // github.com / Seldaek / monolog / zipball / 3d4e60d0cbc4b888fe5ad223d77964428b1978da 3d4e60d0cbc4b888fe5ad223d77964428b1978da
лицензия: MIT

автозагрузка
пср-0
Монолог: src /

требует
php> = 5.3.0  

Вы даже можете передать версию пакета, которая сообщит вам подробности этого конкретная версия.

  php composer.phar показать монолог / монолог 1.0.2  

Опции

  • --all: Список всех пакетов, доступных во всех ваших репозиториях.
  • --installed (-i): Список установленных пакетов (по умолчанию включено и не рекомендуется).
  • --locked: Вывести список заблокированных пакетов из composer.lock.
  • --platform (-p): Выводит только пакеты платформы (php и расширения).
  • --available (-a): Список только доступных пакетов.
  • --self (-s): Вывести информацию о корневом пакете.
  • --name-only (-N): Выводит только имена пакетов.
  • --path (-P): Список путей к пакетам.
  • --tree (-t): Список ваших зависимостей в виде дерева.Если вы передадите имя пакета, отобразится дерево зависимостей для этого пакета.
  • --latest (-l): Вывести список всех установленных пакетов, включая их последнюю версию.
  • --outdated (-o): Подразумевает --latest, но здесь перечислены только пакетов , для которых доступна более новая версия.
  • --no-dev: Фильтрует зависимости разработчиков из списка пакетов.
  • --minor-only (-m): Используйте с --latest. Отображаются только пакеты с небольшими обновлениями, совместимыми с SemVer.
  • --direct (-D): Ограничивает список пакетов вашими прямыми зависимостями.
  • --strict: Возвращает ненулевой код выхода при наличии устаревших пакетов.
  • --format (-f): Позволяет выбирать между текстовым (по умолчанию) или выходным форматом json.

устаревшее #

Команда устаревшая показывает список установленных пакетов, для которых доступны обновления, включая их текущую и последнюю версии. По сути, это псевдоним для composer show -lo .

Цветовая кодировка такая же:

  • зеленый (=) : Зависимость находится в последней версии и актуальна.
  • желтый ( ~ ) : Доступна новая версия зависимости, которая включает в себя разрывы обратной совместимости в соответствии с semver, поэтому обновляйте, когда вы можете, но это может потребовать работы.
  • красный (!) : Dependency имеет новую версию, совместимую с semver, и вам следует обновить ее.

Опции

  • --all (-a): Показать все пакеты, а не только устаревшие (псевдоним для composer show -l ).
  • --direct (-D): Ограничивает список пакетов вашими прямыми зависимостями.
  • --strict: Возвращает ненулевой код выхода, если какой-либо пакет устарел.
  • --minor-only (-m): Показывает только пакеты с незначительными обновлениями, совместимыми с SemVer.
  • --format (-f): Позволяет выбирать между текстовым (по умолчанию) или выходным форматом json.
  • --no-dev: Не показывать устаревшие зависимости разработчиков.
  • --locked: Показывает обновления для пакетов из файла блокировки, независимо от того, что в настоящее время находится в каталоге поставщика.

просмотреть / домой #

Обзор (псевдоним home ) открывает URL-адрес репозитория пакета или домашнюю страницу в вашем браузере.

Опции

  • --homepage (-H): Открыть домашнюю страницу вместо URL-адреса репозитория.
  • --show (-s): Показывать только URL домашней страницы или репозитория.

предлагает #

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

Используйте флаги --by-package (по умолчанию) или --by-offer для группировки вывода по пакет, предлагающий предложения или предлагаемые пакеты соответственно.

Если вам нужен только список предлагаемых имен пакетов, используйте --list .

Опции

  • --by-package: Группирует вывод, предлагая пакет (по умолчанию).
  • --by-offer: Группирует вывод по предложенному пакету.
  • --all: Показать предложения от всех зависимостей, включая транзитивные (от по умолчанию отображаются только предложения прямых зависимостей).
  • --list: Показать только список предлагаемых имен пакетов.
  • --no-dev: Исключает предложения из пакетов require-dev .

фонд №

Узнайте, как помочь профинансировать обслуживание ваших зависимостей. В этом списке все ссылки на финансирование из установленных зависимостей.

зависит (почему) #

Команда зависит от сообщает вам, какие другие пакеты зависят от определенного пакет. Как и при установке , учитываются только отношения require-dev для корневого пакета.

  php composer.phar зависит от доктрины / лексера
 doctrine / annotations v1.2.7 требует doctrine / lexer (1. *)
 doctrine / common v2.6.1 требует doctrine / lexer (1. *)  

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

Добавьте флаг --tree или -t , чтобы показать рекурсивное дерево того, почему пакет зависит, например:

  php composer.phar зависит от psr / log -t
psr / log 1.0.3,0)  

Опции

  • --recursive (-r): Рекурсивно разрешает до корневого пакета.
  • --tree (-t): Выводит результаты в виде вложенного дерева, подразумевает -r.

запрещает (почему нет) #

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

  php композитор.phar запрещает symfony / symfony 3.1
 laravel / framework v5.2.16 требует symfony / var-dumper (2.8. * | 3.0. *)  

Обратите внимание, что вы также можете указать требования к платформе, например, чтобы проверить можете ли вы обновить свой сервер до PHP 8.0:

  php composer.phar запрещает php: 8
 doctrine / cache v1.6.0 требует php (~ 5.5 | ~ 7.0)
 doctrine / common v2.6.1 требует php (~ 5.5 | ~ 7.0)
 doctrine / instantiator 1.0.5 требует php (> = 5.3, <8.0-DEV)  

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

Опции

  • --recursive (-r): Рекурсивно разрешает до корневого пакета.
  • --tree (-t): Выводит результаты в виде вложенного дерева, подразумевает -r.

подтвердить #

Вы всегда должны запускать команду validate перед фиксацией своего composer.json и перед тем, как пометить выпуск. Он проверит, если ваш composer.json действителен.

  php composer.phar проверить  

Опции

  • --no-check-all: Не выводить предупреждение, если требования в composer.json использует несвязанные или чрезмерно строгие ограничения версии.
  • --no-check-lock: Не выдавать ошибку, если composer.lock существует и устарел.
  • --no-check-publish: Не выдавать ошибку, если composer.json не подходит для публикации в виде пакета на Packagist, но в остальном допустим.
  • --with-dependencies: Также проверьте composer.json всех установленных зависимостей.
  • --strict: Вернуть ненулевой код выхода как для предупреждений, так и для ошибок.

статус №

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

  статус php composer.phar  

С опцией --verbose вы получите дополнительную информацию о том, что было изменено:

  php composer.phar статус -v

У вас есть изменения в следующих зависимостях:
поставщик / seld / jsonlint:
    M README.mdown  

самообновление (самообновление) #

Чтобы обновить Composer до последней версии, запустите самообновление команда. Он заменит ваш composer.phar последней версией.

  php composer.phar самообновление  

Если вы хотите вместо этого выполнить обновление до определенной версии, укажите это:

  php composer.phar самообновление 1.0.0-alpha7  

Если вы установили Composer для всей системы (см. Глобальную установку), вам может потребоваться выполнить команду с правами root

  sudo -H композитор самообновление  

Если Composer не был установлен как PHAR, эта команда недоступна.(Иногда это бывает, когда Composer был установлен менеджером пакетов операционной системы.)

Опции

  • --rollback (-r): Откат к последней установленной вами версии.
  • --clean-backups: Удалять старые резервные копии во время обновления. Это делает текущая версия Composer - единственная резервная копия, доступная после обновления.
  • --no-progress: Не выводить ход загрузки.
  • --update-keys: Запрашивать у пользователя обновление ключа.
  • --stable: Принудительно обновить стабильный канал.
  • --preview: Принудительно обновить канал предварительного просмотра.
  • --snapshot: Принудительно обновить канал моментальных снимков.
  • --1: Принудительно обновить стабильный канал, но использовать только версии 1.x
  • --2: Принудительно обновить стабильный канал, но использовать только версии 2.x
  • --set-channel-only: Сохранить канал только как канал по умолчанию, а затем выйти из

конфигурация #

Команда config позволяет редактировать настройки конфигурации композитора и репозитории. либо в местном композиторе .json или глобальный файл config.json .

Кроме того, он позволяет редактировать большинство свойств в локальном composer.json .

  конфигурация php composer.phar --list  

Использование #

config [опции] [ключ-настройки] [значение-настройки1] ... [значение-настройкиN]

Клавиша настройки - это имя параметра конфигурации, а - значение настройки1 - это значение конфигурации. Для настроек, которые могут принимать массив значений (например, github -tocols ), допускается более одного аргумента значения параметра.

Вы также можете редактировать значения следующих свойств:

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

Допустимые параметры конфигурации см. В главе «Конфигурация».

Опции

  • --global (-g): Работать с глобальным файлом конфигурации, расположенным по адресу $ COMPOSER_HOME / config.json по умолчанию. Без этой опции эта команда влияет на локальный файл composer.json или файл, указанный в --file .
  • --editor (-e): Откройте локальный файл composer.json, используя в текстовом редакторе как определяется переменной env EDITOR . С опцией --global это открывает глобальный файл конфигурации.
  • --auth (-a): Влияет на файл конфигурации аутентификации (используется только для --editor).
  • --unset: Удалите элемент конфигурации, названный кнопкой настройки .
  • --list (-l): Показать список текущих переменных конфигурации. С - глобальный в этом параметре отображается только глобальная конфигурация.
  • --file = "..." (-f): Работать с конкретным файлом вместо composer.json. Заметка что его нельзя использовать вместе с опцией --global .
  • --absolute: Возвращает абсолютные пути при получении значений конфигурации * -dir вместо родственника.
  • --json: JSON декодирует значение настройки, которое будет использоваться с extra.* ключей.
  • --merge: Объединить значение настройки с текущим значением, которое будет использоваться с extra. * ключи в сочетании с --json .

Изменение репозиториев #

Помимо изменения раздела конфигурации, команда config также поддерживает создание вносит изменения в раздел репозиториев, используя его следующим образом:

  php composer.phar config repositories.foo vcs https://github.com/foo/bar  

Если вашему репозиторию требуются дополнительные параметры конфигурации, вы можете вместо этого передать его представление JSON:

  php композитор.phar config repositories.foo '{"type": "vcs", "url": "http://svn.example.org/my-project/", "trunk-path": "master"}'  

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

  конфигурация php composer.phar extra.foo.bar значение  

Точки указывают на вложение массивов, но допускается максимальная глубина в 3 уровня. Над установит "extra": {"foo": {"bar": "value"}} .

Если вам нужно добавить / изменить сложное значение, вы можете использовать флаги --json и --merge . для редактирования дополнительных полей как json:

  php composer.phar config --json extra.foo.bar '{"baz": true, "qux": []}'  

создать проект №

Вы можете использовать Composer для создания новых проектов из существующего пакета. Это эквивалент выполнения git clone / svn

8 лучших подключаемых модулей GIMP и способы их установки

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

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

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

Но вот тут-то и мы.В этом руководстве мы расскажем, где взять лучшие плагины GIMP и как их установить. Итак, приступим ...

Где найти плагины GIMP

Сцена плагина GIMP немного запуталась.Раньше плагины собирались вместе в реестре GIMP, но этого больше не существует. Это означает, что теперь они разбросаны по Интернету.

Некоторые тоже очень старые.Во многих случаях они не обновлялись в течение десяти или более лет. Нет никакой гарантии, что плагины будут нормально работать с новейшими версиями GIMP. Действительно, популярные, такие как плагин GIMP DDS или BIMP, теперь заброшены и больше не работают.

Как установить плагины GIMP

Неизбежно усложняется и процесс установки.Есть два основных способа установить плагины GIMP.

Во-первых, это ручной способ.Если ваш плагин находится в ZIP-файле, вам необходимо скопировать его содержимое в папки плагинов и скриптов GIMP.

  1. Разархивируйте загрузку.
  2. В GIMP перейдите в Настройки> Папки . Найдите разделы Plug-ins и Scripts .
  3. В каждом разделе по две папки. Одна - системная папка, другая - папка пользователя. Выберите последний и нажмите Показать расположение файла в файловом менеджере , чтобы открыть его.
  4. Если ваши загрузки имеют формат PY , переместите их в папку Plug-ins .
  5. Если они имеют формат SCM , переместите их в папку Scripts .
  6. Теперь перезапустите GIMP.

Второй способ - автоматический. Некоторые плагины поставляются в комплекте с собственным установщиком. Просто дважды щелкните по нему и установите его, как любое другое приложение.

Установщики зависят от платформы, поэтому вы можете найти плагины, доступные только для Windows, но не для Linux или Mac.Кроме того, помните, что открытие случайных установщиков из Интернета - рискованное дело, поэтому убедитесь, что ваше антивирусное программное обеспечение обновлено и работает правильно.

Есть третий вариант, который заключается в установке индивидуальной версии всего приложения GIMP.Популярная сборка, которую можно найти на сайте partha.com, включает несколько предустановленных плагинов, включая Resynthesizer и G'MIC.

Это одни из лучших плагинов GIMP, как мы увидим дальше.

GIMP 2.10 (как начать использовать GIMP) - одно из лучших бесплатных приложений для редактирования фотографий, которое вы можете получить. Вы даже можете использовать его с фотографиями в формате RAW, но сначала вам нужно добавить свой собственный редактор RAW. Есть два основных варианта: DarkTable и RawTherapee.

Оба заслуживают тестирования, но мы предпочитаем DarkTable из-за его более доступного интерфейса, более поверхностной кривой обучения и некоторых расширенных функций, включая инструменты маскирования.

После установки вы можете перетащить свои изображения RAW в GIMP, и он запустит DarkTable, в котором вы можете начать редактирование.Эффект такой же, как и у знаменитой комбинации Photoshop и Adobe Camera RAW, и такой же хороший. Прочтите наше руководство по Darktable, чтобы познакомиться с основами этого популярного редактора RAW.

Еще один плагин для фоторедакторов, G'MIC предлагает более 500 фильтров и эффектов, которые вы можете использовать, чтобы оживить ваши снимки.

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

Resynthesizer - один из старейших плагинов GIMP и один из самых важных.Он предоставляет ряд инструментов, основанных на работе с текстурами. Вы найдете ключевую часть в меню улучшения: Heal Selection .

Это эквивалент инструмента Photoshop Content Aware Fill в GIMP, одна из вещей, которые Photoshop может делать, а GIMP - нет.Это позволяет вам полностью удалить ненужные объекты с фотографии.

Heal Selection волшебным образом заменяет вторжение окружающим контентом на фоне вашего изображения, и оно идеально сочетается.Итак, если вы уберете что-то с неба, пространство будет заполнено еще большим количеством неба. Обычно для этого вам нужно использовать инструмент Clone. Это гораздо более трудоемкий процесс.

Документация Beautiful Soup - Документация Beautiful Soup 4.4.0

Красивый суп

самый последний

  • Beautiful Soup Documentation
    • Получение помощи
  • Быстрый старт
  • Установка Beautiful Soup
    • Проблемы после установки
    • Установка парсера
  • Приготовление супа
  • Виды объектов
    • Тег
      • Наименование
      • Атрибуты
        • Многозначные атрибуты
    • NavigableString
    • BeautifulSoup
    • Комментарии и другие специальные строки
  • Навигация по дереву
    • Спуск вниз
      • Навигация с использованием имен тегов
      • .содержание и . дети
      • . Потомки
      • . Строка
      • . Строки и stripped_strings
    • Движение вверх
      • . Родительский
      • . Родители
    • Движение боком
      • .next_sibling и .previous_sibling
      • .next_siblings и .previous_siblings
    • Переход вперед и назад
      • .next_element и .previous_element
      • .next_elements и .previous_elements
  • Поиск в дереве
    • Виды фильтров
      • Строка
      • Регулярное выражение
      • Список
      • Истинно
      • Функция
    • find_all ()
      • Имя аргумент
      • Аргументы ключевого слова
      • Поиск по классу CSS
      • Строка аргумент
      • Предел аргумент
      • Рекурсивный аргумент
    • Вызов тега аналогичен вызову find_all ()
    • найти ()
    • find_parents () и find_parent ()
    • find_next_siblings () и find_next_sibling ()
    • find_previous_siblings () и find_previous_sibling ()
    • find_all_next () и find_next ()
    • find_all_previous () и find_previous ()
    • Селекторы CSS
  • Изменение дерева
    • Изменение имен и атрибутов тегов
    • Изменение .строка
    • добавить ()
    • удлинить ()
    • NavigableString () и .new_tag ()
    • вставка ()
    • insert_before () и insert_after ()
    • прозрачный ()
    • экстракт ()
    • разложить ()
    • replace_with ()
    • обертка ()
    • развернуть ()
    • гладкая ()
  • Вывод
    • Довольно полиграфический
    • Некрасивая печать
    • Устройства форматирования вывода
    • get_text ()
  • Указание парсера для использования
    • Различия между парсерами
  • Кодировки
    • Кодировка вывода
    • Unicode, Dammit
      • Умные котировки
      • Несогласованные кодировки
  • Номера строк
  • Сравнение объектов на равенство
  • Копирование объектов Beautiful Soup
  • Разбор только части документа
    • SoupStrainer
  • Поиск и устранение неисправностей
    • диагностика ()
    • Ошибки при разборе документа
    • Проблемы несоответствия версий
    • Разбор XML
    • Другие проблемы парсера
    • Разное
    • Повышение производительности
  • Тран
.

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

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