Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Завдання: Побудова CNN | Згорткові Нейронні Мережі
Основи Комп'ютерного Зору
course content

Зміст курсу

Основи Комп'ютерного Зору

Основи Комп'ютерного Зору

1. Вступ до Комп'ютерного Зору
2. Обробка Зображень з OpenCV
3. Згорткові Нейронні Мережі
4. Виявлення Об'єктів
5. Огляд Розширених Тем

book
Завдання: Побудова CNN

Згорткові нейронні мережі (CNN) широко використовуються для класифікації зображень завдяки здатності витягувати ієрархічні ознаки. У цьому завданні ви реалізуєте та навчите CNN, подібну до VGG, використовуючи TensorFlow і Keras на наборі даних CIFAR-10. Набір даних містить 60 000 зображень (32×32×3), що належать до 10 різних класів, включаючи літаки, автомобілі, птахів, котів тощо.

Цей проєкт проведе вас через завантаження набору даних, попередню обробку зображень, визначення моделі CNN, її навчання та оцінювання ефективності.

1. Попередня обробка даних для CNN

Перед навчанням CNN попередня обробка даних є важливим кроком для забезпечення кращої продуктивності та швидшої збіжності. Поширені методи попередньої обробки включають:

  • Нормалізація: цей метод передбачає масштабування значень пікселів зображень з діапазону від 0 до 255 до діапазону від 0 до 1. Зазвичай реалізується як x_train / 255.0, x_test / 255.0;

  • One-Hot кодування: мітки часто перетворюються у one-hot вектори для задач класифікації. Це зазвичай виконується за допомогою функції keras.utils.to_categorical, яка трансформує цілі числа міток (наприклад, 0, 1, 2 тощо) у one-hot вектор, такий як [1, 0, 0, 0] для задачі класифікації з 4 класами.

2. Побудова архітектури CNN

Архітектура CNN складається з декількох шарів, які виконують різні завдання для витягання ознак і здійснення прогнозування. Ви можете реалізувати основні шари CNN за допомогою:

Згортковий шар (Conv2D)

Примітка

Параметр input_shape потрібно вказувати лише у вхідному шарі.

Шар підвибірки (MaxPooling2D)

Шар вирівнювання

Щільний шар

Note

Останній щільний шар зазвичай має кількість одиниць, рівну кількості класів, і використовує softmax-функцію активації для виведення розподілу ймовірностей між класами.

3. Компіляція моделі

Після визначення архітектури модель необхідно скомпілювати. На цьому етапі вказуються функція втрат, оптимізатор і метрики, які будуть використовуватись для навчання моделі. У згорткових нейронних мережах зазвичай застосовують такі методи:

Оптимізатор (Adam)

Оптимізатор коригує ваги моделі для мінімізації функції втрат. Оптимізатор Adam популярний завдяки своїй ефективності та здатності адаптувати швидкість навчання під час тренування.

Функція втрат (Categorical Crossentropy)

Для багатокласової класифікації зазвичай використовується функція втрат categorical crossentropy. Це можна реалізувати так:

Метрики

Ефективність моделі відстежується за допомогою метрик для задач класифікації, таких як точність, precision, recall тощо. Їх можна визначити так:

Компіляція

4. Навчання моделі

Навчання згорткової нейронної мережі (CNN) передбачає подачу вхідних даних у мережу, обчислення функції втрат і оновлення ваг за допомогою зворотного поширення помилки. Процес навчання контролюється такими основними методами:

  • Навчання моделі: метод fit() використовується для навчання моделі. Цей метод приймає навчальні дані, кількість епох і розмір пакета. Також є опціональний параметр розділення для валідації, щоб оцінити продуктивність моделі на невідомих даних під час навчання:

  • Розмір пакета та кількість епох: розмір пакета визначає кількість зразків, які обробляються перед оновленням ваг моделі, а кількість епох означає, скільки разів увесь набір даних проходить через модель.

5. Оцінювання

Звіт класифікації

sklearn.metrics.classification_report() порівнює істинні та передбачені значення з тестового набору даних. Містить точність, повноту та F1-метрику для кожного класу. Однак методи потребують лише міток класів, тому не забудьте перетворити їх назад із векторів ([0,0,1,0] -> 2):

Оцінювання

Після навчання модель оцінюється на тестовому наборі даних для визначення її здатності до узагальнення. Оцінювання надає метрики, які були зазначені у методі .compile(). Оцінювання виконується за допомогою методу .evaluate():

Матриця плутанини

Для отримання додаткової інформації про роботу моделі можна візуалізувати матрицю плутанини, яка відображає істинно позитивні, хибно позитивні, істинно негативні та хибно негативні передбачення для кожного класу. Матриця плутанини може бути обчислена за допомогою TensorFlow:

