{"id":28859320,"url":"https://github.com/vikktor93/tarea4-introduccion-vision-computacional","last_synced_at":"2026-04-18T00:03:41.041Z","repository":{"id":298578543,"uuid":"999913725","full_name":"Vikktor93/Tarea4-Introduccion-Vision-Computacional","owner":"Vikktor93","description":"Comparative study of CNN, MobileNetV2 Transfer Learning, and SVM for tomato leaf disease classification using the PlantVillage dataset.","archived":false,"fork":false,"pushed_at":"2025-06-12T00:14:16.000Z","size":4503,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-22T10:35:32.920Z","etag":null,"topics":["cnn-classification","computer-vision","keras","mobilenetv2","python3","tensorflow","transfer-learning"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Vikktor93.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2025-06-11T01:49:12.000Z","updated_at":"2025-06-12T00:16:58.000Z","dependencies_parsed_at":"2025-07-06T19:48:42.017Z","dependency_job_id":null,"html_url":"https://github.com/Vikktor93/Tarea4-Introduccion-Vision-Computacional","commit_stats":null,"previous_names":["vikktor93/tarea4-introduccion-vision-computacional"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Vikktor93/Tarea4-Introduccion-Vision-Computacional","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vikktor93%2FTarea4-Introduccion-Vision-Computacional","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vikktor93%2FTarea4-Introduccion-Vision-Computacional/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vikktor93%2FTarea4-Introduccion-Vision-Computacional/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vikktor93%2FTarea4-Introduccion-Vision-Computacional/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Vikktor93","download_url":"https://codeload.github.com/Vikktor93/Tarea4-Introduccion-Vision-Computacional/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vikktor93%2FTarea4-Introduccion-Vision-Computacional/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31950891,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T17:29:20.459Z","status":"ssl_error","status_checked_at":"2026-04-17T17:28:47.801Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["cnn-classification","computer-vision","keras","mobilenetv2","python3","tensorflow","transfer-learning"],"created_at":"2025-06-20T03:13:46.571Z","updated_at":"2026-04-18T00:03:41.024Z","avatar_url":"https://github.com/Vikktor93.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"left\"\u003e\n   \u003cimg src=\"https://img.shields.io/badge/Status-Terminado-green?style=plastic\"\u003e\n   \u003cimg src=\"https://img.shields.io/badge/Python-3776AB?style=plastic\u0026logo=python\u0026logoColor=white\"/\u003e\n   \u003cimg src=\"https://img.shields.io/badge/TensorFlow-%23FF6F00.svg?style=plastic\u0026logo=TensorFlow\u0026logoColor=white\"/\u003e\n   \u003cimg src=\"https://img.shields.io/badge/Jupyter-%23e58f1a.svg?style=plastic\u0026logo=Jupyter\u0026logoColor=white\"/\u003e\n\n\u003cimg src=\"./assets/banner-computer-vision4.png\"/\u003e\n\n## 🌿 **Tarea 4: Comparativa de algoritmos para clasificación de hojas de tomate**\n\nEste repositorio contiene el desarrollo de la **Tarea 4** de la asignatura *Visión Computacional*, en la que se mejora y compara el sistema de clasificación de hojas de tomate (sanas vs. Early Blight) implementado en la Tarea 2. Aquí se han añadido dos nuevas estrategias: transferencia de aprendizaje con MobileNetV2 y un clasificador SVM sobre features extraídas de la CNN base.\n\n### 🧪 **Descripción del trabajo**\n\n- **Dataset:**  \n  PlantVillage (2 clases: `Tomato_Early-blight`, `Tomato_Healthy`).  \n- **Imágenes utilizadas:**  \n  200 imágenes preprocesadas (100 por clase), tamaño 128×128 px, RGB.  \n- **Modelos implementados:**  \n  1. **CNN base:** red convolucional desde cero con 3 bloques Conv2D+BatchNorm+ReLU+MaxPooling, seguido de Flatten, Dense(256) y Dropout(0.5).  \n  2. **Transfer Learning (MobileNetV2):** backbone preentrenado en ImageNet, GlobalAveragePooling, Dense(128)+Dropout(0.5) y softmax.  \n  3. **SVM sobre features:** extracción de embeddings (Flatten) de la CNN base y entrenamiento de un SVM (kernel RBF).  \n- **Preprocesamiento y Data Augmentation:**  \n  - Reescalado de píxeles a [0,1]  \n  - Rotaciones (±30°), desplazamientos (±10%), shear (±10%), zoom (±20%), flip horizontal  \n- **Evaluación:**  \n  - **Métricas:** Accuracy, Precision, Recall, F1-score (macro)\n  - **Matrices de confusión** (absoluta y normalizada)  \n  - **Tiempos medidos:**  \n    - Entrenamiento (segundos)  \n    - Inferencia completa (segundos)  \n\n\n### 📊 **Resultados destacados**\n\n| Modelo                   | Accuracy | Precision (macro) | Recall (macro) | F1-score (macro) | Entrenamiento (s) | Inferencia (s) |\n|--------------------------|:--------:|:-----------------:|:--------------:|:----------------:|:-----------------:|:--------------:|\n| **CNN base**             | 50.00 %  | N/A               | N/A            | N/A              | 162.79            | 0.7473         |\n| **Transfer Learning**    | 97.37 %  | N/A               | N/A            | N/A              | 92.57             | 1.9241         |\n| **SVM sobre features**   | 50.00 %  | 25.00 %           | 50.00 %        | 33.33 %          | N/A               | N/A            |\n\n\u003e **Nota:**  \n\u003e - Los valores de “N/A” indican métricas que no se calcularon directamente en esta ejecución.  \n\u003e - Accuracy y tiempos provienen de los historiales de entrenamiento e inferencia mostrados en el notebook.\n\n\n### 📈 **Visualizaciones incluidas**\n\n- Curvas de entrenamiento y validación (loss \u0026 accuracy) para cada modelo  \n- Matrices de confusión absoluta y normalizada  \n- Histogramas de probabilidades predichas por clase  \n- Ejemplos de imágenes clasificadas (aciertos y errores)  \n\n### ⚠️ **Requisitos**\n\n- Python 3.10+  \n- TensorFlow / Keras  \n- scikit-learn  \n- matplotlib  \n- pandas  \n- Jupyter Notebook  \n\n\n## 📄 Licencia\n\nEste trabajo es de carácter académico y su uso está restringido exclusivamente para fines educativos.\n\nEl dataset utilizado proviene del [PlantVillage Dataset](https://github.com/spMohanty/PlantVillage-Dataset) (Hughes \u0026 Salathé, 2015).  \nPor favor cite el artículo correspondiente si reutiliza este dataset:\n\n\u003e Hughes, D. P., \u0026 Salathé, M. (2015). An open access repository of images on plant health to enable the development of mobile disease diagnostics. *arXiv preprint arXiv:1511.08060*.  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvikktor93%2Ftarea4-introduccion-vision-computacional","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvikktor93%2Ftarea4-introduccion-vision-computacional","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvikktor93%2Ftarea4-introduccion-vision-computacional/lists"}