Что полезнее щи или борщ? Что раньше появилось — русские щи или украинский борщ

Щи — это овощной суп, сваренный на мясном бульоне. Капуста — основной овощной компонент щей, но необязательный.

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

Эту особенность традиционного русского супчика отражает название, которое, по одной из версий, образовано от древнерусского «шавьнъ» (кислый). От него же происходит и слово «щавель». Согласно другой версии, «щи» (шти, съти) восходят к слову «съто» (пропитание). Это не деликатес, а блюдо каждого дня.

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

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

Какие бывают щи?

Щи — повседневное блюдо русской кухни, употребляемое всеми сословиями. Понятно, что «щи от чистого сердца», которыми Манилов потчевал Чичикова, отличались от тех, что хлебал простой мужик.

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

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

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

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

Такие щи называются сборными.

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

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

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

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

Раньше для этой цели использовали еще сныть и борщевик сибирский (Heracleum sibiricum). Это преимущественно европейский вид, не токсичный, в отличие от борщевика Сосновского, — традиционное овощное растение средневековой Руси.

Щи с борщевиком назывались борщевыми, а слово «борщ» приобрело значение «суп со свеклой» только в XVIII веке.

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

Исключение из этого правила составляют суточные щи.

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

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

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

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

О щах кислых и ленивых.

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

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

Щи непременно должны быть с кислинкой.

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

Постные щи.

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

Существует и эконом-вариант постных щей (пустые): капуста, сваренная на бульоне из лука и кореньев, а в крайнем случае просто из лука. Поскольку без луковицы вообще ни один бульон не обходится, именно она, а не капуста — непременный компонент щей.

Как варить.

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

Алюминиевая кастрюля для этого не подойдет.

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

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

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

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

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

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

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

Загущение.

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

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

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

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

Часто его вообще потом вынимают из кастрюли — свое дело он сделал, крахмал в бульон отдал.

Загустить щи можно и крупой: рисом или гречкой.

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

О консистенции.

Кстати, о густоте супа как соотношении гущи и бульона. В традиционных щах жидкости должно быть не больше трети.

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

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

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

Капустняк.

Что же мы варим на плите, помешивая в алюминиевой кастрюле ложкой из нержавейки? Увы, это не щи, а просто капустный суп. На юге России, в Польше и на Украине готовят капустняк.

Некоторые называют его украинским ответом русским щам.

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

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

Всем ли полезны щи?

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

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

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

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

Как готовили щи на Руси

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

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

Выбираем рецепт вкусных щей

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

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

Как приготовить вкусные щи: несколько секретов

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

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

Секрет 2. Не варите щи из слишком молодой капусты, которая годится больше для салатов. Лучший выбор для щей - осенняя капуста с плотными, крепкими и белыми кочанами. Многие хозяйки капусту доводят до предварительной готовности отдельно - молодую капусту тушат в сотейнике на плите в течение 15 минут, а более зрелую капусту готовят в глиняной посуде в духовке - часа два-три. Зачем это нужно? Дело в том, что когда капуста томится, она насыщается новыми вкусами и ароматами, которые обогащают вкус блюда.

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

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

Готовим щи быстро

Хорошо, когда есть время, чтобы уделить весь день, но иногда необходимо приготовить для семьи быстрый обед, и в этом случае спасают рецепты для очень занятых хозяек. Бульон в этом случае лучше сварить с вечера, к тому же мясо за ночь станет мягким и нежным, поэтому вам не составит труда порезать его кубиками и снова вернуть в кастрюлю. Введите в бульон нашинкованную соломкой свежую капусту, после закипания добавьте порезанный дольками картофель и, пока щи варятся, обжарьте в масле на сковороде морковь, лук, чеснок и корень петрушки. Опустите в щи томаты с предварительно снятой кожицей и нарезанный кубиками сладкий перец, а после того, как овощи немного проварятся, добавьте к ним морковную заправку. Не забудьте о лавровом листе, черном перце и зелени, которую лучше добавить в готовые щи вместе со сметаной. На 400 г мяса возьмите небольшой кочан капусты, 2 картофелины, 2 томата, 1 морковь и 1 головку лука, а травы и корешки можно добавлять по вкусу. Ваша семья будет довольна!

Щи из квашеной капусты

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

Из килограмма говядины сварите наваристый бульон - с лавровым листом и душистым перцем. Пока бульон варится, обжарьте на сковороде с подсолнечным маслом 2 луковицы и, когда лук станет прозрачным, добавьте к нему 2 нашинкованные на терке моркови. После того как морковь станет мягкой, снимите сковороду с огня и займитесь бульоном. Вам нужно вынуть мясо, порезать его на кусочки, выложить обратно в кастрюлю и высыпать в нее порезанные кубиками 2 картофелины и измельченный корень петрушки. Минут через 10 добавляйте в щи 600 г квашеной капусты, которую можно сначала слегка отжать, чтобы удалить лишнюю кислоту. Впрочем, если вы любите щи с кислинкой, то с капустой ничего делать не нужно - просто варите ее в бульоне 15 минут, потом добавьте обжарку и варите еще минут 7 с любимыми пряностями и приправами. Подавайте кислые щи со сливками или сметаной, посыпав душистой зеленью. Приятного аппетита!

На сайте «Едим Дома!» вы найдете множество пошаговых рецептов щей на любой вкус. Готовьте с любовью для своей семьи и получайте удовольствие от еды!

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

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

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

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

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

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

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

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

Распознаванием лиц в 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.

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

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


И ведь нет повода не выпить, вернее, не возгордицца тем, что Чагода – область Вологодская