Цю матрицю можна візуалізувати за допомогою теплових карт, щоб оцінити, наскільки добре модель працює для кожного класу:

1. Завантаження та попередня обробка датасету

  • Імпортувати датасет CIFAR-10 з Keras;

  • Нормалізувати значення пікселів до діапазону [0,1] для кращої збіжності;

  • Перетворити мітки класів у формат one-hot encoded для категоріальної класифікації.

2. Визначення моделі CNN

Реалізувати архітектуру CNN, подібну до VGG, з такими основними шарами: VGG like architecture

Згорткові шари:

  • Розмір ядра: 3×3;

  • Функція активації: ReLU;

  • Заповнення: 'same'.

Шари пулінгу:

  • Тип пулінгу: max pooling;

  • Розмір пулінгу: 2×2.

Шари Dropout (Запобігання перенавчанню шляхом випадкового вимкнення нейронів):

  • Рівень Dropout: 25%.

Шар Flatten – перетворення 2D-карт ознак у 1D-вектор для класифікації.

Повнозв'язні шари – щільні шари для фінальної класифікації з вихідним шаром relu або softmax.

Компіляція моделі з використанням:

  • Adam optimizer (для ефективного навчання);

  • Функція втрат Categorical cross-entropy (для багатокласової класифікації);

  • Метрика Accuracy metric для оцінки якості (класи збалансовані, можна додати інші метрики самостійно).

3. Навчання моделі

  • Вказати параметри epochs та batch_size для навчання (наприклад, epochs=20, batch_size=64);

  • Вказати параметр validation_split, щоб визначити відсоток тренувальних даних, які стануть валідаційними для відстеження якості моделі на невідомих зображеннях;

  • Зберегти історію навчання для візуалізації тенденцій точності та втрат.

4. Оцінка та візуалізація результатів

  • Протестувати модель на тестових даних CIFAR-10 та вивести точність;

  • Побудувати графік втрат на тренуванні та валідації для перевірки перенавчання;

  • Побудувати графік точності на тренуванні та валідації для контролю прогресу навчання.

COLAB CNN PROJECT

question-icon

Введіть частини ключа (Ви отримали їх після виконання проєкту)

1.  2.  3.  4.  5.
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 7

Запитати АІ

expand
ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

course content

Зміст курсу

Основи Комп'ютерного Зору

Основи Комп'ютерного Зору

1. Вступ до Комп'ютерного Зору
2. Обробка Зображень з OpenCV
3. Згорткові Нейронні Мережі
4. Виявлення Об'єктів
5. Огляд Розширених Тем

book
Завдання: Побудова CNN

Згорткові нейронні мережі (CNN) широко використовуються для класифікації зображень завдяки здатності витягувати ієрархічні ознаки. У цьому завданні ви реалізуєте та навчите CNN, подібну до VGG, використовуючи TensorFlow і Keras на наборі даних CIFAR-10. Набір даних містить 60 000 зображень (32×32×3), що належать до 10 різних класів, включаючи літаки, автомобілі, птахів, котів тощо.

Цей проєкт проведе вас через завантаження набору даних, попередню обробку зображень, визначення моделі CNN, її навчання та оцінювання ефективності.

1. Попередня обробка даних для CNN

Перед навчанням CNN попередня обробка даних є важливим кроком для забезпечення кращої продуктивності та швидшої збіжності. Поширені методи попередньої обробки включають:

  • Нормалізація: цей метод передбачає масштабування значень пікселів зображень з діапазону від 0 до 255 до діапазону від 0 до 1. Зазвичай реалізується як x_train / 255.0, x_test / 255.0;

  • One-Hot кодування: мітки часто перетворюються у one-hot вектори для задач класифікації. Це зазвичай виконується за допомогою функції keras.utils.to_categorical, яка трансформує цілі числа міток (наприклад, 0, 1, 2 тощо) у one-hot вектор, такий як [1, 0, 0, 0] для задачі класифікації з 4 класами.

2. Побудова архітектури CNN

Архітектура CNN складається з декількох шарів, які виконують різні завдання для витягання ознак і здійснення прогнозування. Ви можете реалізувати основні шари CNN за допомогою:

Згортковий шар (Conv2D)

Примітка

Параметр input_shape потрібно вказувати лише у вхідному шарі.

Шар підвибірки (MaxPooling2D)

Шар вирівнювання

Щільний шар

Note

Останній щільний шар зазвичай має кількість одиниць, рівну кількості класів, і використовує softmax-функцію активації для виведення розподілу ймовірностей між класами.

3. Компіляція моделі

