Вынужденная самоизоляция стимулировала многих из нас вспомнить о своих pet-проектах или просто найти себе хобби. Кто-то увлекается радиосвязью, кто-то разрабатывает корпуса для Raspberry. Ну а кто-то занимается выпечкой. Но не простой, а с привлечением машинного обучения.
Разработчик Сара Робинсон, специалист по машинному обучению, решила испечь идеальный кекс. Но не методом проб и ошибок этим занимались наши бабушки, а при помощи технологий. Все началось с того, что взяла 33 разных рецепта печенья, пирогов и хлеба и построила TensorFlow модель для анализа всех этих данных. Сначала целью было понять, почему хлебобулочные изделия иногда сильно крошатся и как этого можно избежать. Но в конечном итоге Сара смогла получить рецепт идеального кекса, который на самом деле является чем-то средним между печеньем и пирогом. А еще рецепт гибрида хлеба и печенек.
От набора данных до кухонного стола
В декабре 2020 года Сара привлекла к проекту своего коллегу сотрудника Google по имени Дейл Маркович. Вместе они и разработали гибридный рецепт. Полученная в итоге модель позволяла по введенным игредиентам определить, что получится в итоге печенье, пирог или хлеб.
После того, как все получилось, разработчики (немного странно употреблять этот термин в применении к выпечке, правда?) решили пойти дальше. Проект масштабировали. На этот раз для анализа отобрали уже 600 рецептов. Их тщательно проанализировали для того, чтобы выделить 16 самых важных ингредиентов, которые влияют на текстуру и упругость выпечки, плюс, конечно, на вкусовые качества.
Этими ингредиентами оказались:
- дрожжи,
- мука,
- сахар,
- яйца,
- жир (любое масло),
- молоко,
- пищевая сода,
- разрыхлитель,
- яблочный уксус,
- пахта,
- банан,
- тыквенное пюре,
- авокадо,
- вода,
- масло,
- соль.
Авторы проекта при помощи новой модели составили не только список ингредиентов, но и определили правильные пропорции, которые помогают создать идеальную выпечку.
Кроме того, модель оказалась способной самостоятельно определять тип выпечки, отделяя
Для каждого из типов выпечки печенья, пирога или хлеба модель предсказывала оптимальное количество и соотношение масла, сахара, дрожжей и яиц. А еще полученная модель давала возможность получить рецепт для гибридных блюд. Ниже фото гибрида пирога и печенья с использованием шоколадной крошки.
Пример кода, модель и работающий сервис
Что касается TensorFlow модели, то код достаточно короткий. Для модели использовался Keras API.
model = tf.keras.Sequential([ tf.keras.layers.Dense(16, input_shape=(num_ingredients,)), tf.keras.layers.Dense(16, activation='relu'), tf.keras.layers.Dense(3, activation='softmax') ])
При помощи Python разработчики создали функцию, которая преобразовывает вводимые ингредиенты сначала в привычные для любителей выпечки единицы измерения (чашки, чайные ложки и т.п.), а потом в проценты.
def get_prediction(request): data = request.get_json() prescaled = dict(zip(columns, data)) scaled = scale_data(prescaled) # Send scaled inputs to the model prediction = predict_json('gcp-project-name', 'baking', scaled) # Get the item with the highest confidence prediction predicted_ind = np.argmax(prediction) label_map = ['Bread', 'Cake', 'Cookies'] baked_prediction = label_map[predicted_ind] confidence = str(round(prediction[predicted_ind] * 100)) if baked_prediction == 'Bread': emoji = "It's bread! " elif baked_prediction == 'Cake': emoji = "It's cake!