La distribuzione dei vari componenti avviene tramite pacchetti generati usando setuptools.
Ogni pacchetto deve essere chiamato come unchained-nomepacchetto
al fine di poterli facilmente identificare tra tutti i package Python installati.
Ogni rilascio di un pacchetto deve incrementare il numero di versione specificato nel file di configurazione di setuptools, seguendo le regole del versionamento semantico: la MAJOR RELEASE indica versioni non compatibili, la MINOR RELEASE versioni compatibili in avanti.
È disponibile un pacchetto di esempio contenente la documentazione tecnica per la creazione di un pacchetto su Gitea.
Ogni feature extractor viene richiamato con un dizionario relativo a tutte le query caricate; le chiavi indicano l'ID (e.g. il nome del contenuto), i valori rappresentano il path sul disco del contenuto.
Per ogni query viene restituito un array numpy rappresentante le feature estratte.
# Funzione relativa a un singolo feature extractor
def extract_features(file_paths: Mapping[ProbeID, Path]) -> Mapping[ProbeID, FeatureVector]:
pass
Ogni feature classifier viene richiamato con l'ID del classifier desiderato e un dizionario relativo a tutte le query caricate; le chiavi indicano l'ID (e.g. il nome del contenuto), i valori rappresentano le feature estratte dal corrispondente extractor.
Per ogni query viene restituita una stringa rappresentante la label della classe assegnata.
CLASSIFIER_IDS = ["classifier_a", "classifier_b"]
# Funzione relativa a un singolo feature classifier
def classify_features(classifier: ClassifierID, features: Mapping[ProbeID, FeatureVector]) -> Mapping[ProbeID, ClassName]:
pass
Il decision fuser viene richiamato con un dizionario relativo a tutte le query caricate; le chiavi indicano l'ID (e.g. il nome del contenuto), i valori rappresentano dei dizionari relativi a tutti i classifier chiamati -- le chiavi indicano l'ID del classifier, i valori rappresentano le decisioni prese da ogni classifier.
Per ogni query viene restituita una sequenza di dizionari, ognuno relativo a un insieme di classi; le chiavi indicano le label delle classi, i valori rappresentano la probabilità associata a ogni classe.
def fuse_decisions(decisions: Mapping[ProbeID, Mapping[ClassifierID, ClassName]]) -> Mapping[ProbeID, Sequence[Mapping[ClassName, Probability]]]:
pass
Il signature builder viene richiamato con un dizionario relativo a tutte le query caricate; le chiavi indicano l'ID (e.g. il nome del contenuto), i valori rappresentano le feature ottenute da ogni extractor.
Per ogni query viene restituito un numpy array rappresentante la signature del contenuto, ottenuta combinando le feature in ingresso.
def build_signatures(features: Mapping[ProbeID, Sequence[FeatureVector]]) -> Mapping[ProbeID, FeatureVector]:
pass
I moduli (estrattori, classificatori, ...) possono essere caricati dinamicamente tramite l'uso di importlib
.
La lista dei pacchetti per ogni funzione può essere salvata in un file di configurazione esterno.
Riportiamo di seguito un esempio per i feature extractors. Analogamente possono essere caricati i moduli per classificatori, fusori, ...
import importlib
# Nomi dei pacchetti da caricare per la specifica funzione (e.g. feature extractors)
FEATURE_EXTRACTORS_NAMES = ["package1", "package2"]
extractors = []
# Caricamento degli estrattori
for package_name in FEATURE_EXTRACTORS_NAMES:
extractors.append(importlib.import_module(package_name))
# Uso degli estrattori
for pkg in extractors:
results.append(pkg.extract_features(file_paths))
A preliminary interface is available at: dimostrazione-beta-frontend.mp4
tmux attach
source ~/.bashrc
cd /data/lesc/staff/shullani/Documents/Research/IAPP/RED/Dimostratore/unchained-nice-frontend
npm run serve
sudo su
sudo docker run --rm -t --name milvus_cpu -p 19530:19530 -p 19121:19121 -v /home/virgilio-admin/milvus/db:/var/lib/milvus/db -v /home/virgilio-admin/milvus/conf:/var/lib/milvus/conf -v /home/virgilio-admin/milvus/logs:/var/lib/milvus/logs -v /home/virgilio-admin/milvus/wal:/var/lib/milvus/wal milvusdb/milvus:1.1.1-cpu-d061621-330cc6
tmux attach
source ~/.bashrc
conda activate unchained-test
(unchained-test) cd /Prove/Shullani/Dimostratore-RED/unchained-backend-complete/unchained-backend
(unchained-test) python manage.py runserver 0.0.0.0:8000