Після визначення архітектури модель необхідно скомпілювати. На цьому етапі вказуються функція втрат, оптимізатор і метрики, які будуть використовуватись для навчання моделі. У згорткових нейронних мережах зазвичай застосовують такі методи:

Оптимізатор (Adam)

Оптимізатор коригує ваги моделі для мінімізації функції втрат. Оптимізатор Adam популярний завдяки своїй ефективності та здатності адаптувати швидкість навчання під час тренування.

Функція втрат (Categorical Crossentropy)

Для багатокласової класифікації зазвичай використовується функція втрат categorical crossentropy. Це можна реалізувати так:

Метрики

Ефективність моделі відстежується за допомогою метрик для задач класифікації, таких як точність, precision, recall тощо. Їх можна визначити так:

Компіляція

4. Навчання моделі

Навчання згорткової нейронної мережі (CNN) передбачає подачу вхідних даних у мережу, обчислення функції втрат і оновлення ваг за допомогою зворотного поширення помилки. Процес навчання контролюється такими основними методами:

  • Навчання моделі: метод fit() використовується для навчання моделі. Цей метод приймає навчальні дані, кількість епох і розмір пакета. Також є опціональний параметр розділення для валідації, щоб оцінити продуктивність моделі на невідомих даних під час навчання:

  • Розмір пакета та кількість епох: розмір пакета визначає кількість зразків, які обробляються перед оновленням ваг моделі, а кількість епох означає, скільки разів увесь набір даних проходить через модель.

5. Оцінювання

Звіт класифікації

sklearn.metrics.classification_report() порівнює істинні та передбачені значення з тестового набору даних. Містить точність, повноту та F1-метрику для кожного класу. Однак методи потребують лише міток класів, тому не забудьте перетворити їх назад із векторів ([0,0,1,0] -> 2):

Оцінювання

Після навчання модель оцінюється на тестовому наборі даних для визначення її здатності до узагальнення. Оцінювання надає метрики, які були зазначені у методі .compile(). Оцінювання виконується за допомогою методу .evaluate():

Матриця плутанини

Для отримання додаткової інформації про роботу моделі можна візуалізувати матрицю плутанини, яка відображає істинно позитивні, хибно позитивні, істинно негативні та хибно негативні передбачення для кожного класу. Матриця плутанини може бути обчислена за допомогою TensorFlow:

Цю матрицю можна візуалізувати за допомогою теплових карт, щоб оцінити, наскільки добре модель працює для кожного класу:

1. Завантаження та попередня обробка датасету

  • Імпортувати датасет CIFAR-10 з Keras;

  • Нормалізувати значення пікселів до діапазону [0,1] для кращої збіжності;

  • Перетворити мітки класів у формат one-hot encoded для категоріальної класифікації.

2. Визначення моделі CNN

Реалізувати архітектуру CNN, подібну до VGG, з такими основними шарами: VGG like architecture

Згорткові шари:

  • Розмір ядра: 3×3;

  • Функція активації: ReLU;

  • Заповнення: 'same'.

Шари пулінгу:

  • Тип пулінгу: max pooling;

  • Розмір пулінгу: 2×2.

Шари Dropout (Запобігання перенавчанню шляхом випадкового вимкнення нейронів):

  • Рівень Dropout: 25%.

Шар Flatten – перетворення 2D-карт ознак у 1D-вектор для класифікації.

Повнозв'язні шари – щільні шари для фінальної класифікації з вихідним шаром relu або softmax.

Компіляція моделі з використанням:

  • Adam optimizer (для ефективного навчання);

  • Функція втрат Categorical cross-entropy (для багатокласової класифікації);

  • Метрика Accuracy metric для оцінки якості (класи збалансовані, можна додати інші метрики самостійно).

3. Навчання моделі

  • Вказати параметри epochs та batch_size для навчання (наприклад, epochs=20, batch_size=64);

  • Вказати параметр validation_split, щоб визначити відсоток тренувальних даних, які стануть валідаційними для відстеження якості моделі на невідомих зображеннях;

  • Зберегти історію навчання для візуалізації тенденцій точності та втрат.

4. Оцінка та візуалізація результатів

  • Протестувати модель на тестових даних CIFAR-10 та вивести точність;

  • Побудувати графік втрат на тренуванні та валідації для перевірки перенавчання;

  • Побудувати графік точності на тренуванні та валідації для контролю прогресу навчання.

COLAB CNN PROJECT

question-icon

Введіть частини ключа (Ви отримали їх після виконання проєкту)

1.  2.  3.  4.  5.
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 7
Ми дуже хвилюємося, що щось пішло не так. Що трапилося?
some-alt