Щи, просто ЩИ или Серые Щи (не забываем заготовить листья для щей). Что раньше появилось — русские щи или украинский борщ

Рецепт приготовления щей выдает его глубокую архаику. Готовится этот суп, как известно, на мясном или овощном бульоне, с добавлением грибов, иной раз и с рыбой. Непременно добавляют в щи овощи: капусту, репу, морковь, лук. Позднее вместо репы стали добавлять картофель. Историк русской кухни Похлебкин отмечает парадоксальную вещь: ни один из этих ингредиентов не является обязательным. Мясо может быть, а может и не быть, грибы можно добавлять, а можно и нет. Даже капуста, при том, что она считается основой щей, присутствует не обязательно. Все знают зеленые щи, сваренные со щавелем, крапивой и другими травами. Очевидно, что готовили щи исстари по принципу: все, что есть в доме – клади в горшок. По этой причине существует такое множество разновидностей щей: мясные, богатые, сборные, грибные, постные, рыбные, зеленые и т.п. Хозяйка помещала в горшок все, чем была богата, заливала водой и ставила в печь. Этим технологические тонкости приготовления щей, вероятно, исчерпывались. Не стоит забывать и о такой архаичной особенности рецепта щей, как добавление в кушанье мучной болтушки, чтобы сделать варево более сытным. От муки отказались лишь в XIX веке, когда в моду вошла французская кухня.

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

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

В чем различие между борщом и щами?

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

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

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

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

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

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

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

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

1). Основное, классическое русское национальное горячее суповое блюдо.

Главная особенность щей, отличающая их от всех других блюд, - это их абсолютная неприедаемость.

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

Это обстоятельство было замечено уже в древности (щи известны по крайней мере с IX в. на Руси) и нашло отражение в пословице: «Родной отец надоест, а щи - никогда!»

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

Объяснение этому феномену надо искать не столько в географии, сколько, пожалуй, в истории.

Основной компонент щей - капуста - была хорошо известна как пищевой продукт еще в античном Риме и, собственно, пришла в Россию из Римской империи, из Византии, в эпоху крещения (христианизации) Руси.

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

Конечно, щи были созданы не в один день.

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

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

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

Щи - типичное блюдо оседлого народа.

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

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

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

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

Несколько позднее в состав ароматической заправки были внесены черный перец и лавровый лист, которые были завезены с Востока, а может быть, непосредственно из той же Византии в XV в.

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

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

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

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

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

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

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

Так, в щах со временем была отброшена традиционная мучная подболтка.

Разработано множество вариантов щей (не менее нескольких десятков).

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

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

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

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

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

Во всяком случае, правила получения хороших щей просты: два - два с половиной часа должна вариться мясная часть (не менее!).

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

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

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

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

Такие щи носят название «богатых».

К щам идет в основном черный ржаной хлеб (и это также крайне важно).

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

И уже в одном этом заключена загадочность и очарование щей как блюда.

Это не суп с капустой, какие бывают и в Западной Европе, это особое блюдо - именно щи!

«Личность» с собственным именем!

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

2) ЩИ С незапамятных времен на Руси щи были самым распространенным горячим блюдом.

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

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

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

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

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

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

Эту же роль выполняет и молочная кислота квашеной капусты.

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

Щи приготовляют на мясном, рыбном и грибном бульонах и на воде.

На рыбном бульоне чаще всего готовят щи из квашеной капусты.

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

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

Перед подачей в тарелку со щами кладут сметану или сметану подают в соуснике; посыпают и мелко нарезанной зеленью.

Очень ценен минеральный состав этого блюда.

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

Зимой и летом щи являются важным источником витамина С, фо-лиевой кислоты, каротина.

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

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

Распознаванием лиц в 2018 году никого не удивишь – каждый студент, может, даже школьник, его делал. Но всё становится немного сложнее, когда у вас не датасет на 1 млн пользователей, а:

  • 330 миллионов пользовательских аккаунтов;
  • ежедневно заливается 20 млн пользовательских фотографий;
  • максимальное время на обработку одного фото не должно превышать 0.2 сек ;
  • ограниченные объемы оборудования для решения задачи.

