Максимальный балл: | 10 | Ограничение времени: | 1 сек | |
Ограничение памяти: | 512 Мб |
Требуется решить задачу классификации Kuzushiji-49.
В качестве решения принимается файл с исходным кодом, например jupyter notebook. Необходимо обучить две модели, принимающие на вход плоские и обычные изображения соответственно. Сбалансированная точность второй модели на валидационной выборке должна превышать точность первой. В систему требуется отправить ссылку на файл, размещённый в открытом доступе (Google Colab, Github, Google Drive и др.), указав среду разработки "Answer text
". После отправки решение необходимо сдать преподавателю лично.
Базовый ноутбук можно скачать здесь.
Максимальный балл: | 10 | Ограничение времени: | 1 сек | |
Ограничение памяти: | 512 Мб |
Требуется решить задачу классификации CIFAR-10.
В качестве решения принимается файл с исходным кодом, например jupyter notebook. В систему требуется отправить ссылку на файл, размещённый в открытом доступе (Google Colab, Github, Google Drive и др.), указав среду разработки "Answer text
". Архитектура модели должна быть реализована самостоятельно. После отправки решение необходимо сдать преподавателю лично.
Базовый ноутбук можно скачать здесь.
Максимальный балл: | 10 | Ограничение времени: | 1 сек | |
Ограничение памяти: | 512 Мб |
Требуется решить задачу классификации Tiny ImageNet.
В качестве решения принимается файл с исходным кодом, например jupyter notebook. В систему требуется отправить ссылку на файл, размещённый в открытом доступе (Google Colab, Github, Google Drive и др.), указав среду разработки "Answer text
". После отправки решение необходимо сдать преподавателю лично.
Базовый ноутбук можно скачать здесь.
Максимальный балл: | 10 | Ограничение времени: | 1 сек | |
Ограничение памяти: | 512 Мб |
Требуется реализовать различные способы загрузки датасета для обучения:
tf.keras.utils.image_dataset_from_directory
. Реализация должна поддерживать следующие аргументы: directory, batch_size, image_size, shuffle, seed, validation_split, subset
; и возвращать объект класса tf.data.Dataset
. Элементом датасета является пара батч изображений и их классов. Альтернативно на pytorch реализовать аналогичную функцию, возвращающую torch.utils.data.DataLoader
.
def load_dataset(path: str, batch_size: int, image_size: tuple[int, int], shuffle: bool, split: str) -> tuple[tf.data.Dataset, dict[int, str]]:
'''Given a `path` to a csv index file loads one of the dataset splits. Paths in the index are assumed to be relative to the csv file. The file contains three columns: "filepaths", "labels" and "data set", path to the image, image label and dataset split respectively.
Arguments:
path: path to the csv index file
batch_size: size of batches in the dataset
image_size: size to resize the images to
shuffle: whether to shuffle the index. If False original index order is preserved
split: split to use. One of "train", "valid" or "test"
Returns:
The loaded dataset
A dictionary mapping class indices to class names'''
...
Альтернативно на pytorch реализовать аналогичную функцию, возвращающую torch.utils.data.DataLoader
.tf.keras.utils.PyDataset
. Классы должны повторять функционал функций, из предыдущих двух пунктов, включая возможность указать split. Альтернативно на pytorch реализовать интерфейс torch.utils.data.Dataset
, при этом __getitem__
должен возвращать один батч, вместо одного элемента датасета. Также, должна быть возможность итерироваться по этому объекту.Для каждой реализации необходимо продемонстрировать работу, проведя одну эпоху обучения любой модели на загруженном датасете.
Максимальное количество баллов за задачу — 10.
В качестве решения принимается файл с исходным кодом, например jupyter notebook. В систему требуется отправить ссылку на файл, размещённый в открытом доступе (Google Colab, Github, Google Drive и др.), указав среду разработки "Answer text
". После отправки решение необходимо сдать преподавателю лично.
Максимальный балл: | 10 | Ограничение времени: | 1 сек | |
Ограничение памяти: | 512 Мб |
Требуется решить задачу семантической сегментации на датасете.
def evaluate_model(path: str, model: 'Your Model Class') -> tuple[float, float]:
"""Evaluates model on the given dataset split (i.e. 'dataset/train'). Computes Dice Loss and IOU metric.
Arguments:
path: path to the dataset split with input and gorund truth images
model: model to evaluate
Returns:
Dice Loss and IOU metric values"""
...
def plot_predictions(path: str, model: 'Your Model Class', nrows: int = 2, ncols: int = 2):
"""Plots model predictions (and ground truths) on a number of images randomly selected from the given dataset split. The images are plotted on a grid with `nrows` rows and `ncols` columns.
Arguments:
path: path to the dataset split with input and gorund truth images
model: model to use for predictions
nrows: number of grid rows
ncols: number of grid columns"""
...
В качестве решения принимается файл с исходным кодом, например jupyter notebook. В систему требуется отправить ссылку на файл, размещённый в открытом доступе (Google Colab, Github, Google Drive и др.), указав среду разработки "Answer text
". После отправки решение необходимо сдать преподавателю лично.
Максимальное количество баллов за задачу — 10.