Рецепт от Анна Ивановны Соловьевой (1923 г.)
После первых заморозков в конце сентября - начале октября рубят капусту , отрывают верхние зеленые листья, тщательно моют их, складывают в специальную деревянную бочку и мелко рубят специальной сечкой на длинной палке. Для цвета добавляются листья белокочанной капусты . Добавляют 150 грамм соли на ведро и 150 грамм ржаной муки, все смешивается и укладывается закисать в деревянный бочонок. Сверху необходимо положить деревянный круг и прижать речным камнем.

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

Оговорюсь лишь, что ((((Рубят щи в корыте деревянном, типа тяпкой, потом складувают в бочку-бак-кастрюлю (эмальку) на худой конец (никогда, наверна, не засниму, хоть уже года 4 жду). Вместо муки можно и хлеб черный кинуть, квасим же (в смысле не бухаем, а от словей «квас-закваску» получить…)И вот именно это крошево и называецца «серые щи», а уж только потом то, что из него, крошева, готовят...
Моя банка капусты из Ярославской области, они, как и псковичи, архангелогородцы и т.д… переняли рецепт, но добавляли больше белых листьев и иногда морковь, цвет же натуральных – болотно-серо-зелеоный. Они и мороза не боятся, можно хранить на морозе но и в холоде хранить не обязательно, главное, в темном месте.
Свинина жирная на кости с салом
Картоха
Лук
и собственно щи щаниц а (половина литровой плотно утрамбованной банки без сока)

Свинину с картохой и луком целиковыми суем в печку, естессно залив водой, чтоб покрыло…. Ладно, расслабьтесь, в духовку в горшке-казане (на плите можно) на 180 градусов на полтора часа.

Картоху с луком и салом разминаем (мясорубим, трем на терке) в кашу. Если добавляете морковь, то ее тож целиком и мнем. Чуть присаливаем.

Пихаем щаницу (если сильно кислые, то промыто в холодной воде, сок отжать).

И обратно в духовку томить. Канеш, было б замечательно на ночь на 100 градусов, но долго, поэтому на 150гр на 2 часа минимум.
А щи мы будем есть с пирогом с солеными грибами, который, зовется ГУБНИК, губу закатали и рецептуру начинки чуть изменили (насчет рецепта я пытала подругу, которая родилась в деревне, совсем деревне на севере вологодчины). Парадокс в том, что моя русская бабушка была спецом по щам, поэтому мои любые и мамины ели все! Если рецепт щей я начинаю «ловить», то пироги она пекла еще обалденнее, но семья, а потом и появившиеся мы, с грибами не ели.
Так что ставим тесто по памяти (научить уже некому, кулебячное)
600 г муки ,
200 г масла ,
3 желтка ,
1 стакан молока ,
25 г дрожжей ,
1 ч. ложка соли .
Из половины муки, молока, дрожжей замесить тесто, дать подойти. Когда поднимется, замесить с остальной мукой, маслом, желтком, солью, дать подойти, после чего разделывать под пироги.
Оговорюсь сразу, я не очень люблю тесто, катала, как на пиццу и мешали все разом (обминая пару раз). Если хотите прям пирог, то тянуть, а не катать и на опаре, желательно.

Грибы промыть.

Сварить 2 яйца вкрутую.

Луковицу обжарить до прозрачности.

Грибы я не жарила, просто на горячей сковороде смешала начинку (там нет соли, черным молотым можно, но я не стала).

Выложить начинку на раскатанное тесто.

Сверху смазать жирной сметаной. Выпекала 25 мин просто верх/низ 220. А пока щи настаиваются (открыла ради посмотреть)

Пирог печется, надо же вспомнить выхи на «бабушкиной» даче… Там уже никто не напечет пирогов, не приготовит в печке самых вкусных разных щей, да и дом, кстати, купленный у дяди Мити, рожденнного в 1905 году в нем же, скоро снесется, ибо на его месте уже поднимается новый… Кстати, как они там жили? В деревке 10 домов (уже давно все дачные), километр до дороги, но зимой непроходимый, плиты положены уже при нас, но и наши буранами катают, если бухать зимой…
И жрем мы там шашлыки.

Но вернемся к нашим щам, ибо футбол, ибо выпить-закусить, еще и зима пришла или осень поздняя, как раз время грибов и капусты..
Кстати, это ваще не похоже на капусту. Думаю, есть общее с Абиной зеленью. Это невозможно переварить-тушить. Никогда не превратится в сопли. Очень бодрит 1 января, а выпить под них можно немеряно. А если вынести на балкон зимой, покроется ледяной коркой, а на 2-3-4….день будут вкуснее и вкуснее…

Можно осовременить, добавив, зажарку, томат и т.д., если готовить на плите, но иногда, чем проще, тем лучше.
И знаете, спасибо Топтухе , если б не конкурс местечковой кухни, я б никогда не узнала столько нового про блюда, знакомые с детства (парадокс)… Желаю нам всем это не растерять, ведь это ж, как родной язык, - наша КУХНЯ, и лжа, что бедная. Богатая она, как богаты и мы нашими местечковыми, национальными и т.д. традициями. Как богаты мы были, когда у нас было детство и бабушки-тетушки и т.д… Не хотелось бы, чтоб именно истоки канули в лету. Тем более, что истоки-то у нас огого!
Кстати, щи эти готовятся и с перловкой. Но пока это слишком нажористо. И – специи, там все лишнее. Подать со сметаной. Укроп-лук-чеснок чуть подавить с солью (по вкусу). Я, кроме каши, не солила вообще. А остроту пихаем по вкусу, но лучше в готовое.

Статьи по теме