В этой статье мы поделимся опытом разработки и запуска системы распознавания лиц на пользовательских фотографиях в социальной сети Одноклассники и расскажем про все ”от А до Я”:

  • математический аппарат;
  • техническую реализацию;
  • результаты запуска;
  • и акцию StarFace , которую мы использовали для PR-а нашего решения.

Задача

Более 330 млн аккаунтов зарегистрировано в Одноклассниках, в этих аккаунтах содержится более 30 млрд фото.


Пользователи ОК заливают 20 млн фото в сутки. На 9 млн загруженных за сутки фотографий присутствуют лица, а всего детектируется 23 млн лиц. То есть, в среднем 2.5 лица на фотографию, содержащую хотя бы одно лицо.


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



Система распознавания пользователей в соц сети

Распознавание лиц на загруженном фото

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


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



Рисунок 1. Распознавание пользователей на фото


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

Построение пользовательских профилей

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



Рисунок 2. Трудный профиль


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



Рисунок 3. Построение пользовательских профилей


Мы строили профиль пользователя следующим образом (Рис. 3):


1) Выбирали наиболее качественные фотографии пользователя


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

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

2) Искали на этих фотографиях лица

  • не страшно, если это будут другие пользователи (на шаге 4 мы их отфильтруем)

3) Вычисляли характеристический вектор лица

  • такой вектор называется эмбеддингом

4) Производили кластеризацию векторов


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


5) Определяли лидирующий кластер


Для каждого кластера мы считали вес на основании:

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

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


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


6) Получали эмбеддинги пользователя по его кластерам

  • Наконец, строим вектор, который будет характеризовать внешность владельца аккаунта, – “эмбеддинг пользователя”.

Эмбеддинг пользователя – это центроид отобранного для него (лидирующего) кластера.
Строить центроиды можно множеством разных способов. После многочисленных экспериментов мы вернулись к самому простому из них: усреднение входящих в кластер векторов.


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


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


Процесс построения всех профилей на портале мы производили несколько раз, так как наличие информации о друзьях повышает качество выбора кластера.
Объем данных необходимый для хранения векторов ~300 GB.

Детектор лиц

Первую версию детектора лиц ОК запустили в 2013 году на базе стороннего решения, схожего по характеристикам с детектором на базе метода Виолы - Джонса. За 5 лет это решение устарело, современные решения, основанные на MTCNN , показывают точность в два раза выше. Поэтому мы решили следовать трендам и построили свой каскад из сверточных нейронных сетей (MTCNN).


Для работы старого детектора мы использовали более 100 “стареньких” серверов с CPU. Практически все современные алгоритмы нахождения лиц на фото основаны на свёрточных нейронных сетях, которые наиболее эффективно работают на GPU. Закупить большое число видеокарт мы не имели возможности по объективным причинам: дорого все скупили майнеры. Решено было запускаться c детектором на CPU (ну не выкидывать же сервера).


Для детектирования лиц на заливаемых фотографиях мы используем кластер из 30 машин (остальные пропили сдали в утиль). Детектирование при построении пользовательских векторов (итерации по аккаунтам) мы делаем на 1000 виртуальных ядрах с низким приоритетом в нашем облаке. Облачное решение детально описано в докладе Олега Анастасьева : One-cloud - ОС уровня дата-центра в Одноклассниках .


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



Рисунок 4. Примеры большого количества кандидатов после первой сети в каскаде


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


Применив пару оптимизаций (например, заменив Non-Maximum Suppression после первой ступени каскада на фильтрацию на основе Blob detection), разогнали детектор ещё в 1.4 раза без потери качества.
Впрочем прогресс на месте тоже не стоял, и сейчас искать лица на фото принято более элегантными методами - см. FaceBoxes . Не исключаем, что в ближайшее время и мы переедем на нечто подобное.

Распознаватель лиц

При разработке системы распознавателя мы экспериментировали с несколькими архитектурами: Wide ResNet , Inception-ResNet , Light CNN .
Немного лучше остальных себя показала Inception-ResNet, пока остановились на ней.


