Як додати функції зображень, що не належать до зображень, поруч із зображеннями бік як вхід CNN


14

Я треную конволюційну нейронну мережу для класифікації зображень за умовами туману (3 класи). Однак для кожного з приблизно 150 000 зображень у мене також є чотири метеорологічні змінні, які можуть допомогти передбачити класи зображень. Мені було цікаво, як я можу додати метеорологічні змінні (наприклад, температуру, швидкість вітру) до існуючої структури CNN, щоб це могло допомогти у класифікації.

Один із способів, про який я вже можу подумати, - це створити іншу (малу) нейронну мережу подачі поруч із CNN, а потім об'єднати виходи шарів CNN та прихованих шарів нейронної сітки зображення не один одному на щільному шарі.

Другий спосіб, про який я міг би придумати, - це просто зв’язати ці особливості з щільним шаром. Однак у цьому випадку змінні без зображення (я думаю) зможуть робити лише лінійні прогнози.

Чи є якісь інші (кращі) способи, щоб функції, що не містять зображення, могли бути включені до моделі? І який би був доцільний метод, враховуючи кількість даних, які я маю?

Ще одне питання, чи потрібно мені розморожувати звивисті шари під час тренувань із цими особливостями без зображення? Ці шари Resnet-18 (які були ініціалізовані як попередньо підготовлені на ImageNet) вже були налагоджені за допомогою зображень. Я здогадуюсь, що я повинен зберігати їх замороженими і лише розморожувати щільний шар, оскільки лише тут функції, що не містять зображення, вступають у "контакт" із зображеннями (не раніше в CNN). Якщо я помиляюся на це, будь ласка, скажіть так!


ви можете змоделювати розподіл з'єднань між додатковими характеристиками та зображеннями за допомогою такої генеративної моделі, як GAN, VAE. тоді ви можете отримати приховані змінні та використовувати їх з контрольованим критерієм
Фаді Бакура

Я сам в подібній ситуації. Я використовую стек зображень з неба за останні 15 хвилин, щоб спробувати передбачити вихід сонячних батарей близько до камери на 15 хвилин у майбутнє. Нещодавно я вирішив залучити до гри кілька погодних особливостей (по одному для кожного зображення, як у вашому випадку). Ваша перша пропозиція спрацювала набагато краще, ніж друга (безпосередньо додаючи не графічні функції до щільного шару). Якщо бути точним, друга пропозиція призвела до питань нормалізації. Я виявив , що з якоїсь - то причини , я ще не можу пояснити, то Batchnorm шар не зміг нормалізувати графічний FEA
Вігнеш Венугопал

@VigneshVenugopal, будь ласка, згадайте мене в коментарях, інакше я не можу отримувати повідомлення. Яке ваше запитання? :)
Медіа

Як я можу з'єднати швидкість, дросель і кут керма в свої мережі? Скажіть, будь ласка, про щільне, скільки щільних додати? Від чого це залежить?
Nasrinzaghari

Відповіді:


10

Моє рішення, як ваша перша рекомендація, але з незначними змінами.

  1. Створіть свої звивисті шари і укладіть їх до вирівняного шару. Ця мережа повинна живитись зображеннями.
  2. Розрівняйте карти активації
  3. Побудуйте повністю пов'язану мережу з потрібною кількістю нейронів і шарів.
  4. З'єднайте виходи сплющеного шару згорткової сітки і повністю з'єднаної сітки.
  5. додайте кілька щільних шарів і з'єднайте їх з останнім шаром, який представляє ваші класи.

Для цієї архітектури можна використовувати функції звичайних витрат.


У Кераса, чи можна це зробити Concatenate()шарами?
Лієво

Так. Ви повинні об'єднати їх, щоб поставити їх поруч.
Медіа

Чи потрібно використовувати Concatenate()або concatenate()шари? Я не можу визначити різницю
Лієво

Це залежить від способу створення вашої мережі. До речі, ви можете побачити список аргументів кожного. Вони відрізняються. Ви також можете поглянути тут .
Медіа
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.