{"id":14958104,"url":"https://github.com/matteocalvanico/multiclass-classification","last_synced_at":"2026-02-16T02:40:13.598Z","repository":{"id":254132497,"uuid":"845590629","full_name":"MatteoCalvanico/MultiClass-Classification","owner":"MatteoCalvanico","description":"Net and config file to create a ML model for classifying","archived":false,"fork":false,"pushed_at":"2025-01-28T14:40:12.000Z","size":21276,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-16T02:45:06.574Z","etag":null,"topics":["machine-learning","multiclass-classification","pytorch"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MatteoCalvanico.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-08-21T14:39:10.000Z","updated_at":"2025-01-28T14:40:16.000Z","dependencies_parsed_at":"2024-08-26T21:23:21.207Z","dependency_job_id":"098a262d-bc8c-4368-bbdd-3bcdf9f9225b","html_url":"https://github.com/MatteoCalvanico/MultiClass-Classification","commit_stats":{"total_commits":35,"total_committers":2,"mean_commits":17.5,"dds":0.02857142857142858,"last_synced_commit":"6066665232032abe396a0cbb98811c65be7c19f2"},"previous_names":["matteocalvanico/multiclass-classification"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MatteoCalvanico/MultiClass-Classification","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatteoCalvanico%2FMultiClass-Classification","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatteoCalvanico%2FMultiClass-Classification/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatteoCalvanico%2FMultiClass-Classification/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatteoCalvanico%2FMultiClass-Classification/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MatteoCalvanico","download_url":"https://codeload.github.com/MatteoCalvanico/MultiClass-Classification/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MatteoCalvanico%2FMultiClass-Classification/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279006211,"owners_count":26084062,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["machine-learning","multiclass-classification","pytorch"],"created_at":"2024-09-24T13:16:14.086Z","updated_at":"2025-10-11T04:53:41.540Z","avatar_url":"https://github.com/MatteoCalvanico.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# moltean/fruits MultiClass Classification\n\n## Start-up\nPer iniziare creare un nuovo enviroment di conda utilizzando i file all'interno della cartella *requirements*.\n\nSuccessivamente far partire lo script *datasetDownloader.py* per scaricare e unzippare, tramite le API Kaggle, i dati che verranno utilizzati dalla rete.\n\nInfine entrare nella cartella *multi_class_classification* e avviare *image_classifier.py*.\n\n\n## Context\nLo scopo ultimo della rete è di riuscire a classificare diversi tipi di frutta e dire a quale classe appartengono, le classi sono:\n- Apple:\n    - Braeburn;\n    - Crimson;\n    - Golden;\n    - Granny;\n    - Hit;\n    - Pink Lady;\n    - Red;\n    - ...\n\n- Cabbage:\n\n- Carot;\n\n- Cucumber;\n\n- Eggplant;\n\n- Pear;\n\n- Zucchini.\n\n## Architecture\n- Tipologia di rete: Classic CNN\n- Funzione di attivatione: Non lineare/ReLU (Rectified Linear Unit);\n- Funzione di loss: Cross-Entropy;\n- Ottimizzatore: SGD (Stochastic Gradient Descent).\n\nLa scelta della loss function di tipo *Cross-Entropy* è dovuta al fatto che è particolarmente adatta per problemi di classificazione multiclasse, penalizzando fortemente le previsioni errate con alta confidenza e integra già Softmax.\nPer l'ottimizzatore si è deciso di usare *SGD* perchè efficiente e robusto nel trovare buone soluzioni.\n\n## Analysis \u0026 Experiments\nOltre alla rete e i suoi file potete trovare un file Notebook chiamato *Dataset_Analysis.ipynb* che mostra alcune informazioni sul dataset utilizzato.\n\nPotete anche consultare i vari risultati ottenuti da diversi esperimenti come:\n- addestramento per diversi numeri di epoche.\n- addestramento con un diverso numero di layer.\n- addestramento con diversi valori di learning rate.\n  \nTutto nel file *Report.md*\n\n## Tensorboard\nUtilizzando, all'interno della directory contenente i vari file, il seguente comando:\n```sh\ntensorboard --logdir=out/runs --port=6006 --reload_interval=1\n```\nsarà possibile visualizzare:\n- l'andamento, durante il train, della *loss* per ciascun training step e la *average loss* su più step;\n- le **confusion matrix** di train e validation.\n\n## Structure\n```\nroot/\n├── multi_class_classification/\n│   ├── config/\n│   │   ├── config.json             # File di configurazione che permette di modificare vari parametri del modello o di utilità\n│   │   ├── config_schema.json      # Rappresenta come dovrebbe essere rappresentato il file: config.json\n│   ├── nets/\n│   │   ├── net.py                  # Base CNN\n│   │   ├── net_deep.py             # Deep CNN\n│   │   ├── net_wide.py             # Wide CNN\n│   ├── out/\n│   │   ├── ...                     # Modelli salvati e file per Tensorboard\n│   ├── analyzer.py                 # Controlla quali classi sono sbilanciate\n│   ├── balancer.py                 # Aggiunge immagini per compensare lo sblilanciamento delle classi trovate dall'analyzer.py\n│   ├── config_helper.py            # Controlla, grazie a config_schema.json, se il file di configurazione è ben impostato\n│   ├── custom_dataset_fruits.py    # Estrae le classi e assegna le label\n│   ├── image_classifier.py         # File principale, serve per far partire l'addestramento e tutte le altri classi utils\n│   ├── metrics.py                  # Calcola matrici di confusione, accuracy associata e altro ancora\n│   ├── net_runner.py               # Inizializza la rete, la allena e la controlla\n│   ├── visual_util.py              # Permette di scrivere in maniera più carina sulla console\n├── requirements/\n│   ├── ...                         # Files per il setup dell'ambiente CONDA\n├── Dataset_Analysis.ipynb          # Analisi sul dataset\n├── Report.md                       # Risultati ottenuti su vari test\n├── ...\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatteocalvanico%2Fmulticlass-classification","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatteocalvanico%2Fmulticlass-classification","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatteocalvanico%2Fmulticlass-classification/lists"}