Модульність та Transfer Learning 🔥PyTorch
Технології комп’ютерного зору
Примітка
Ви можете виконати це завдання використовуючи інші набори даних, але переконайтеся, що у вас є 3+ класи зображень (наприклад, кішки, собаки, птахи).
Модульність
- Перетворіть код для отримання даних у скрипт Python, наприклад
get_data.py.- Коли ви запускаєте скрипт за допомогою
python get_data.py, він повинен перевірити, чи дані вже існують, і пропустити завантаження, якщо це так. - Якщо завантаження даних пройшло успішно, ви повинні мати доступ до зображень
pizza_steak_sushiз каталогуdata.
- Коли ви запускаєте скрипт за допомогою
- Використовуйте модуль
argparsePython, щоб мати можливість надсилатиtrain.pyвласні значення гіперпараметрів для процедур навчання.- Додайте аргумент для використання:
- Каталог навчання/тестування
- Швидкість навчання
- Розмір пакета
- Кількість епох для навчання
- Кількість прихованих одиниць у моделі TinyVGG
- Збережіть значення за замовчуванням для кожного з вищезазначених аргументів такими, якими вони вже є.
- Наприклад, ви повинні мати можливість запустити щось подібне до наступного рядка, щоб навчити модель зі швидкістю навчання 0.003 і розміром батча 64 протягом 20 епох:
python train.py --learning_rate 0.003 --batch_size 64 --num_epochs 20. - Примітка: оскільки
train.pyвикористовує інші скрипти, такі якmodel_builder.py,utils.pyтаengine.py, ви повинні переконатися, що вони також доступні для використання.
- Додайте аргумент для використання:
- Створіть скрипт для прогнозування (наприклад,
predict.py) на цільовому зображенні, враховуючи шлях до файлу із збереженою моделлю.- Наприклад, ви повинні мати можливість запустити команду
python predict.py some_image.jpegі отримати прогноз навченої моделі PyTorch на зображенні та повернути його. - Можливо, вам також доведеться написати код для завантаження навченої моделі.
- Наприклад, ви повинні мати можливість запустити команду
Transfer Learning
- Зробіть прогнози на основі всього тестового набору даних і побудуйте матрицю невідповідності для результатів нашої моделі в порівнянні з істинними мітками.
- Отримайте “найгірші” прогнози на тестовому наборі даних і побудуйте графік 5 зображень з найвищою помилкою. Ви можете зробити це таким чином:
- Прогнозуйте на всьому тестовому наборі даних, зберігаючи мітки та прогнозовані ймовірності.
- Сортуйте прогнози за помилковими прогнозами, а потім за спаданням прогнозованих ймовірностей. Це дасть вам помилкові прогнози з найвищими ймовірностями прогнозування, іншими словами, “найбільш помилкові”.
- Намалюйте 5 “найбільш помилкових” зображень. Як ви думаєте, чому модель помилилася?
- Зробіть прогноз на основі власного зображення pizza/steak/sushi — як працює модель? Що станеться, якщо ви зробите прогноз на основі зображення, яке не є піцою/стейком/суші?
- Навчіть модель довше (10 епох має вистачити), що станеться з ефективністю?
- Навчіть модель з розділу 4 вище з більшою кількістю даних, скажімо, 20% зображень з Food101 зображень піци, стейка та суші.
- Спробуйте іншу модель з
torchvision.modelsна даних про піцу, стейк і суші. Як працює ця модель?- Вам доведеться змінити розмір шару класифікатора, щоб він відповідав нашій задачі.
- Можливо, ви захочете спробувати EfficientNet з більшим числом, ніж наше B0, наприклад
torchvision.models.efficientnet_b2()?