{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "9B_sc-M_NlTZ" }, "source": [ "Шаг 1. Устанавливаем библиотеку для работы с загрузкой данных по ссылке" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "OsQErPaDDkmK", "outputId": "49149067-e8b9-42f8-acbe-15b2d80cd79e" }, "outputs": [], "source": [ "!pip install gdown\n" ] }, { "cell_type": "markdown", "metadata": { "id": "_F6Rmsu4NviH" }, "source": [ "Шаг 3. Скачиваем и распаковываем файлы,з ная ID" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "d19wjKXOLIyw", "outputId": "804d657b-dce7-4822-c631-b6a330801207" }, "outputs": [], "source": [ "import gdown\n", "\n", "# ID файла с Google Диска\n", "file_id = '1qVrpV7vmhIsUxFiH189LmAn0ALbAPrgS'\n", "#https://drive.google.com/file/d/1qVrpV7vmhIsUxFiH189LmAn0ALbAPrgS/view?usp=drive_link\n", "# Формируем URL для скачивания\n", "url = f'https://drive.google.com/uc?id={file_id}'\n", "\n", "# Скачиваем файл в директорию /content/\n", "file_path = '/content/my_file_name.tar'\n", "gdown.download(url, file_path, quiet=False)\n", "\n", "# Распаковываем архив .tar\n", "import tarfile\n", "with tarfile.open(file_path, 'r') as tar:\n", " tar.extractall(path='/content/')\n", " print(\"Архив распакован в директорию /content/\")\n" ] }, { "cell_type": "markdown", "metadata": { "id": "YNJiS-a6N4vg" }, "source": [ "Шаг 4. Просматриваем структуру и описание данных в JSON" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "_G-7skCHPJZ2", "outputId": "f0d8712c-1805-4a5d-c857-3c6b6659fc71" }, "outputs": [], "source": [ "import json\n", "\n", "# Путь к файлу JSON\n", "json_file_path = '/content/Task08_HepaticVessel/dataset.json'\n", "\n", "# Загружаем содержимое JSON файла\n", "with open(json_file_path, 'r') as f:\n", " dataset_info = json.load(f)\n", "\n", "# Просмотрим содержимое JSON\n", "print(json.dumps(dataset_info, indent=4)) # Красиво выводим содержимое\n" ] }, { "cell_type": "markdown", "metadata": { "id": "4GOfTVYdODLL" }, "source": [ "Шаг 5. Выводим для просмотра 20 случайных объектов с метками из обучающего набора." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "CTMaymbpP1IQ", "outputId": "e6ce5b6a-b949-4499-93e5-a7f8816bc888" }, "outputs": [], "source": [ "import random\n", "import nibabel as nib\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import os\n", "\n", "# Папки с изображениями и метками\n", "images_dir = '/content/Task08_HepaticVessel/imagesTr'\n", "labels_dir = '/content/Task08_HepaticVessel/labelsTr'\n", "\n", "# Фильтруем доступные файлы\n", "available_files = sorted([f for f in os.listdir(images_dir) if not f.startswith('._') and f.endswith('.nii.gz')])\n", "images = [os.path.join(images_dir, file) for file in available_files]\n", "labels = [os.path.join(labels_dir, file.replace('imagesTr', 'labelsTr')) for file in available_files]\n", "\n", "# Проверяем количество файлов\n", "print(f\"Обнаружено {len(images)} изображений и {len(labels)} меток.\")\n", "\n", "# Случайно выбираем 20 изображений\n", "random_indices = random.sample(range(len(images)), min(20, len(images)))\n", "\n", "# Цветовая карта для меток\n", "cmap = plt.cm.colors.ListedColormap(['black', 'green', 'red']) # Цвета: фон, сосуды, опухоли\n", "bounds = [0, 1, 2, 3]\n", "norm = plt.cm.colors.BoundaryNorm(bounds, cmap.N)\n", "\n", "# Визуализация изображений и меток\n", "for idx in random_indices:\n", " try:\n", " # Загружаем изображение и метку\n", " image = nib.load(images[idx]).get_fdata()\n", " label = nib.load(labels[idx]).get_fdata()\n", "\n", " # Поиск срезов с ненулевыми метками\n", " non_empty_slices = [z for z in range(label.shape[2]) if np.unique(label[:, :, z]).size > 1]\n", "\n", " if not non_empty_slices:\n", " print(f\"Все срезы в {images[idx]} содержат только фон.\")\n", " continue\n", "\n", " # Выбираем случайный срез с ненулевыми метками\n", " slice_index = random.choice(non_empty_slices)\n", " print(f\"Выбран срез {slice_index} для изображения {images[idx]}\")\n", "\n", " plt.figure(figsize=(10, 5))\n", "\n", " # Отображаем изображение\n", " plt.subplot(1, 2, 1)\n", " plt.imshow(image[:, :, slice_index], cmap='gray')\n", " plt.title(f'Изображение (Slice: {slice_index})')\n", " plt.axis('off')\n", "\n", " # Отображаем метки\n", " plt.subplot(1, 2, 2)\n", " plt.imshow(label[:, :, slice_index], cmap=cmap, norm=norm)\n", " plt.title('Метки')\n", " plt.axis('off')\n", "\n", " plt.show()\n", "\n", " except Exception as e:\n", " print(f\"Ошибка при обработке файла {images[idx]}: {e}\")\n" ] } ], "metadata": { "accelerator": "GPU", "colab": { "gpuType": "T4", "provenance": [] }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 0 }