Для работы алгоритма нужна обученная нейронная сеть. Её можно найти на просторах интернета, купить, либо обучить самим. Для обучения нейронных сетей необходим некоторый набор данных (датасет), на котором происходит обучение и валидация. Так как распознавание лиц - известная задача, для неё уже существуют готовые датасеты: MSCeleb, VGGFace/VGGFace2, MegaFace. Однако, тут вступает в дело суровая реальность: обобщающая способность современных нейросетей в задачах идентификации по лицу (да и вообще) оставляет желать лучшего.
А на нашем портале лица сильно отличаются от того, что можно найти в открытых датасетах:

  • Иное распределение возрастов – на наших фото есть дети;
  • Другое распределение этносов;
  • Попадаются лица в очень низком качестве и разрешении (фото с телефона, снятые 10 лет назад, групповые фото).

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


В процессе построения набора методом проб и ошибок мы пришли к такой процедуре:

  1. Выкачиваем фото из ~100k открытых профилей
    Профили выбираем случайно, минимизируя количество тех, кто состоит друг с другом в дружеских отношениях. Вследствие этого считаем, что каждый человек из датасета появляется только в одном профиле
  2. Строим вектора (эмбеддинги) лиц
    Для построения эмбеддингов используем предобученную опенсорсную нейросеть (мы взяли отсюда).
  3. Кластеризуем лица в рамках каждого аккаунта
    Пара очевидных наблюдений:

    • Мы не знаем, сколько разных людей появляются на фото из аккаунта. Следовательно, кластеризатор не должен требовать количество кластеров в качестве гиперпараметра.
    • В идеале для лиц одного и того же человека надеемся получить очень похожие вектора, образующие плотные сферические кластеры. Но Вселенной нет дела до наших чаяний, и на практике эти кластера расползаются в замысловатые формы (например, для человека в очках и без кластер обычно состоит из двух сгустков). Поэтому centroid-based методы тут нам не помогут, нужно использовать density-based.

      По этим двум причинам и результатам экспериментов выбрали DBSCAN . Гиперпараметры подбирали руками и валидировали глазами, тут всё стандартно. Для самого главного из них – eps в терминах scikit-learn – придумали простенькую эвристику от количества лиц в аккаунте.

  4. Фильтруем кластера
    Основные источники загрязнения датасета и как мы с ними боролись:

    • Иногда лица разных людей сливаются в один кластер (из-за несовершенства нейросети-рекогнайзера и density-based природы DBSCAN-а).
      Помогла нам простейшая перестраховка: если два или более лиц в кластере пришли из одной фотографии, мы такой кластер на всякий случай выкидывали.
      Это значит, любители селфи-коллажей в наш датасет не попадали, но оно того стоило, ибо количество ложных “слияний” уменьшилось в разы.
    • Случается и обратное: одно и то же лицо образует несколько кластеров (например, когда есть фотографии в очках и без, в макияже и без и т.д.).
      Здравый смысл и эксперименты привели нас к следующему. Измеряем расстояние между центроидами пары кластеров. Если оно больше определённого порога - объединяем, если достаточно велико, но порог не проходит - выкидываем один из кластеров от греха подальше.
    • Бывает, детектор ошибается, и в кластерах оказываются вовсе не лица.
      К счастью, нейросеть-распознаватель легко заставить фильтровать такие ложные срабатывания. Подробнее об этом ниже.
  5. Дообучаем нейросеть на том, что получилось, возвращаемся с ней к пункту 2
    Повторять 3-4 раза до готовности.
    Постепенно сеть становится лучше, и на последних итерациях надобность в наших эвристиках для фильтрации вовсе отпадает.

Решив, что чем разнообразнее, тем лучше – подмешиваем к нашему новенькому датасету (3.7M лиц, 77K людей; кодовое название - OKFace) что-нибудь ещё.
Самым полезным чем-нибудь ещё оказался VGGFace2 – достаточно большой и сложный (повороты, освещение). Как водится, составлен из найденных в Гугле фото знаменитостей. Неудивительно, что очень “грязный”. К счастью, почистить его дообученной на OKFace нейросетью – дело тривиальное.

