Autori:
(1) Daniele Malitesta, Politecnico di Bari, Taliansko a [email protected] so zodpovedajúcimi autormi: Daniele Malitesta ([email protected]) a Giuseppe Gassi ([email protected]);
(2) Giuseppe Gassi, Politecnico di Bari, Taliansko a [email protected] so zodpovedajúcimi autormi: Daniele Malitesta ([email protected]) a Giuseppe Gassi ([email protected]);
(3) Claudio Pomo, Politecnico di Bari, Taliansko a [email protected];
(4) Tommaso Di Noia, Politecnico di Bari, Taliansko a [email protected].
2 Architektúra a 2.1 Súbor údajov
5 Ukážky a 5.1 Demo 1: funkcie vizuálnych + textových položiek
5.2 Demo 2: funkcie zvuku + textových položiek
5.3 Demo 3: funkcie textových položiek/interakcií 6
Záver a budúca práca, poďakovanie a referencie
Architektúra Ducho je postavená na troch hlavných moduloch, menovite Dataset, Extractor a Runner, kde prvé dva moduly poskytujú rôzne implementácie v závislosti od konkrétnej modality (tj zvukovej, vizuálnej, textovej), ktorá sa berie do úvahy. Medzi ďalšími pomocnými komponentmi pripomíname aj Konfiguráciu. Architektúra je navrhnutá tak, aby bola vysoko modulárna, s možnosťou integrácie nových modulov alebo prispôsobením existujúcich modulov. V nasledujúcom texte sa ponoríme hlboko do každého načrtnutého modulu/komponentu.
Modul Dataset riadi načítanie a spracovanie vstupných údajov poskytnutých používateľom. Tento modul, ktorý vychádza zo všeobecnej zdieľanej schémy pre všetky dostupné modality, poskytuje tri samostatné implementácie: zvukové, vizuálne a textové množiny údajov. Ako bežný prístup v literatúre, zvukové a vizuálne množiny údajov vyžadujú cestu k priečinku, z ktorého sa načítavajú obrazové/audio súbory, zatiaľ čo množina textových údajov funguje prostredníctvom súboru tsv, ktorý mapuje všetky textové charakteristiky na vstupy.
Je pozoruhodné a na rozdiel od iných existujúcich riešení môže Ducho spracovať každú modalitu dvoma spôsobmi, v závislosti od toho, či konkrétna modalita opisuje buď položky (napr. popisy produktov), alebo interakcie medzi používateľmi a položkami (napr. recenzie [1]). Konkrétne, zatiaľ čo položky sú mapované na svoje jedinečné ID (extrahované z názvu súboru alebo súboru tsv), interakcie sú mapované na pár používateľ-položka (extrahovaný zo súboru tsv), na ktorý odkazujú. Aj keď sa fázy predspracovania a extrakcie nemenia na úrovni položiek a interakcií (pozri neskôr), veríme, že táto schéma môže dokonale vyhovovať novým multimodálnym odporúčacím systémom s modalitami popisujúcimi každý typ vstupného zdroja (dokonca aj používateľov ).
Ďalšou dôležitou úlohou modulu Dataset je zvládnuť fázu predspracovania zadávania údajov. V závislosti od konkrétnej modality ponúka Ducho možnosť:
• audio: načítajte vstupný zvuk extrakciou tvaru vlny a vzorkovacej frekvencie a znova ho navzorkujte podľa vzorkovacej frekvencie, na ktorej bol trénovaný predtrénovaný model;
• vizuálne: konvertujte vstupné obrázky do RGB a zmeňte ich veľkosť/normalizujte ich tak, aby boli v súlade s vopred pripraveným modelom extrakcie;
• textové: (voliteľne) vyčistite vstupné texty, aby ste odstránili alebo upravili hlučné textové vzory, ako sú interpunkcia a číslice
Po extrakčnej fáze (pozri neskôr) má modul Dataset konečne na starosti ukladanie vygenerovaných multimodálnych prvkov do formátu numpy poľa podľa schémy pomenovania súborov z predchádzajúceho mapovania.
Modul Extractor vytvára extrakčný model z predtrénovanej siete a pracuje na každej načítanej/predspracovanej vstupnej vzorke, aby extrahoval jej multimodálne vlastnosti. Podobne ako modul množiny údajov, extraktor poskytuje tri rôzne implementácie pre každú modalitu, konkrétne zvukové, vizuálne a textové extraktory. Ducho vystavuje širokú škálu vopred pripravených modelov z troch hlavných backendov: TensorFlow, PyTorch a Transformers. V súčasnosti sú k dispozícii nasledujúce kombinácie modality/backendu:
• zvuk: PyTorch (Torchaudio) a Transformers;
• vizuálne: Tensorflow a PyTorch (Torchvision);
• textové: Transformers (a SentenceTransformers).
Na vykonanie extrakcie prvkov Ducho berie ako vstup (zoznam) extrakčných vrstiev pre akýkoľvek predtrénovaný model. Keďže každý backend spracováva extrakciu skrytých vrstiev v rámci siete odlišne, postupujeme podľa pokynov uvedených v oficiálnych dokumentáciách za predpokladu, že používateľ bude postupovať podľa rovnakej schémy pomenovania/indexovania vrstiev a vopred bude poznať štruktúru vybraného predtrénovaného modelu. Zainteresovaný čitateľ si môže prečítať README[2] v priečinku config/ na GitHub, kde nájdete vyčerpávajúce vysvetlenie, ako nastaviť extrakčnú vrstvu v každom nastavení modality/backendu.
Nakoniec, pre textový prípad môže užívateľ špecifikovať aj špecifickú úlohu, na ktorú by mal byť predtrénovaný model trénovaný (napr. analýza sentimentu), keďže každá vopred trénovaná sieť môže mať rôzne verzie v závislosti od tréningovej stratégie.
Modul Runner je orchestrátor Ducho, ktorého účelom je vytvárať inštancie, volať a spravovať všetky opísané moduly. Pomocou metód API môže tento modul spustiť kompletný extrakčný kanál (pozri neskôr) jednej jedinej modality alebo všetkých modalít zahrnutých súčasne
Modul Runner je pohodlne prispôsobený pomocou pomocného konfiguračného komponentu, ktorý ukladá a odhaľuje všetky parametre na konfiguráciu extrakčného potrubia. Aj keď je pre používateľa už sprístupnená predvolená konfigurácia, Ducho umožňuje prepísať niektoré (alebo všetky) jej parametre prostredníctvom externého konfiguračného súboru (vo formáte YAML) a/alebo párov kľúč-hodnota ako vstupných argumentov pri spúšťaní skriptov z príkazového riadku. Ešte raz odporúčame, aby si čitatelia prečítali súbor README v priečinku config/ na GitHub, aby pochopili všeobecnú schému konfiguračného súboru YAML.
Tento dokument je dostupný na arxiv pod licenciou CC BY 4.0 DEED.