Функция потерь

Хорошая функция потерь для Embedding learning – всё ещё открытая задача. Мы попытались подойти к ней, опираясь на следующее положение: нужно стремиться, чтобы функция потерь максимально соответствовала тому, как модель будет использоваться после обучения


А использоваться наша сеть будет самым стандартным образом.


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


Соответственно, хотим, чтобы:



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


А сами центроиды – это просто параметры нейросети, обучаются, как и всё остальное, градиентным спуском.


У такой функции потерь есть свои проблемы. Во-первых, она плохо подходит для обучения с нуля. Во-вторых, подбирать целых два параметра - и - довольно утомительно. Тем не менее, дообучение с её использованием позволило добиться более высокой точности, чем остальными известными нам функциями: Center Loss , Contrastive-Center Loss , LMCL (CosFace) .

И стоило оно того?


цифры в таблице - средние результаты 10 замеров +-стандартное отклонение


Важный для нас показатель - TP@FP: какой процент лиц мы опознаем при фиксированной доле ложных срабатываний (здесь - 0.1%).
С лимитом ошибок 1 на 1000 и без дообучения нейросети на нашем датасете мы могли распознавать лишь половину лиц на портале.

Минимизируем ложные срабатывания детектора

Детектор порой находит лица там, где их нет, причём на пользовательских фото делает это часто (4% срабатываний ложные).
Довольно неприятно, когда такой “мусор” попадает в тренировочный датасет.
Очень неприятно, когда мы настойчиво просим наших пользователей “отметить друга” в букете роз или на текстуре ковра.
Решить проблему можно, и самый очевидный способ – собрать побольше не-лиц и прогнать через нейросеть-рекогнайзер их выявлять.


Мы же по обыкновению решили начать с быстрого костыля:




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

Все врут или определение реального возраста и пола в социальной сети

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

Архитектура решения

Так как вся внутренняя инфраструктура ОК построена на Java, то и все компоненты мы завернем в Java. Inference на detector и recognizer работает под управлением TensorFlow через Java API. Detector работает на CPU так как удовлетворяет нашим требованиям и работает на уже имеющемся оборудовании. Для Recognizer-а мы установили 72 GPU карты, так как запуск Inception-ResNet не целесообразен на CPU с точки зрения ресурсов.


В качестве базы данных для хранения векторов пользователя используем Cassandra.
Так как суммарный объем векторов всех пользователей портала ~300Gb, то для быстрого доступа к векторам добавляем кэш. Кэш реализован в off-heap, детали можно прочитать в статье Андрея Паньгина : «Использование разделяемой памяти в Java и off-heap кеширование ».


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



Рисунок 6. Архитектура решения

Результаты

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


Качество распознавания на датасете, построенном на реальных профилях из ОК, составило TP=97.5% при FP=0.1%. Среднее время обработки одной фотографии составляет 120 мс, а 99 перцентиль укладывается в 200 мс. Система самообучающаяся, и чем больше тегируют пользователя на фото, тем точнее становится его профиль.


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



Автоматическое распознавание привело к 2-кратному росту показов событий в ленте об отметках на фотографиях, а количество кликов на эти события выросло в 3 раза. Интерес пользователей к новой фиче очевиден, но мы планируем вырастить активность еще больше за счет улучшения UX и новых точек применения, таких как Starface.

Флешмоб StarFace

За первые дни акции пользователи уже загрузили более 10 тысяч фото со знаменитостями. Выкладывали селфи и фотографии со звездами, фото на фоне афиш и, конечно, “фотошоп”. Фото пользователей, получивших ВИП-статус:


Планы

Так как большая часть времени тратится на детектор, то дальнейшую оптимизацию скорости нужно проводить именно в детекторе: заменить его или перенести на GPU.

Добавить метки

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

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

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

Состав и полезные свойства борща

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

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

В чем отличия щей

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

Похожие статьи