upload the project

This commit is contained in:
2026-06-21 21:24:47 +02:00
parent 8cf419a907
commit d94790cbe5
113 changed files with 1327 additions and 2 deletions
+7
View File
@@ -1,3 +1,10 @@
# nix artifacts
result
# images are not pushed to github for privacy reasons, but we do keep the empty directory
Images/*
!Images/.gitkeep
# Byte-compiled / optimized / DLL files # Byte-compiled / optimized / DLL files
__pycache__/ __pycache__/
*.py[codz] *.py[codz]
View File
+124 -2
View File
@@ -1,2 +1,124 @@
# Hairloss-report # Hairloss report
Uses multiple ML models to . This project only generates the data, the graphs and a galery view of the reports. The report must be written by the user.
Initially intended as a joke, but I decided to publish it in case someone wants to reuse it later.
Note : It will only produce the graphs of the receding hairline and a gallery view of each pictures with its relevent score. You will need to write the report yourself.
This project was written in a rush (less than two days before leaving to vacation) and, as such, uses extensively AI (ChatGPT 5.5 free tier). I might (or might not) come back later to polish it a bit.
# Preparation
### Models
You will need to have pulled the models (this will take multiple gigas of storage) :
```
ollama pull llava:7b
ollama pull ministral-3:8b
ollama pull gemma4:12b
ollama pull qwen3-vl:8b
```
This report's strategy is to use multiple models and to repeat multiple time averaging the results. The models used are :
* llava:7b (10x repetitions)
* ministral-3:8b (10x repetitions)
* gemma4:12b (3x repetitions)
* qwen3-vl:8b (1x repetitions)
If you want to change the models or the number of repetitions, a quick run of `rg -C3 {your model here}` should show you where are the changes needed.
### Images
For privacy reason, this repo does not contain the initial dataset of images.
Your dataset needs to :
* focus on thethe person's head. Crop pictures if needed.
* follow this naming logic : `yyyy-mm-dd-nna` where `yyyy-mm-dd` follows [iso 8601](https://en.wikipedia.org/wiki/ISO_8601), `nn` is a number between 00 and 99 (used in cases there are multiple images for the same day and `a` is the angle of the photo (`t` for top, `l` for lateral and `f` for face). If you don't know the exact date, estimate it. There are two helper script in this repo (just fix the shebang and directory paths). `rename.sh` renames all the files (this could break stuff, be careful) into their last modified date. You just need to crop them and add the number and angles. `checkNaming.sh` checks if the files are correctly named (works on `.png` for other format adapt the regex).
* You should try to use the best quality pictures.
### Graphs
You can browse the repo for an example of the graphs and the tex file for the gallery.
One feature of this project is that you can focus on the period after one stres--inducing event (difficult work, sickness, annoying person, ...) that you hypothesize it will impact the rate of hairloss.
You can change this date by running `sed -i "s|2023-09-11|{Put here your date}|g" ./hairloss/main.py`
If you have multiple such events, you will need to manually modify the code in `./hairloss/main.py`.
# Usage
## On [NixOS](https://nixos.org/)
Clear the examples graphs : `rm *.pdf`
You must set the path to the images directory as the nix store doesn't work with relative paths.
```
sed -i "s|PathToYourLocalGitClone/Images|$(pwd)/Images|g" flake.nix
```
Generate the values. This might take some time as it uses multiple ML models and repeats the prompt for less noise. For comparison, this took a few hours on my RTX3070ti.
Note : if you want to run on a GPU you must replace the `ollama` package by a [gpu-specific one](https://search.nixos.org/packages?type=packages&query=ollama) by running `sed -i "s|ollama|{Put here your ollama variant}|g" flake.nix`
```
nix run . -- --generate_with_llava
nix run . -- --generate_with_gemma
nix run . -- --generate_with_qwen
nix run . -- --generate_with_ministral
```
Note : you can stop at every point. It will resume its calculations at the last image.
Compute the averages :
```
nix run . -- --generate_averages
```
Create the gallery view :
```
nix run . -- --generate_gallery
nix develop .
pdflatex ./gallery.tex -interaction=nonstopmode
```
You now have all the files in pdf. You can create your own report !
## On other systems
This might or might not work as I did everything on NixOS.
Clear the examples graphs : `rm *.pdf`
Install dependencies :
* ollama
* Python and pip
* your favorite LaTeX distribution
Install the project :
```
pip install .
```
Generate the values. This might take some time as it uses multiple ML models and repeats the prompt for a more accurate count. For compairon, this took a few hours on my RTX3070ti.
```
hairloss --generate_with_llava
hairloss --generate_with_gemma
hairloss --generate_with_qwen
hairloss --generate_with_ministral
```
Note : you can stop at every point. It will resume it's calculations at the last image.
Run the averages :
```
hairloss --generate_averages
```
Create the gallery view :
```
hairloss --generate_gallery
pdflatex ./gallery.tex -interaction=nonstopmode
```
You now have all the files in pdf. You can create your own report !
Binary file not shown.
+13
View File
@@ -0,0 +1,13 @@
#!/etc/profiles/per-user/tomasr/bin/zsh bash
DIR="./Images"
for file in "$DIR"/*.png; do
[ -e "$file" ] || continue
name=$(basename "$file")
if [[ ! "$name" =~ ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])-[0-9]{2}[flt]\.png$ ]]; then
echo "$name"
fi
done
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Generated
+61
View File
@@ -0,0 +1,61 @@
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1781577229,
"narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "567a49d1913ce81ac6e9582e3553dd90a955875f",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}
+48
View File
@@ -0,0 +1,48 @@
{
description = "Tracks hairloss over time";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils}:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; config.allowUnfree = true; };
in {
packages.hairloss = pkgs.python314Packages.buildPythonApplication {
pname = "hairloss";
version = "0.1";
src = ./.;
pyproject = true;
build-system = with pkgs.python314Packages; [ setuptools ];
dependencies = with pkgs; [
python314Packages.tinydb
python314Packages.requests
python314Packages.matplotlib
python314Packages.numpy
python314Packages.scipy
ollama
];
postInstall = ''
wrapProgram $out/bin/hairloss \
--set HAIRLOSS_IMAGES "PathToYourLocalGitClone/Images"
'';
mainProgram = "hairloss.py";
};
packages.default = self.packages.${system}.hairloss;
devShells = {
default = pkgs.mkShell {
packages = with pkgs; [
python314Packages.tinydb
python314Packages.requests
texliveMedium
];
};
};
});
}
+503
View File
@@ -0,0 +1,503 @@
\documentclass[a4paper]{article}
\usepackage[a4paper,margin=1cm]{geometry}
\usepackage{graphicx}
\usepackage{array}
\usepackage{longtable}
\usepackage{float}
\usepackage{grffile}
\usepackage[T1]{fontenc}
\pagestyle{empty}
\setlength{\parindent}{0pt}
\begin{document}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/1983-04-01-00t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/1991-01-01-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2002-01-01-00f.png}\\[2mm]
% 1983-04-01-00t.png, 1991-01-01-00l.png, 2002-01-01-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 1983-04-01-00t.png} \\ llava:7b: 0.4800 \\ llava:7bWithoutUnsure: 0.3000 \\ gemma4:12b: 0.8333 \\ gemma4:12bWithoutUnsure: 0.8333 \\ ministral-3:8b: 0.7000 \\ ministral-3:8bWithoutUnsure: 0.7000 \\ qwen3-vl:8b: 0.7000 \\ qwen3-vl:8bWithoutUnsure: 0.7000 \\ llava:7bNormalized: 0.4000 \\ gemma4:12bNormalized: 1.0000 \\ qwen3-vl:8bNormalized: 1.0000 \\ ministral-3:8bNormalized: 0.9615 \\ average: 0.6333 \\ averageNormalized: 0.8404 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 1991-01-01-00l.png} \\ llava:7b: 0.4600 \\ llava:7bWithoutUnsure: 0.3667 \\ gemma4:12b: 0.1000 \\ gemma4:12bWithoutUnsure: 0.1000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.4889 \\ gemma4:12bNormalized: 0.1200 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2667 \\ averageNormalized: 0.3074 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2002-01-01-00f.png} \\ llava:7b: 0.4050 \\ llava:7bWithoutUnsure: 0.1833 \\ gemma4:12b: 0.2667 \\ gemma4:12bWithoutUnsure: 0.2667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.2444 \\ gemma4:12bNormalized: 0.3200 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2375 \\ averageNormalized: 0.2606 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2002-01-01-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2002-01-01-01f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2002-01-01-01l.png}\\[2mm]
% 2002-01-01-00l.png, 2002-01-01-01f.png, 2002-01-01-01l.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2002-01-01-00l.png} \\ llava:7b: 0.4500 \\ llava:7bWithoutUnsure: 0.2500 \\ gemma4:12b: 0.1667 \\ gemma4:12bWithoutUnsure: 0.1667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.3333 \\ gemma4:12bNormalized: 0.2000 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2542 \\ averageNormalized: 0.2886 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2002-01-01-01f.png} \\ llava:7b: 0.4900 \\ llava:7bWithoutUnsure: 0.4000 \\ gemma4:12b: 0.1667 \\ gemma4:12bWithoutUnsure: 0.1667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.5333 \\ gemma4:12bNormalized: 0.2000 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2917 \\ averageNormalized: 0.3386 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2002-01-01-01l.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.3333 \\ gemma4:12bWithoutUnsure: 0.3333 \\ ministral-3:8b: 0.5400 \\ ministral-3:8bWithoutUnsure: 0.5400 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.4000 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.6538 \\ average: 0.4183 \\ averageNormalized: 0.5373 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2002-01-01-02f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2002-01-01-02l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2002-01-01-03f.png}\\[2mm]
% 2002-01-01-02f.png, 2002-01-01-02l.png, 2002-01-01-03f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2002-01-01-02f.png} \\ llava:7b: 0.4970 \\ llava:7bWithoutUnsure: 0.4900 \\ gemma4:12b: 0.1667 \\ gemma4:12bWithoutUnsure: 0.1667 \\ ministral-3:8b: 0.2900 \\ ministral-3:8bWithoutUnsure: 0.2900 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.6533 \\ gemma4:12bNormalized: 0.2000 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1731 \\ average: 0.2867 \\ averageNormalized: 0.3280 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2002-01-01-02l.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.2000 \\ gemma4:12bWithoutUnsure: 0.2000 \\ ministral-3:8b: 0.2800 \\ ministral-3:8bWithoutUnsure: 0.2800 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.2400 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1538 \\ average: 0.2950 \\ averageNormalized: 0.3366 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2002-01-01-03f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.2000 \\ gemma4:12bWithoutUnsure: 0.2000 \\ ministral-3:8b: 0.2600 \\ ministral-3:8bWithoutUnsure: 0.2600 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.2400 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1154 \\ average: 0.2900 \\ averageNormalized: 0.3269 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2002-01-01-03l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2002-01-01-04f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2002-01-01-04l.png}\\[2mm]
% 2002-01-01-03l.png, 2002-01-01-04f.png, 2002-01-01-04l.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2002-01-01-03l.png} \\ llava:7b: 0.5150 \\ llava:7bWithoutUnsure: 0.5750 \\ gemma4:12b: 0.1333 \\ gemma4:12bWithoutUnsure: 0.1333 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.7667 \\ gemma4:12bNormalized: 0.1600 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3021 \\ averageNormalized: 0.3512 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2002-01-01-04f.png} \\ llava:7b: 0.5500 \\ llava:7bWithoutUnsure: 0.6667 \\ gemma4:12b: 0.2000 \\ gemma4:12bWithoutUnsure: 0.2000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.8889 \\ gemma4:12bNormalized: 0.2400 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3667 \\ averageNormalized: 0.4374 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2002-01-01-04l.png} \\ llava:7b: 0.4800 \\ llava:7bWithoutUnsure: 0.3000 \\ gemma4:12b: 0.1500 \\ gemma4:12bWithoutUnsure: 0.1500 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.4000 \\ gemma4:12bNormalized: 0.1800 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2375 \\ averageNormalized: 0.2645 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2002-01-01-05f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2002-01-01-05l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2002-01-01-06f.png}\\[2mm]
% 2002-01-01-05f.png, 2002-01-01-05l.png, 2002-01-01-06f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2002-01-01-05f.png} \\ llava:7b: 0.5250 \\ llava:7bWithoutUnsure: 0.7500 \\ gemma4:12b: 0.5667 \\ gemma4:12bWithoutUnsure: 0.5667 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 1.0000 \\ gemma4:12bNormalized: 0.6800 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.4542 \\ averageNormalized: 0.5271 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2002-01-01-05l.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.1667 \\ gemma4:12bWithoutUnsure: 0.1667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.2000 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2917 \\ averageNormalized: 0.3362 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2002-01-01-06f.png} \\ llava:7b: 0.4550 \\ llava:7bWithoutUnsure: 0.0500 \\ gemma4:12b: 0.3000 \\ gemma4:12bWithoutUnsure: 0.2000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.0667 \\ gemma4:12bNormalized: 0.2400 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.1875 \\ averageNormalized: 0.1962 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2002-01-01-07f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2002-01-01-08f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2006-01-21-00f.png}\\[2mm]
% 2002-01-01-07f.png, 2002-01-01-08f.png, 2006-01-21-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2002-01-01-07f.png} \\ llava:7b: 0.5500 \\ llava:7bWithoutUnsure: 0.7500 \\ gemma4:12b: 0.1333 \\ gemma4:12bWithoutUnsure: 0.1333 \\ ministral-3:8b: 0.2500 \\ ministral-3:8bWithoutUnsure: 0.2500 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 1.0000 \\ gemma4:12bNormalized: 0.1600 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.0962 \\ average: 0.3333 \\ averageNormalized: 0.3855 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2002-01-01-08f.png} \\ llava:7b: 0.5055 \\ llava:7bWithoutUnsure: 0.5138 \\ gemma4:12b: 0.0667 \\ gemma4:12bWithoutUnsure: 0.0667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.1000 \\ qwen3-vl:8bWithoutUnsure: 0.1000 \\ llava:7bNormalized: 0.6850 \\ gemma4:12bNormalized: 0.0800 \\ qwen3-vl:8bNormalized: 0.1429 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2451 \\ averageNormalized: 0.2750 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2006-01-21-00f.png} \\ llava:7b: 0.4675 \\ llava:7bWithoutUnsure: 0.3917 \\ gemma4:12b: 0.0667 \\ gemma4:12bWithoutUnsure: 0.0667 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.5222 \\ gemma4:12bNormalized: 0.0800 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.2396 \\ averageNormalized: 0.2577 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2007-10-04-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2007-10-04-01f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2009-10-24-00f.png}\\[2mm]
% 2007-10-04-00f.png, 2007-10-04-01f.png, 2009-10-24-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2007-10-04-00f.png} \\ llava:7b: 0.4875 \\ llava:7bWithoutUnsure: 0.4583 \\ gemma4:12b: 0.2333 \\ gemma4:12bWithoutUnsure: 0.2333 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.6111 \\ gemma4:12bNormalized: 0.2800 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.2979 \\ averageNormalized: 0.3299 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2007-10-04-01f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.1667 \\ gemma4:12bWithoutUnsure: 0.1667 \\ ministral-3:8b: 0.2100 \\ ministral-3:8bWithoutUnsure: 0.2100 \\ qwen3-vl:8b: 0.2500 \\ qwen3-vl:8bWithoutUnsure: 0.2500 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.2000 \\ qwen3-vl:8bNormalized: 0.3571 \\ ministral-3:8bNormalized: 0.0192 \\ average: 0.2817 \\ averageNormalized: 0.3108 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2009-10-24-00f.png} \\ llava:7b: 0.5100 \\ llava:7bWithoutUnsure: 0.5500 \\ gemma4:12b: 0.4000 \\ gemma4:12bWithoutUnsure: 0.4000 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.0000 \\ qwen3-vl:8bWithoutUnsure: 0.0000 \\ llava:7bNormalized: 0.7333 \\ gemma4:12bNormalized: 0.4800 \\ qwen3-vl:8bNormalized: 0.0000 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.2875 \\ averageNormalized: 0.3033 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2011-08-21-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2017-12-03-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2019-01-01-00f.png}\\[2mm]
% 2011-08-21-00f.png, 2017-12-03-00f.png, 2019-01-01-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2011-08-21-00f.png} \\ llava:7b: 0.4800 \\ llava:7bWithoutUnsure: 0.3000 \\ gemma4:12b: 0.0667 \\ gemma4:12bWithoutUnsure: 0.0667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.4000 \\ gemma4:12bNormalized: 0.0800 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2417 \\ averageNormalized: 0.2752 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2017-12-03-00f.png} \\ llava:7b: 0.5400 \\ llava:7bWithoutUnsure: 0.7000 \\ gemma4:12b: 0.2667 \\ gemma4:12bWithoutUnsure: 0.2667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.9333 \\ gemma4:12bNormalized: 0.3200 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3917 \\ averageNormalized: 0.4686 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2019-01-01-00f.png} \\ llava:7b: 0.4600 \\ llava:7bWithoutUnsure: 0.3000 \\ gemma4:12b: 0.0667 \\ gemma4:12bWithoutUnsure: 0.0667 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.1000 \\ qwen3-vl:8bWithoutUnsure: 0.1000 \\ llava:7bNormalized: 0.4000 \\ gemma4:12bNormalized: 0.0800 \\ qwen3-vl:8bNormalized: 0.1429 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.1667 \\ averageNormalized: 0.1557 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2019-05-08-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2020-01-18-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2020-01-31-00f.png}\\[2mm]
% 2019-05-08-00f.png, 2020-01-18-00f.png, 2020-01-31-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2019-05-08-00f.png} \\ llava:7b: 0.5200 \\ llava:7bWithoutUnsure: 0.7000 \\ gemma4:12b: 0.3667 \\ gemma4:12bWithoutUnsure: 0.3667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.9333 \\ gemma4:12bNormalized: 0.4400 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.4167 \\ averageNormalized: 0.4986 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2020-01-18-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.3167 \\ gemma4:12bWithoutUnsure: 0.3167 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.1000 \\ qwen3-vl:8bWithoutUnsure: 0.1000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.3800 \\ qwen3-vl:8bNormalized: 0.1429 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.2792 \\ averageNormalized: 0.2974 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2020-01-31-00f.png} \\ llava:7b: 0.4400 \\ llava:7bWithoutUnsure: 0.2000 \\ gemma4:12b: 0.4333 \\ gemma4:12bWithoutUnsure: 0.4333 \\ ministral-3:8b: 0.2400 \\ ministral-3:8bWithoutUnsure: 0.2400 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.2667 \\ gemma4:12bNormalized: 0.5200 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.0769 \\ average: 0.2683 \\ averageNormalized: 0.2873 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2020-04-02-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2020-05-12-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2020-06-18-00f.png}\\[2mm]
% 2020-04-02-00f.png, 2020-05-12-00f.png, 2020-06-18-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2020-04-02-00f.png} \\ llava:7b: 0.4950 \\ llava:7bWithoutUnsure: 0.4833 \\ gemma4:12b: 0.5000 \\ gemma4:12bWithoutUnsure: 0.5000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.6444 \\ gemma4:12bNormalized: 0.6000 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3708 \\ averageNormalized: 0.4306 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2020-05-12-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.4000 \\ gemma4:12bWithoutUnsure: 0.4000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.4800 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3750 \\ averageNormalized: 0.4419 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2020-06-18-00f.png} \\ llava:7b: 0.4350 \\ llava:7bWithoutUnsure: 0.1750 \\ gemma4:12b: 0.4000 \\ gemma4:12bWithoutUnsure: 0.3500 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.2333 \\ gemma4:12bNormalized: 0.4200 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.2312 \\ averageNormalized: 0.2348 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2020-12-29-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2021-07-10-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2023-01-23-00f.png}\\[2mm]
% 2020-12-29-00f.png, 2021-07-10-00f.png, 2023-01-23-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2020-12-29-00f.png} \\ llava:7b: 0.4920 \\ llava:7bWithoutUnsure: 0.4600 \\ gemma4:12b: 0.1333 \\ gemma4:12bWithoutUnsure: 0.1333 \\ ministral-3:8b: 0.2900 \\ ministral-3:8bWithoutUnsure: 0.2900 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.6133 \\ gemma4:12bNormalized: 0.1600 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1731 \\ average: 0.2958 \\ averageNormalized: 0.3437 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2021-07-10-00f.png} \\ llava:7b: 0.4830 \\ llava:7bWithoutUnsure: 0.4150 \\ gemma4:12b: 0.3333 \\ gemma4:12bWithoutUnsure: 0.3333 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.5533 \\ gemma4:12bNormalized: 0.4000 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3371 \\ averageNormalized: 0.3936 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2023-01-23-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.2500 \\ gemma4:12bWithoutUnsure: 0.2500 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.1000 \\ qwen3-vl:8bWithoutUnsure: 0.1000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.3000 \\ qwen3-vl:8bNormalized: 0.1429 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.2625 \\ averageNormalized: 0.2774 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2023-10-01-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2023-10-20-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2023-10-20-00l.png}\\[2mm]
% 2023-10-01-00f.png, 2023-10-20-00f.png, 2023-10-20-00l.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2023-10-01-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.4000 \\ gemma4:12bWithoutUnsure: 0.4000 \\ ministral-3:8b: 0.2100 \\ ministral-3:8bWithoutUnsure: 0.2100 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.4800 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.0192 \\ average: 0.3525 \\ averageNormalized: 0.3986 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2023-10-20-00f.png} \\ llava:7b: 0.5100 \\ llava:7bWithoutUnsure: 0.5500 \\ gemma4:12b: 0.1833 \\ gemma4:12bWithoutUnsure: 0.1833 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.1000 \\ qwen3-vl:8bWithoutUnsure: 0.1000 \\ llava:7bNormalized: 0.7333 \\ gemma4:12bNormalized: 0.2200 \\ qwen3-vl:8bNormalized: 0.1429 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.2583 \\ averageNormalized: 0.2740 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2023-10-20-00l.png} \\ llava:7b: 0.4500 \\ llava:7bWithoutUnsure: 0.3333 \\ gemma4:12b: 0.2333 \\ gemma4:12bWithoutUnsure: 0.2333 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.4000 \\ qwen3-vl:8bWithoutUnsure: 0.4000 \\ llava:7bNormalized: 0.4444 \\ gemma4:12bNormalized: 0.2800 \\ qwen3-vl:8bNormalized: 0.5714 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3167 \\ averageNormalized: 0.3720 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2023-10-20-01f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2023-10-20-02f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2023-10-20-03f.png}\\[2mm]
% 2023-10-20-01f.png, 2023-10-20-02f.png, 2023-10-20-03f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2023-10-20-01f.png} \\ llava:7b: 0.4900 \\ llava:7bWithoutUnsure: 0.4000 \\ gemma4:12b: 0.2333 \\ gemma4:12bWithoutUnsure: 0.2333 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.5000 \\ qwen3-vl:8bWithoutUnsure: 0.5000 \\ llava:7bNormalized: 0.5333 \\ gemma4:12bNormalized: 0.2800 \\ qwen3-vl:8bNormalized: 0.7143 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.3333 \\ averageNormalized: 0.3819 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2023-10-20-02f.png} \\ llava:7b: 0.4500 \\ llava:7bWithoutUnsure: 0.2500 \\ gemma4:12b: 0.4667 \\ gemma4:12bWithoutUnsure: 0.4667 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.1000 \\ qwen3-vl:8bWithoutUnsure: 0.1000 \\ llava:7bNormalized: 0.3333 \\ gemma4:12bNormalized: 0.5600 \\ qwen3-vl:8bNormalized: 0.1429 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.2542 \\ averageNormalized: 0.2590 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2023-10-20-03f.png} \\ llava:7b: 0.5250 \\ llava:7bWithoutUnsure: 0.5833 \\ gemma4:12b: 0.7000 \\ gemma4:12bWithoutUnsure: 0.7000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.7778 \\ gemma4:12bNormalized: 0.8400 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.4458 \\ averageNormalized: 0.5239 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2023-10-20-04f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2023-10-20-05f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2023-11-08-00f.png}\\[2mm]
% 2023-10-20-04f.png, 2023-10-20-05f.png, 2023-11-08-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2023-10-20-04f.png} \\ llava:7b: 0.4850 \\ llava:7bWithoutUnsure: 0.3500 \\ gemma4:12b: 0.4000 \\ gemma4:12bWithoutUnsure: 0.4000 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.4667 \\ gemma4:12bNormalized: 0.4800 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.3125 \\ averageNormalized: 0.3438 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2023-10-20-05f.png} \\ llava:7b: 0.4780 \\ llava:7bWithoutUnsure: 0.3900 \\ gemma4:12b: 0.4333 \\ gemma4:12bWithoutUnsure: 0.4000 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.0000 \\ qwen3-vl:8bWithoutUnsure: 0.0000 \\ llava:7bNormalized: 0.5200 \\ gemma4:12bNormalized: 0.4800 \\ qwen3-vl:8bNormalized: 0.0000 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.2475 \\ averageNormalized: 0.2500 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2023-11-08-00f.png} \\ llava:7b: 0.4850 \\ llava:7bWithoutUnsure: 0.4250 \\ gemma4:12b: 0.4667 \\ gemma4:12bWithoutUnsure: 0.4667 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.5667 \\ gemma4:12bNormalized: 0.5600 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.3229 \\ averageNormalized: 0.3531 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2023-11-12-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2023-11-12-00t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2023-11-12-01f.png}\\[2mm]
% 2023-11-12-00f.png, 2023-11-12-00t.png, 2023-11-12-01f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2023-11-12-00f.png} \\ llava:7b: 0.5250 \\ llava:7bWithoutUnsure: 0.7500 \\ gemma4:12b: 0.1667 \\ gemma4:12bWithoutUnsure: 0.1667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 1.0000 \\ gemma4:12bNormalized: 0.2000 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3792 \\ averageNormalized: 0.4552 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2023-11-12-00t.png} \\ llava:7b: 0.4300 \\ llava:7bWithoutUnsure: 0.1500 \\ gemma4:12b: 0.6167 \\ gemma4:12bWithoutUnsure: 0.6167 \\ ministral-3:8b: 0.7000 \\ ministral-3:8bWithoutUnsure: 0.7000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.2000 \\ gemma4:12bNormalized: 0.7400 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.9615 \\ average: 0.4417 \\ averageNormalized: 0.5825 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2023-11-12-01f.png} \\ llava:7b: 0.5100 \\ llava:7bWithoutUnsure: 0.5500 \\ gemma4:12b: 0.3667 \\ gemma4:12bWithoutUnsure: 0.3000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.7333 \\ gemma4:12bNormalized: 0.3600 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3375 \\ averageNormalized: 0.3928 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2023-12-01-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2023-12-01-00t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2023-12-26-00f.png}\\[2mm]
% 2023-12-01-00l.png, 2023-12-01-00t.png, 2023-12-26-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2023-12-01-00l.png} \\ llava:7b: 0.4350 \\ llava:7bWithoutUnsure: 0.2833 \\ gemma4:12b: 0.2333 \\ gemma4:12bWithoutUnsure: 0.2333 \\ ministral-3:8b: 0.2900 \\ ministral-3:8bWithoutUnsure: 0.2900 \\ qwen3-vl:8b: 0.2500 \\ qwen3-vl:8bWithoutUnsure: 0.2500 \\ llava:7bNormalized: 0.3778 \\ gemma4:12bNormalized: 0.2800 \\ qwen3-vl:8bNormalized: 0.3571 \\ ministral-3:8bNormalized: 0.1731 \\ average: 0.2642 \\ averageNormalized: 0.2970 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2023-12-01-00t.png} \\ llava:7b: 0.4500 \\ llava:7bWithoutUnsure: 0.3333 \\ gemma4:12b: 0.3000 \\ gemma4:12bWithoutUnsure: 0.2000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.4444 \\ gemma4:12bNormalized: 0.2400 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2833 \\ averageNormalized: 0.3263 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2023-12-26-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.2167 \\ gemma4:12bWithoutUnsure: 0.2167 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.2600 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.2792 \\ averageNormalized: 0.3031 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-01-08-00t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-01-16-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-01-16-00t.png}\\[2mm]
% 2024-01-08-00t.png, 2024-01-16-00f.png, 2024-01-16-00t.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-01-08-00t.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.7767 \\ gemma4:12bWithoutUnsure: 0.7767 \\ ministral-3:8b: 0.2700 \\ ministral-3:8bWithoutUnsure: 0.2700 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.9320 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1346 \\ average: 0.4617 \\ averageNormalized: 0.5405 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-01-16-00f.png} \\ llava:7b: 0.4900 \\ llava:7bWithoutUnsure: 0.4500 \\ gemma4:12b: 0.2000 \\ gemma4:12bWithoutUnsure: 0.2000 \\ ministral-3:8b: 0.2800 \\ ministral-3:8bWithoutUnsure: 0.2800 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.6000 \\ gemma4:12bNormalized: 0.2400 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1538 \\ average: 0.3075 \\ averageNormalized: 0.3556 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-01-16-00t.png} \\ llava:7b: 0.4950 \\ llava:7bWithoutUnsure: 0.4500 \\ gemma4:12b: 0.7000 \\ gemma4:12bWithoutUnsure: 0.7000 \\ ministral-3:8b: 0.3400 \\ ministral-3:8bWithoutUnsure: 0.3400 \\ qwen3-vl:8b: 0.7000 \\ qwen3-vl:8bWithoutUnsure: 0.7000 \\ llava:7bNormalized: 0.6000 \\ gemma4:12bNormalized: 0.8400 \\ qwen3-vl:8bNormalized: 1.0000 \\ ministral-3:8bNormalized: 0.2692 \\ average: 0.5475 \\ averageNormalized: 0.6773 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-02-13-00t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-03-18-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-03-28-00f.png}\\[2mm]
% 2024-02-13-00t.png, 2024-03-18-00f.png, 2024-03-28-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-02-13-00t.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.7667 \\ gemma4:12bWithoutUnsure: 0.7667 \\ ministral-3:8b: 0.7000 \\ ministral-3:8bWithoutUnsure: 0.7000 \\ qwen3-vl:8b: 0.7000 \\ qwen3-vl:8bWithoutUnsure: 0.7000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.9200 \\ qwen3-vl:8bNormalized: 1.0000 \\ ministral-3:8bNormalized: 0.9615 \\ average: 0.6667 \\ averageNormalized: 0.8871 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-03-18-00f.png} \\ llava:7b: 0.4900 \\ llava:7bWithoutUnsure: 0.4000 \\ gemma4:12b: 0.1333 \\ gemma4:12bWithoutUnsure: 0.1333 \\ ministral-3:8b: 0.2200 \\ ministral-3:8bWithoutUnsure: 0.2200 \\ qwen3-vl:8b: 0.1000 \\ qwen3-vl:8bWithoutUnsure: 0.1000 \\ llava:7bNormalized: 0.5333 \\ gemma4:12bNormalized: 0.1600 \\ qwen3-vl:8bNormalized: 0.1429 \\ ministral-3:8bNormalized: 0.0385 \\ average: 0.2133 \\ averageNormalized: 0.2187 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-03-28-00f.png} \\ llava:7b: 0.4800 \\ llava:7bWithoutUnsure: 0.4000 \\ gemma4:12b: 0.5000 \\ gemma4:12bWithoutUnsure: 0.5000 \\ ministral-3:8b: 0.2400 \\ ministral-3:8bWithoutUnsure: 0.2400 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.5333 \\ gemma4:12bNormalized: 0.6000 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.0769 \\ average: 0.3600 \\ averageNormalized: 0.4097 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-04-10-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-04-10-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-04-10-01f.png}\\[2mm]
% 2024-04-10-00f.png, 2024-04-10-00l.png, 2024-04-10-01f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-04-10-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.2000 \\ gemma4:12bWithoutUnsure: 0.2000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3500 \\ qwen3-vl:8bWithoutUnsure: 0.3500 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.2400 \\ qwen3-vl:8bNormalized: 0.5000 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3375 \\ averageNormalized: 0.3997 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-04-10-00l.png} \\ llava:7b: 0.4750 \\ llava:7bWithoutUnsure: 0.2500 \\ gemma4:12b: 0.6667 \\ gemma4:12bWithoutUnsure: 0.6667 \\ ministral-3:8b: 0.2700 \\ ministral-3:8bWithoutUnsure: 0.2700 \\ qwen3-vl:8b: 0.4000 \\ qwen3-vl:8bWithoutUnsure: 0.4000 \\ llava:7bNormalized: 0.3333 \\ gemma4:12bNormalized: 0.8000 \\ qwen3-vl:8bNormalized: 0.5714 \\ ministral-3:8bNormalized: 0.1346 \\ average: 0.3967 \\ averageNormalized: 0.4598 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-04-10-01f.png} \\ llava:7b: 0.5400 \\ llava:7bWithoutUnsure: 0.7000 \\ gemma4:12b: 0.3000 \\ gemma4:12bWithoutUnsure: 0.3000 \\ ministral-3:8b: 0.2500 \\ ministral-3:8bWithoutUnsure: 0.2500 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.9333 \\ gemma4:12bNormalized: 0.3600 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.0962 \\ average: 0.3875 \\ averageNormalized: 0.4545 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-04-10-01l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-05-06-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-05-10-00t.png}\\[2mm]
% 2024-04-10-01l.png, 2024-05-06-00f.png, 2024-05-10-00t.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-04-10-01l.png} \\ llava:7b: 0.4670 \\ llava:7bWithoutUnsure: 0.3900 \\ gemma4:12b: 0.2667 \\ gemma4:12bWithoutUnsure: 0.2667 \\ ministral-3:8b: 0.2900 \\ ministral-3:8bWithoutUnsure: 0.2900 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.5200 \\ gemma4:12bNormalized: 0.3200 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1731 \\ average: 0.2867 \\ averageNormalized: 0.3247 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-05-06-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.2333 \\ gemma4:12bWithoutUnsure: 0.2333 \\ ministral-3:8b: 0.2800 \\ ministral-3:8bWithoutUnsure: 0.2800 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.2800 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1538 \\ average: 0.3033 \\ averageNormalized: 0.3466 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-05-10-00t.png} \\ llava:7b: 0.4400 \\ llava:7bWithoutUnsure: 0.2000 \\ gemma4:12b: 0.3333 \\ gemma4:12bWithoutUnsure: 0.3333 \\ ministral-3:8b: 0.7000 \\ ministral-3:8bWithoutUnsure: 0.7000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.2667 \\ gemma4:12bNormalized: 0.4000 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.9615 \\ average: 0.3833 \\ averageNormalized: 0.5142 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-05-22-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-05-22-01f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-05-24-00f.png}\\[2mm]
% 2024-05-22-00f.png, 2024-05-22-01f.png, 2024-05-24-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-05-22-00f.png} \\ llava:7b: 0.4900 \\ llava:7bWithoutUnsure: 0.4000 \\ gemma4:12b: 0.5333 \\ gemma4:12bWithoutUnsure: 0.5333 \\ ministral-3:8b: 0.5400 \\ ministral-3:8bWithoutUnsure: 0.5400 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.5333 \\ gemma4:12bNormalized: 0.6400 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.6538 \\ average: 0.4183 \\ averageNormalized: 0.5282 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-05-22-01f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.6333 \\ gemma4:12bWithoutUnsure: 0.7000 \\ ministral-3:8b: 0.2800 \\ ministral-3:8bWithoutUnsure: 0.2800 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.8400 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1538 \\ average: 0.4200 \\ averageNormalized: 0.4866 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-05-24-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.1333 \\ gemma4:12bWithoutUnsure: 0.1333 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.1000 \\ qwen3-vl:8bWithoutUnsure: 0.1000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.1600 \\ qwen3-vl:8bNormalized: 0.1429 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.2333 \\ averageNormalized: 0.2424 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-05-24-01f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-05-24-02f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-05-31-00t.png}\\[2mm]
% 2024-05-24-01f.png, 2024-05-24-02f.png, 2024-05-31-00t.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-05-24-01f.png} \\ llava:7b: 0.5400 \\ llava:7bWithoutUnsure: 0.7000 \\ gemma4:12b: 0.4000 \\ gemma4:12bWithoutUnsure: 0.3500 \\ ministral-3:8b: 0.7200 \\ ministral-3:8bWithoutUnsure: 0.7200 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.9333 \\ gemma4:12bNormalized: 0.4200 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 1.0000 \\ average: 0.5175 \\ averageNormalized: 0.6955 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-05-24-02f.png} \\ llava:7b: 0.4800 \\ llava:7bWithoutUnsure: 0.3000 \\ gemma4:12b: 0.8000 \\ gemma4:12bWithoutUnsure: 0.8000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.4000 \\ gemma4:12bNormalized: 0.9600 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.4000 \\ averageNormalized: 0.4595 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-05-31-00t.png} \\ llava:7b: 0.4750 \\ llava:7bWithoutUnsure: 0.2500 \\ gemma4:12b: 0.7000 \\ gemma4:12bWithoutUnsure: 0.7000 \\ ministral-3:8b: 0.4200 \\ ministral-3:8bWithoutUnsure: 0.4200 \\ qwen3-vl:8b: 0.4000 \\ qwen3-vl:8bWithoutUnsure: 0.4000 \\ llava:7bNormalized: 0.3333 \\ gemma4:12bNormalized: 0.8400 \\ qwen3-vl:8bNormalized: 0.5714 \\ ministral-3:8bNormalized: 0.4231 \\ average: 0.4425 \\ averageNormalized: 0.5420 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-05-31-01t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-06-05-00t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-06-07-00f.png}\\[2mm]
% 2024-05-31-01t.png, 2024-06-05-00t.png, 2024-06-07-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-05-31-01t.png} \\ llava:7b: 0.4850 \\ llava:7bWithoutUnsure: 0.3500 \\ gemma4:12b: 0.6333 \\ gemma4:12bWithoutUnsure: 0.6333 \\ ministral-3:8b: 0.7000 \\ ministral-3:8bWithoutUnsure: 0.7000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.4667 \\ gemma4:12bNormalized: 0.7600 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.9615 \\ average: 0.4708 \\ averageNormalized: 0.6185 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-06-05-00t.png} \\ llava:7b: 0.4400 \\ llava:7bWithoutUnsure: 0.2000 \\ gemma4:12b: 0.7333 \\ gemma4:12bWithoutUnsure: 0.7333 \\ ministral-3:8b: 0.7000 \\ ministral-3:8bWithoutUnsure: 0.7000 \\ qwen3-vl:8b: 0.5000 \\ qwen3-vl:8bWithoutUnsure: 0.5000 \\ llava:7bNormalized: 0.2667 \\ gemma4:12bNormalized: 0.8800 \\ qwen3-vl:8bNormalized: 0.7143 \\ ministral-3:8bNormalized: 0.9615 \\ average: 0.5333 \\ averageNormalized: 0.7056 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-06-07-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.7833 \\ gemma4:12bWithoutUnsure: 0.7833 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.5000 \\ qwen3-vl:8bWithoutUnsure: 0.5000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.9400 \\ qwen3-vl:8bNormalized: 0.7143 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.5208 \\ averageNormalized: 0.6283 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-06-07-00t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-06-07-01t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-06-07-02t.png}\\[2mm]
% 2024-06-07-00t.png, 2024-06-07-01t.png, 2024-06-07-02t.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-06-07-00t.png} \\ llava:7b: 0.5350 \\ llava:7bWithoutUnsure: 0.6750 \\ gemma4:12b: 0.4667 \\ gemma4:12bWithoutUnsure: 0.4667 \\ ministral-3:8b: 0.6200 \\ ministral-3:8bWithoutUnsure: 0.6200 \\ qwen3-vl:8b: 0.4000 \\ qwen3-vl:8bWithoutUnsure: 0.4000 \\ llava:7bNormalized: 0.9000 \\ gemma4:12bNormalized: 0.5600 \\ qwen3-vl:8bNormalized: 0.5714 \\ ministral-3:8bNormalized: 0.8077 \\ average: 0.5404 \\ averageNormalized: 0.7098 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-06-07-01t.png} \\ llava:7b: 0.4850 \\ llava:7bWithoutUnsure: 0.3500 \\ gemma4:12b: 0.7500 \\ gemma4:12bWithoutUnsure: 0.7500 \\ ministral-3:8b: 0.3500 \\ ministral-3:8bWithoutUnsure: 0.3500 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.4667 \\ gemma4:12bNormalized: 0.9000 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.2885 \\ average: 0.4375 \\ averageNormalized: 0.5209 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-06-07-02t.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.7667 \\ gemma4:12bWithoutUnsure: 0.7667 \\ ministral-3:8b: 0.5400 \\ ministral-3:8bWithoutUnsure: 0.5400 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.9200 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.6538 \\ average: 0.5267 \\ averageNormalized: 0.6673 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-06-10-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-06-11-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-06-12-00f.png}\\[2mm]
% 2024-06-10-00f.png, 2024-06-11-00f.png, 2024-06-12-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-06-10-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.0000 \\ gemma4:12bWithoutUnsure: 0.0000 \\ ministral-3:8b: 0.2500 \\ ministral-3:8bWithoutUnsure: 0.2500 \\ qwen3-vl:8b: 0.5000 \\ qwen3-vl:8bWithoutUnsure: 0.5000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.0000 \\ qwen3-vl:8bNormalized: 0.7143 \\ ministral-3:8bNormalized: 0.0962 \\ average: 0.3125 \\ averageNormalized: 0.3693 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-06-11-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.5000 \\ gemma4:12bWithoutUnsure: 0.5000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.6000 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.4000 \\ averageNormalized: 0.4719 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-06-12-00f.png} \\ llava:7b: 0.4550 \\ llava:7bWithoutUnsure: 0.3500 \\ gemma4:12b: 0.3667 \\ gemma4:12bWithoutUnsure: 0.3667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.4667 \\ gemma4:12bNormalized: 0.4400 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3292 \\ averageNormalized: 0.3819 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-06-12-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-06-13-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-06-21-00f.png}\\[2mm]
% 2024-06-12-00l.png, 2024-06-13-00l.png, 2024-06-21-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-06-12-00l.png} \\ llava:7b: 0.4950 \\ llava:7bWithoutUnsure: 0.4500 \\ gemma4:12b: 0.1667 \\ gemma4:12bWithoutUnsure: 0.1667 \\ ministral-3:8b: 0.2900 \\ ministral-3:8bWithoutUnsure: 0.2900 \\ qwen3-vl:8b: 0.1000 \\ qwen3-vl:8bWithoutUnsure: 0.1000 \\ llava:7bNormalized: 0.6000 \\ gemma4:12bNormalized: 0.2000 \\ qwen3-vl:8bNormalized: 0.1429 \\ ministral-3:8bNormalized: 0.1731 \\ average: 0.2517 \\ averageNormalized: 0.2790 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-06-13-00l.png} \\ llava:7b: 0.4000 \\ llava:7bWithoutUnsure: 0.1667 \\ gemma4:12b: 0.0667 \\ gemma4:12bWithoutUnsure: 0.0667 \\ ministral-3:8b: 0.2500 \\ ministral-3:8bWithoutUnsure: 0.2500 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.2222 \\ gemma4:12bNormalized: 0.0800 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.0962 \\ average: 0.1708 \\ averageNormalized: 0.1710 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-06-21-00f.png} \\ llava:7b: 0.4800 \\ llava:7bWithoutUnsure: 0.3000 \\ gemma4:12b: 0.2500 \\ gemma4:12bWithoutUnsure: 0.2500 \\ ministral-3:8b: 0.2600 \\ ministral-3:8bWithoutUnsure: 0.2600 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.4000 \\ gemma4:12bNormalized: 0.3000 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1154 \\ average: 0.2775 \\ averageNormalized: 0.3110 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-06-21-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-07-26-00t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-07-29-00f.png}\\[2mm]
% 2024-06-21-00l.png, 2024-07-26-00t.png, 2024-07-29-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-06-21-00l.png} \\ llava:7b: 0.4563 \\ llava:7bWithoutUnsure: 0.3542 \\ gemma4:12b: 0.3000 \\ gemma4:12bWithoutUnsure: 0.3000 \\ ministral-3:8b: 0.6600 \\ ministral-3:8bWithoutUnsure: 0.6600 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.4723 \\ gemma4:12bNormalized: 0.3600 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.8846 \\ average: 0.4036 \\ averageNormalized: 0.5364 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-07-26-00t.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.0667 \\ gemma4:12bWithoutUnsure: 0.0667 \\ ministral-3:8b: 0.2900 \\ ministral-3:8bWithoutUnsure: 0.2900 \\ qwen3-vl:8b: 0.0000 \\ qwen3-vl:8bWithoutUnsure: 0.0000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.0800 \\ qwen3-vl:8bNormalized: 0.0000 \\ ministral-3:8bNormalized: 0.1731 \\ average: 0.2142 \\ averageNormalized: 0.2299 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-07-29-00f.png} \\ llava:7b: 0.4750 \\ llava:7bWithoutUnsure: 0.2500 \\ gemma4:12b: 0.1333 \\ gemma4:12bWithoutUnsure: 0.1333 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.5000 \\ qwen3-vl:8bWithoutUnsure: 0.5000 \\ llava:7bNormalized: 0.3333 \\ gemma4:12bNormalized: 0.1600 \\ qwen3-vl:8bNormalized: 0.7143 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2958 \\ averageNormalized: 0.3500 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-07-29-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-07-31-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-07-31-00t.png}\\[2mm]
% 2024-07-29-00l.png, 2024-07-31-00f.png, 2024-07-31-00t.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-07-29-00l.png} \\ llava:7b: 0.4800 \\ llava:7bWithoutUnsure: 0.3000 \\ gemma4:12b: 0.2167 \\ gemma4:12bWithoutUnsure: 0.2167 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.4000 \\ gemma4:12bNormalized: 0.2600 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2792 \\ averageNormalized: 0.3202 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-07-31-00f.png} \\ llava:7b: 0.5200 \\ llava:7bWithoutUnsure: 0.7000 \\ gemma4:12b: 0.2667 \\ gemma4:12bWithoutUnsure: 0.2667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.9333 \\ gemma4:12bNormalized: 0.3200 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3667 \\ averageNormalized: 0.4328 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-07-31-00t.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.7667 \\ gemma4:12bWithoutUnsure: 0.7667 \\ ministral-3:8b: 0.7000 \\ ministral-3:8bWithoutUnsure: 0.7000 \\ qwen3-vl:8b: 0.4000 \\ qwen3-vl:8bWithoutUnsure: 0.4000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.9200 \\ qwen3-vl:8bNormalized: 0.5714 \\ ministral-3:8bNormalized: 0.9615 \\ average: 0.5917 \\ averageNormalized: 0.7799 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-08-14-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-08-16-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-08-30-00f.png}\\[2mm]
% 2024-08-14-00f.png, 2024-08-16-00f.png, 2024-08-30-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-08-14-00f.png} \\ llava:7b: 0.4930 \\ llava:7bWithoutUnsure: 0.4300 \\ gemma4:12b: 0.6000 \\ gemma4:12bWithoutUnsure: 0.6000 \\ ministral-3:8b: 0.2400 \\ ministral-3:8bWithoutUnsure: 0.2400 \\ qwen3-vl:8b: 0.1000 \\ qwen3-vl:8bWithoutUnsure: 0.1000 \\ llava:7bNormalized: 0.5733 \\ gemma4:12bNormalized: 0.7200 \\ qwen3-vl:8bNormalized: 0.1429 \\ ministral-3:8bNormalized: 0.0769 \\ average: 0.3425 \\ averageNormalized: 0.3783 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-08-16-00f.png} \\ llava:7b: 0.4650 \\ llava:7bWithoutUnsure: 0.3250 \\ gemma4:12b: 0.5667 \\ gemma4:12bWithoutUnsure: 0.6000 \\ ministral-3:8b: 0.2600 \\ ministral-3:8bWithoutUnsure: 0.2600 \\ qwen3-vl:8b: 0.0000 \\ qwen3-vl:8bWithoutUnsure: 0.0000 \\ llava:7bNormalized: 0.4333 \\ gemma4:12bNormalized: 0.7200 \\ qwen3-vl:8bNormalized: 0.0000 \\ ministral-3:8bNormalized: 0.1154 \\ average: 0.2963 \\ averageNormalized: 0.3172 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-08-30-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.2000 \\ gemma4:12bWithoutUnsure: 0.2000 \\ ministral-3:8b: 0.2900 \\ ministral-3:8bWithoutUnsure: 0.2900 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.2400 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1731 \\ average: 0.2975 \\ averageNormalized: 0.3414 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-08-30-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-08-30-00t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-09-01-00t.png}\\[2mm]
% 2024-08-30-00l.png, 2024-08-30-00t.png, 2024-09-01-00t.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-08-30-00l.png} \\ llava:7b: 0.4550 \\ llava:7bWithoutUnsure: 0.2750 \\ gemma4:12b: 0.4000 \\ gemma4:12bWithoutUnsure: 0.4000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.4000 \\ qwen3-vl:8bWithoutUnsure: 0.4000 \\ llava:7bNormalized: 0.3667 \\ gemma4:12bNormalized: 0.4800 \\ qwen3-vl:8bNormalized: 0.5714 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3438 \\ averageNormalized: 0.4026 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-08-30-00t.png} \\ llava:7b: 0.4800 \\ llava:7bWithoutUnsure: 0.4000 \\ gemma4:12b: 0.8000 \\ gemma4:12bWithoutUnsure: 0.8000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.0000 \\ qwen3-vl:8bWithoutUnsure: 0.0000 \\ llava:7bNormalized: 0.5333 \\ gemma4:12bNormalized: 0.9600 \\ qwen3-vl:8bNormalized: 0.0000 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3750 \\ averageNormalized: 0.4214 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-09-01-00t.png} \\ llava:7b: 0.5100 \\ llava:7bWithoutUnsure: 0.5500 \\ gemma4:12b: 0.7667 \\ gemma4:12bWithoutUnsure: 0.7667 \\ ministral-3:8b: 0.7000 \\ ministral-3:8bWithoutUnsure: 0.7000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.7333 \\ gemma4:12bNormalized: 0.9200 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.9615 \\ average: 0.5542 \\ averageNormalized: 0.7251 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-09-02-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-09-02-00t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-09-03-00l.png}\\[2mm]
% 2024-09-02-00f.png, 2024-09-02-00t.png, 2024-09-03-00l.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-09-02-00f.png} \\ llava:7b: 0.4900 \\ llava:7bWithoutUnsure: 0.4000 \\ gemma4:12b: 0.3000 \\ gemma4:12bWithoutUnsure: 0.3000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.4000 \\ qwen3-vl:8bWithoutUnsure: 0.4000 \\ llava:7bNormalized: 0.5333 \\ gemma4:12bNormalized: 0.3600 \\ qwen3-vl:8bNormalized: 0.5714 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3500 \\ averageNormalized: 0.4143 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-09-02-00t.png} \\ llava:7b: 0.4950 \\ llava:7bWithoutUnsure: 0.4500 \\ gemma4:12b: 0.5667 \\ gemma4:12bWithoutUnsure: 0.5667 \\ ministral-3:8b: 0.7000 \\ ministral-3:8bWithoutUnsure: 0.7000 \\ qwen3-vl:8b: 0.4000 \\ qwen3-vl:8bWithoutUnsure: 0.4000 \\ llava:7bNormalized: 0.6000 \\ gemma4:12bNormalized: 0.6800 \\ qwen3-vl:8bNormalized: 0.5714 \\ ministral-3:8bNormalized: 0.9615 \\ average: 0.5292 \\ averageNormalized: 0.7032 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-09-03-00l.png} \\ llava:7b: 0.4520 \\ llava:7bWithoutUnsure: 0.3800 \\ gemma4:12b: 0.1667 \\ gemma4:12bWithoutUnsure: 0.1667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.5067 \\ gemma4:12bNormalized: 0.2000 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2617 \\ averageNormalized: 0.2962 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-09-04-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-09-04-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-09-04-00t.png}\\[2mm]
% 2024-09-04-00f.png, 2024-09-04-00l.png, 2024-09-04-00t.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-09-04-00f.png} \\ llava:7b: 0.4800 \\ llava:7bWithoutUnsure: 0.3000 \\ gemma4:12b: 0.4667 \\ gemma4:12bWithoutUnsure: 0.4667 \\ ministral-3:8b: 0.2800 \\ ministral-3:8bWithoutUnsure: 0.2800 \\ qwen3-vl:8b: 0.0000 \\ qwen3-vl:8bWithoutUnsure: 0.0000 \\ llava:7bNormalized: 0.4000 \\ gemma4:12bNormalized: 0.5600 \\ qwen3-vl:8bNormalized: 0.0000 \\ ministral-3:8bNormalized: 0.1538 \\ average: 0.2617 \\ averageNormalized: 0.2785 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-09-04-00l.png} \\ llava:7b: 0.4200 \\ llava:7bWithoutUnsure: 0.1000 \\ gemma4:12b: 0.2167 \\ gemma4:12bWithoutUnsure: 0.2167 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.1333 \\ gemma4:12bNormalized: 0.2600 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2292 \\ averageNormalized: 0.2536 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-09-04-00t.png} \\ llava:7b: 0.4450 \\ llava:7bWithoutUnsure: 0.2250 \\ gemma4:12b: 0.6667 \\ gemma4:12bWithoutUnsure: 0.6667 \\ ministral-3:8b: 0.2900 \\ ministral-3:8bWithoutUnsure: 0.2900 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.3000 \\ gemma4:12bNormalized: 0.8000 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1731 \\ average: 0.3454 \\ averageNormalized: 0.3897 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-09-23-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-09-30-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-09-30-00t.png}\\[2mm]
% 2024-09-23-00l.png, 2024-09-30-00f.png, 2024-09-30-00t.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-09-23-00l.png} \\ llava:7b: 0.4990 \\ llava:7bWithoutUnsure: 0.4900 \\ gemma4:12b: 0.2167 \\ gemma4:12bWithoutUnsure: 0.2167 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.6533 \\ gemma4:12bNormalized: 0.2600 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3267 \\ averageNormalized: 0.3836 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-09-30-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.2000 \\ gemma4:12bWithoutUnsure: 0.2000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.2400 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3250 \\ averageNormalized: 0.3819 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-09-30-00t.png} \\ llava:7b: 0.4850 \\ llava:7bWithoutUnsure: 0.3500 \\ gemma4:12b: 0.5000 \\ gemma4:12bWithoutUnsure: 0.5000 \\ ministral-3:8b: 0.7000 \\ ministral-3:8bWithoutUnsure: 0.7000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.4667 \\ gemma4:12bNormalized: 0.6000 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.9615 \\ average: 0.4625 \\ averageNormalized: 0.6142 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-10-02-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-10-02-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-10-02-01l.png}\\[2mm]
% 2024-10-02-00f.png, 2024-10-02-00l.png, 2024-10-02-01l.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-10-02-00f.png} \\ llava:7b: 0.4700 \\ llava:7bWithoutUnsure: 0.3500 \\ gemma4:12b: 0.4667 \\ gemma4:12bWithoutUnsure: 0.4500 \\ ministral-3:8b: 0.2800 \\ ministral-3:8bWithoutUnsure: 0.2800 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.4667 \\ gemma4:12bNormalized: 0.5400 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1538 \\ average: 0.3200 \\ averageNormalized: 0.3616 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-10-02-00l.png} \\ llava:7b: 0.4690 \\ llava:7bWithoutUnsure: 0.3967 \\ gemma4:12b: 0.2000 \\ gemma4:12bWithoutUnsure: 0.2000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.4000 \\ qwen3-vl:8bWithoutUnsure: 0.4000 \\ llava:7bNormalized: 0.5289 \\ gemma4:12bNormalized: 0.2400 \\ qwen3-vl:8bNormalized: 0.5714 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3242 \\ averageNormalized: 0.3832 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-10-02-01l.png} \\ llava:7b: 0.4930 \\ llava:7bWithoutUnsure: 0.4650 \\ gemma4:12b: 0.2167 \\ gemma4:12bWithoutUnsure: 0.2167 \\ ministral-3:8b: 0.2900 \\ ministral-3:8bWithoutUnsure: 0.2900 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.6200 \\ gemma4:12bNormalized: 0.2600 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1731 \\ average: 0.2929 \\ averageNormalized: 0.3347 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-10-16-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-10-22-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-10-22-00t.png}\\[2mm]
% 2024-10-16-00f.png, 2024-10-22-00f.png, 2024-10-22-00t.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-10-16-00f.png} \\ llava:7b: 0.4900 \\ llava:7bWithoutUnsure: 0.4000 \\ gemma4:12b: 0.2667 \\ gemma4:12bWithoutUnsure: 0.1500 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.5333 \\ gemma4:12bNormalized: 0.1800 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.2375 \\ averageNormalized: 0.2498 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-10-22-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.1667 \\ gemma4:12bWithoutUnsure: 0.1667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.2000 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3167 \\ averageNormalized: 0.3719 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-10-22-00t.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.6333 \\ gemma4:12bWithoutUnsure: 0.7000 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.4000 \\ qwen3-vl:8bWithoutUnsure: 0.4000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.8400 \\ qwen3-vl:8bNormalized: 0.5714 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.4500 \\ averageNormalized: 0.5195 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-11-27-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-11-27-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-11-27-00t.png}\\[2mm]
% 2024-11-27-00f.png, 2024-11-27-00l.png, 2024-11-27-00t.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-11-27-00f.png} \\ llava:7b: 0.4970 \\ llava:7bWithoutUnsure: 0.4850 \\ gemma4:12b: 0.1333 \\ gemma4:12bWithoutUnsure: 0.1333 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.6467 \\ gemma4:12bNormalized: 0.1600 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3046 \\ averageNormalized: 0.3569 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-11-27-00l.png} \\ llava:7b: 0.5200 \\ llava:7bWithoutUnsure: 0.6000 \\ gemma4:12b: 0.2667 \\ gemma4:12bWithoutUnsure: 0.2667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.8000 \\ gemma4:12bNormalized: 0.3200 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3417 \\ averageNormalized: 0.3995 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-11-27-00t.png} \\ llava:7b: 0.5250 \\ llava:7bWithoutUnsure: 0.7500 \\ gemma4:12b: 0.8000 \\ gemma4:12bWithoutUnsure: 0.8000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 1.0000 \\ gemma4:12bNormalized: 0.9600 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.5375 \\ averageNormalized: 0.6452 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-11-29-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-11-30-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-12-02-00f.png}\\[2mm]
% 2024-11-29-00f.png, 2024-11-30-00f.png, 2024-12-02-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-11-29-00f.png} \\ llava:7b: 0.4750 \\ llava:7bWithoutUnsure: 0.2500 \\ gemma4:12b: 0.6667 \\ gemma4:12bWithoutUnsure: 0.6667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.3333 \\ gemma4:12bNormalized: 0.8000 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3542 \\ averageNormalized: 0.4028 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-11-30-00f.png} \\ llava:7b: 0.4500 \\ llava:7bWithoutUnsure: 0.0000 \\ gemma4:12b: 0.3167 \\ gemma4:12bWithoutUnsure: 0.3167 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.1000 \\ qwen3-vl:8bWithoutUnsure: 0.1000 \\ llava:7bNormalized: 0.0000 \\ gemma4:12bNormalized: 0.3800 \\ qwen3-vl:8bNormalized: 0.1429 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.1792 \\ averageNormalized: 0.1788 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-12-02-00f.png} \\ llava:7b: 0.4700 \\ llava:7bWithoutUnsure: 0.2000 \\ gemma4:12b: 0.2167 \\ gemma4:12bWithoutUnsure: 0.2167 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.2667 \\ gemma4:12bNormalized: 0.2600 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2542 \\ averageNormalized: 0.2869 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-12-02-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-12-02-00t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-12-18-00f.png}\\[2mm]
% 2024-12-02-00l.png, 2024-12-02-00t.png, 2024-12-18-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-12-02-00l.png} \\ llava:7b: 0.4536 \\ llava:7bWithoutUnsure: 0.0360 \\ gemma4:12b: 0.1667 \\ gemma4:12bWithoutUnsure: 0.1667 \\ ministral-3:8b: 0.2800 \\ ministral-3:8bWithoutUnsure: 0.2800 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.0480 \\ gemma4:12bNormalized: 0.2000 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1538 \\ average: 0.1957 \\ averageNormalized: 0.2076 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-12-02-00t.png} \\ llava:7b: 0.4600 \\ llava:7bWithoutUnsure: 0.3000 \\ gemma4:12b: 0.3667 \\ gemma4:12bWithoutUnsure: 0.3667 \\ ministral-3:8b: 0.5400 \\ ministral-3:8bWithoutUnsure: 0.5400 \\ qwen3-vl:8b: 0.1000 \\ qwen3-vl:8bWithoutUnsure: 0.1000 \\ llava:7bNormalized: 0.4000 \\ gemma4:12bNormalized: 0.4400 \\ qwen3-vl:8bNormalized: 0.1429 \\ ministral-3:8bNormalized: 0.6538 \\ average: 0.3267 \\ averageNormalized: 0.4092 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-12-18-00f.png} \\ llava:7b: 0.4700 \\ llava:7bWithoutUnsure: 0.3500 \\ gemma4:12b: 0.1667 \\ gemma4:12bWithoutUnsure: 0.1667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.1000 \\ qwen3-vl:8bWithoutUnsure: 0.1000 \\ llava:7bNormalized: 0.4667 \\ gemma4:12bNormalized: 0.2000 \\ qwen3-vl:8bNormalized: 0.1429 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2292 \\ averageNormalized: 0.2505 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-12-18-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-12-18-00t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-12-30-00f.png}\\[2mm]
% 2024-12-18-00l.png, 2024-12-18-00t.png, 2024-12-30-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-12-18-00l.png} \\ llava:7b: 0.4600 \\ llava:7bWithoutUnsure: 0.3667 \\ gemma4:12b: 0.1333 \\ gemma4:12bWithoutUnsure: 0.1333 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.4889 \\ gemma4:12bNormalized: 0.1600 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2750 \\ averageNormalized: 0.3174 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-12-18-00t.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.1000 \\ gemma4:12bWithoutUnsure: 0.1000 \\ ministral-3:8b: 0.4600 \\ ministral-3:8bWithoutUnsure: 0.4600 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.1200 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.5000 \\ average: 0.3400 \\ averageNormalized: 0.4288 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-12-30-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.4000 \\ gemma4:12bWithoutUnsure: 0.3500 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.4200 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3375 \\ averageNormalized: 0.3912 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-12-30-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2024-12-30-00t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-01-03-00f.png}\\[2mm]
% 2024-12-30-00l.png, 2024-12-30-00t.png, 2025-01-03-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-12-30-00l.png} \\ llava:7b: 0.4900 \\ llava:7bWithoutUnsure: 0.4000 \\ gemma4:12b: 0.3833 \\ gemma4:12bWithoutUnsure: 0.3833 \\ ministral-3:8b: 0.2800 \\ ministral-3:8bWithoutUnsure: 0.2800 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.5333 \\ gemma4:12bNormalized: 0.4600 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1538 \\ average: 0.3408 \\ averageNormalized: 0.3939 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2024-12-30-00t.png} \\ llava:7b: 0.4950 \\ llava:7bWithoutUnsure: 0.4500 \\ gemma4:12b: 0.7000 \\ gemma4:12bWithoutUnsure: 0.7000 \\ ministral-3:8b: 0.6600 \\ ministral-3:8bWithoutUnsure: 0.6600 \\ qwen3-vl:8b: 0.1000 \\ qwen3-vl:8bWithoutUnsure: 0.1000 \\ llava:7bNormalized: 0.6000 \\ gemma4:12bNormalized: 0.8400 \\ qwen3-vl:8bNormalized: 0.1429 \\ ministral-3:8bNormalized: 0.8846 \\ average: 0.4775 \\ averageNormalized: 0.6169 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-01-03-00f.png} \\ llava:7b: 0.4800 \\ llava:7bWithoutUnsure: 0.3000 \\ gemma4:12b: 0.3333 \\ gemma4:12bWithoutUnsure: 0.2500 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.4000 \\ gemma4:12bNormalized: 0.3000 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2875 \\ averageNormalized: 0.3302 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-02-13-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-02-14-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-02-14-00t.png}\\[2mm]
% 2025-02-13-00f.png, 2025-02-14-00f.png, 2025-02-14-00t.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-02-13-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.5333 \\ gemma4:12bWithoutUnsure: 0.5500 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.6600 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3875 \\ averageNormalized: 0.4512 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-02-14-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.5333 \\ gemma4:12bWithoutUnsure: 0.5500 \\ ministral-3:8b: 0.2700 \\ ministral-3:8bWithoutUnsure: 0.2700 \\ qwen3-vl:8b: 0.1000 \\ qwen3-vl:8bWithoutUnsure: 0.1000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.6600 \\ qwen3-vl:8bNormalized: 0.1429 \\ ministral-3:8bNormalized: 0.1346 \\ average: 0.3550 \\ averageNormalized: 0.4010 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-02-14-00t.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.8333 \\ gemma4:12bWithoutUnsure: 0.8333 \\ ministral-3:8b: 0.7000 \\ ministral-3:8bWithoutUnsure: 0.7000 \\ qwen3-vl:8b: 0.5000 \\ qwen3-vl:8bWithoutUnsure: 0.5000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 1.0000 \\ qwen3-vl:8bNormalized: 0.7143 \\ ministral-3:8bNormalized: 0.9615 \\ average: 0.6333 \\ averageNormalized: 0.8356 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-03-03-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-03-03-00t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-03-10-00f.png}\\[2mm]
% 2025-03-03-00f.png, 2025-03-03-00t.png, 2025-03-10-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-03-03-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.4333 \\ gemma4:12bWithoutUnsure: 0.4000 \\ ministral-3:8b: 0.2300 \\ ministral-3:8bWithoutUnsure: 0.2300 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.4800 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.0577 \\ average: 0.3325 \\ averageNormalized: 0.3725 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-03-03-00t.png} \\ llava:7b: 0.4970 \\ llava:7bWithoutUnsure: 0.4700 \\ gemma4:12b: 0.2000 \\ gemma4:12bWithoutUnsure: 0.2000 \\ ministral-3:8b: 0.7000 \\ ministral-3:8bWithoutUnsure: 0.7000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.6267 \\ gemma4:12bNormalized: 0.2400 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.9615 \\ average: 0.4175 \\ averageNormalized: 0.5642 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-03-10-00f.png} \\ llava:7b: 0.4800 \\ llava:7bWithoutUnsure: 0.3000 \\ gemma4:12b: 0.3833 \\ gemma4:12bWithoutUnsure: 0.3833 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.4000 \\ gemma4:12bNormalized: 0.4600 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2958 \\ averageNormalized: 0.3345 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-03-10-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-03-10-00t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-04-09-00f.png}\\[2mm]
% 2025-03-10-00l.png, 2025-03-10-00t.png, 2025-04-09-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-03-10-00l.png} \\ llava:7b: 0.4900 \\ llava:7bWithoutUnsure: 0.4000 \\ gemma4:12b: 0.1000 \\ gemma4:12bWithoutUnsure: 0.1000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.5333 \\ gemma4:12bNormalized: 0.1200 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2750 \\ averageNormalized: 0.3186 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-03-10-00t.png} \\ llava:7b: 0.4700 \\ llava:7bWithoutUnsure: 0.2000 \\ gemma4:12b: 0.0667 \\ gemma4:12bWithoutUnsure: 0.0667 \\ ministral-3:8b: 0.7000 \\ ministral-3:8bWithoutUnsure: 0.7000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.2667 \\ gemma4:12bNormalized: 0.0800 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.9615 \\ average: 0.2917 \\ averageNormalized: 0.3985 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-04-09-00f.png} \\ llava:7b: 0.4700 \\ llava:7bWithoutUnsure: 0.2000 \\ gemma4:12b: 0.4667 \\ gemma4:12bWithoutUnsure: 0.4667 \\ ministral-3:8b: 0.2500 \\ ministral-3:8bWithoutUnsure: 0.2500 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.2667 \\ gemma4:12bNormalized: 0.5600 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.0962 \\ average: 0.2792 \\ averageNormalized: 0.3021 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-04-09-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-04-11-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-04-11-01f.png}\\[2mm]
% 2025-04-09-00l.png, 2025-04-11-00f.png, 2025-04-11-01f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-04-09-00l.png} \\ llava:7b: 0.4900 \\ llava:7bWithoutUnsure: 0.4000 \\ gemma4:12b: 0.5333 \\ gemma4:12bWithoutUnsure: 0.5333 \\ ministral-3:8b: 0.2900 \\ ministral-3:8bWithoutUnsure: 0.2900 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.5333 \\ gemma4:12bNormalized: 0.6400 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1731 \\ average: 0.3558 \\ averageNormalized: 0.4080 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-04-11-00f.png} \\ llava:7b: 0.5050 \\ llava:7bWithoutUnsure: 0.5250 \\ gemma4:12b: 0.3667 \\ gemma4:12bWithoutUnsure: 0.3667 \\ ministral-3:8b: 0.2800 \\ ministral-3:8bWithoutUnsure: 0.2800 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.7000 \\ gemma4:12bNormalized: 0.4400 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1538 \\ average: 0.3429 \\ averageNormalized: 0.3949 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-04-11-01f.png} \\ llava:7b: 0.4700 \\ llava:7bWithoutUnsure: 0.4000 \\ gemma4:12b: 0.2667 \\ gemma4:12bWithoutUnsure: 0.2667 \\ ministral-3:8b: 0.2400 \\ ministral-3:8bWithoutUnsure: 0.2400 \\ qwen3-vl:8b: 0.1000 \\ qwen3-vl:8bWithoutUnsure: 0.1000 \\ llava:7bNormalized: 0.5333 \\ gemma4:12bNormalized: 0.3200 \\ qwen3-vl:8bNormalized: 0.1429 \\ ministral-3:8bNormalized: 0.0769 \\ average: 0.2517 \\ averageNormalized: 0.2683 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-04-25-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-06-13-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-06-23-00f.png}\\[2mm]
% 2025-04-25-00f.png, 2025-06-13-00f.png, 2025-06-23-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-04-25-00f.png} \\ llava:7b: 0.4800 \\ llava:7bWithoutUnsure: 0.3000 \\ gemma4:12b: 0.3333 \\ gemma4:12bWithoutUnsure: 0.3333 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.4000 \\ gemma4:12bNormalized: 0.4000 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3083 \\ averageNormalized: 0.3552 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-06-13-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.1167 \\ gemma4:12bWithoutUnsure: 0.1167 \\ ministral-3:8b: 0.2100 \\ ministral-3:8bWithoutUnsure: 0.2100 \\ qwen3-vl:8b: 0.0000 \\ qwen3-vl:8bWithoutUnsure: 0.0000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.1400 \\ qwen3-vl:8bNormalized: 0.0000 \\ ministral-3:8bNormalized: 0.0192 \\ average: 0.2067 \\ averageNormalized: 0.2065 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-06-23-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.3000 \\ gemma4:12bWithoutUnsure: 0.3000 \\ ministral-3:8b: 0.2900 \\ ministral-3:8bWithoutUnsure: 0.2900 \\ qwen3-vl:8b: 0.5000 \\ qwen3-vl:8bWithoutUnsure: 0.5000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.3600 \\ qwen3-vl:8bNormalized: 0.7143 \\ ministral-3:8bNormalized: 0.1731 \\ average: 0.3975 \\ averageNormalized: 0.4785 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-07-21-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-09-02-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-09-02-00l.png}\\[2mm]
% 2025-07-21-00f.png, 2025-09-02-00f.png, 2025-09-02-00l.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-07-21-00f.png} \\ llava:7b: 0.5250 \\ llava:7bWithoutUnsure: 0.7500 \\ gemma4:12b: 0.4333 \\ gemma4:12bWithoutUnsure: 0.4333 \\ ministral-3:8b: 0.2900 \\ ministral-3:8bWithoutUnsure: 0.2900 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 1.0000 \\ gemma4:12bNormalized: 0.5200 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1731 \\ average: 0.4183 \\ averageNormalized: 0.4947 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-09-02-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.3667 \\ gemma4:12bWithoutUnsure: 0.3000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.1000 \\ qwen3-vl:8bWithoutUnsure: 0.1000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.3600 \\ qwen3-vl:8bNormalized: 0.1429 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3000 \\ averageNormalized: 0.3405 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-09-02-00l.png} \\ llava:7b: 0.4585 \\ llava:7bWithoutUnsure: 0.0850 \\ gemma4:12b: 0.3000 \\ gemma4:12bWithoutUnsure: 0.3000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.1133 \\ gemma4:12bNormalized: 0.3600 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2213 \\ averageNormalized: 0.2378 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-09-02-00t.jpeg} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-09-02-01l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-09-02-01t.png}\\[2mm]
% 2025-09-02-00t.jpeg, 2025-09-02-01l.png, 2025-09-02-01t.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-09-02-00t.jpeg} \\ llava:7b: 0.5200 \\ llava:7bWithoutUnsure: 0.7000 \\ gemma4:12b: 0.2333 \\ gemma4:12bWithoutUnsure: 0.2333 \\ ministral-3:8b: 0.3800 \\ ministral-3:8bWithoutUnsure: 0.3800 \\ qwen3-vl:8b: 0.0000 \\ qwen3-vl:8bWithoutUnsure: 0.0000 \\ llava:7bNormalized: 0.9333 \\ gemma4:12bNormalized: 0.2800 \\ qwen3-vl:8bNormalized: 0.0000 \\ ministral-3:8bNormalized: 0.3462 \\ average: 0.3283 \\ averageNormalized: 0.3899 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-09-02-01l.png} \\ llava:7b: 0.4850 \\ llava:7bWithoutUnsure: 0.4625 \\ gemma4:12b: 0.3000 \\ gemma4:12bWithoutUnsure: 0.2000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.6167 \\ gemma4:12bNormalized: 0.2400 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3156 \\ averageNormalized: 0.3694 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-09-02-01t.png} \\ llava:7b: 0.5200 \\ llava:7bWithoutUnsure: 0.5667 \\ gemma4:12b: 0.4500 \\ gemma4:12bWithoutUnsure: 0.4500 \\ ministral-3:8b: 0.7000 \\ ministral-3:8bWithoutUnsure: 0.7000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.7556 \\ gemma4:12bNormalized: 0.5400 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.9615 \\ average: 0.5042 \\ averageNormalized: 0.6714 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-09-08-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-09-08-00t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-09-15-00f.png}\\[2mm]
% 2025-09-08-00f.png, 2025-09-08-00t.png, 2025-09-15-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-09-08-00f.png} \\ llava:7b: 0.4200 \\ llava:7bWithoutUnsure: 0.1000 \\ gemma4:12b: 0.2667 \\ gemma4:12bWithoutUnsure: 0.2667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.1333 \\ gemma4:12bNormalized: 0.3200 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2417 \\ averageNormalized: 0.2686 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-09-08-00t.png} \\ llava:7b: 0.4250 \\ llava:7bWithoutUnsure: 0.1250 \\ gemma4:12b: 0.7667 \\ gemma4:12bWithoutUnsure: 0.7667 \\ ministral-3:8b: 0.7000 \\ ministral-3:8bWithoutUnsure: 0.7000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.1667 \\ gemma4:12bNormalized: 0.9200 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.9615 \\ average: 0.4729 \\ averageNormalized: 0.6192 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-09-15-00f.png} \\ llava:7b: 0.5470 \\ llava:7bWithoutUnsure: 0.6567 \\ gemma4:12b: 0.0000 \\ gemma4:12bWithoutUnsure: 0.0000 \\ ministral-3:8b: 0.2300 \\ ministral-3:8bWithoutUnsure: 0.2300 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.8756 \\ gemma4:12bNormalized: 0.0000 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.0577 \\ average: 0.2717 \\ averageNormalized: 0.3047 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-10-20-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-11-14-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-11-14-00t.png}\\[2mm]
% 2025-10-20-00f.png, 2025-11-14-00f.png, 2025-11-14-00t.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-10-20-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.2000 \\ gemma4:12bWithoutUnsure: 0.2000 \\ ministral-3:8b: 0.2400 \\ ministral-3:8bWithoutUnsure: 0.2400 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.2400 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.0769 \\ average: 0.2850 \\ averageNormalized: 0.3173 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-11-14-00f.png} \\ llava:7b: 0.4750 \\ llava:7bWithoutUnsure: 0.2500 \\ gemma4:12b: 0.1000 \\ gemma4:12bWithoutUnsure: 0.1000 \\ ministral-3:8b: 0.2300 \\ ministral-3:8bWithoutUnsure: 0.2300 \\ qwen3-vl:8b: 0.5000 \\ qwen3-vl:8bWithoutUnsure: 0.5000 \\ llava:7bNormalized: 0.3333 \\ gemma4:12bNormalized: 0.1200 \\ qwen3-vl:8bNormalized: 0.7143 \\ ministral-3:8bNormalized: 0.0577 \\ average: 0.2700 \\ averageNormalized: 0.3063 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-11-14-00t.png} \\ llava:7b: 0.4650 \\ llava:7bWithoutUnsure: 0.3250 \\ gemma4:12b: 0.4333 \\ gemma4:12bWithoutUnsure: 0.4333 \\ ministral-3:8b: 0.7100 \\ ministral-3:8bWithoutUnsure: 0.7100 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.4333 \\ gemma4:12bNormalized: 0.5200 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.9808 \\ average: 0.4171 \\ averageNormalized: 0.5550 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-11-21-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-12-07-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-12-07-01f.png}\\[2mm]
% 2025-11-21-00f.png, 2025-12-07-00f.png, 2025-12-07-01f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-11-21-00f.png} \\ llava:7b: 0.5250 \\ llava:7bWithoutUnsure: 0.7500 \\ gemma4:12b: 0.1667 \\ gemma4:12bWithoutUnsure: 0.1667 \\ ministral-3:8b: 0.3400 \\ ministral-3:8bWithoutUnsure: 0.3400 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 1.0000 \\ gemma4:12bNormalized: 0.2000 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.2692 \\ average: 0.3642 \\ averageNormalized: 0.4387 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-12-07-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.3667 \\ gemma4:12bWithoutUnsure: 0.3667 \\ ministral-3:8b: 0.2900 \\ ministral-3:8bWithoutUnsure: 0.2900 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.4400 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1731 \\ average: 0.3642 \\ averageNormalized: 0.4271 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-12-07-01f.png} \\ llava:7b: 0.5200 \\ llava:7bWithoutUnsure: 0.7000 \\ gemma4:12b: 0.1500 \\ gemma4:12bWithoutUnsure: 0.1500 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.9333 \\ gemma4:12bNormalized: 0.1800 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3375 \\ averageNormalized: 0.3978 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-12-16-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-12-26-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-12-26-00l.png}\\[2mm]
% 2025-12-16-00f.png, 2025-12-26-00f.png, 2025-12-26-00l.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-12-16-00f.png} \\ llava:7b: 0.4700 \\ llava:7bWithoutUnsure: 0.2000 \\ gemma4:12b: 0.4333 \\ gemma4:12bWithoutUnsure: 0.4000 \\ ministral-3:8b: 0.2900 \\ ministral-3:8bWithoutUnsure: 0.2900 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.2667 \\ gemma4:12bNormalized: 0.4800 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1731 \\ average: 0.2975 \\ averageNormalized: 0.3371 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-12-26-00f.png} \\ llava:7b: 0.4850 \\ llava:7bWithoutUnsure: 0.3500 \\ gemma4:12b: 0.2333 \\ gemma4:12bWithoutUnsure: 0.2333 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.4667 \\ gemma4:12bNormalized: 0.2800 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2958 \\ averageNormalized: 0.3419 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-12-26-00l.png} \\ llava:7b: 0.4800 \\ llava:7bWithoutUnsure: 0.4000 \\ gemma4:12b: 0.3000 \\ gemma4:12bWithoutUnsure: 0.2000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.5333 \\ gemma4:12bNormalized: 0.2400 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3000 \\ averageNormalized: 0.3486 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2025-12-26-01l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-02-13-00t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-03-12-00f.png}\\[2mm]
% 2025-12-26-01l.png, 2026-02-13-00t.png, 2026-03-12-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2025-12-26-01l.png} \\ llava:7b: 0.4800 \\ llava:7bWithoutUnsure: 0.4000 \\ gemma4:12b: 0.2167 \\ gemma4:12bWithoutUnsure: 0.2167 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2500 \\ qwen3-vl:8bWithoutUnsure: 0.2500 \\ llava:7bNormalized: 0.5333 \\ gemma4:12bNormalized: 0.2600 \\ qwen3-vl:8bNormalized: 0.3571 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2917 \\ averageNormalized: 0.3357 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-02-13-00t.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.6667 \\ gemma4:12bWithoutUnsure: 0.6667 \\ ministral-3:8b: 0.7000 \\ ministral-3:8bWithoutUnsure: 0.7000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.8000 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.9615 \\ average: 0.5167 \\ averageNormalized: 0.6785 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-03-12-00f.png} \\ llava:7b: 0.4750 \\ llava:7bWithoutUnsure: 0.2500 \\ gemma4:12b: 0.6833 \\ gemma4:12bWithoutUnsure: 0.6833 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.3333 \\ gemma4:12bNormalized: 0.8200 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3583 \\ averageNormalized: 0.4078 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-03-28-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-03-28-01f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-04-01-00f.png}\\[2mm]
% 2026-03-28-00f.png, 2026-03-28-01f.png, 2026-04-01-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-03-28-00f.png} \\ llava:7b: 0.5100 \\ llava:7bWithoutUnsure: 0.5500 \\ gemma4:12b: 0.7667 \\ gemma4:12bWithoutUnsure: 0.7667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.7333 \\ gemma4:12bNormalized: 0.9200 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.4792 \\ averageNormalized: 0.5686 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-03-28-01f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.1333 \\ gemma4:12bWithoutUnsure: 0.1333 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.1600 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.2583 \\ averageNormalized: 0.2781 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-04-01-00f.png} \\ llava:7b: 0.5250 \\ llava:7bWithoutUnsure: 0.7500 \\ gemma4:12b: 0.3667 \\ gemma4:12bWithoutUnsure: 0.3667 \\ ministral-3:8b: 0.2800 \\ ministral-3:8bWithoutUnsure: 0.2800 \\ qwen3-vl:8b: 0.4000 \\ qwen3-vl:8bWithoutUnsure: 0.4000 \\ llava:7bNormalized: 1.0000 \\ gemma4:12bNormalized: 0.4400 \\ qwen3-vl:8bNormalized: 0.5714 \\ ministral-3:8bNormalized: 0.1538 \\ average: 0.4492 \\ averageNormalized: 0.5413 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-04-01-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-04-01-00t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-04-02-00f.png}\\[2mm]
% 2026-04-01-00l.png, 2026-04-01-00t.png, 2026-04-02-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-04-01-00l.png} \\ llava:7b: 0.4550 \\ llava:7bWithoutUnsure: 0.3500 \\ gemma4:12b: 0.4000 \\ gemma4:12bWithoutUnsure: 0.4000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.4667 \\ gemma4:12bNormalized: 0.4800 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3375 \\ averageNormalized: 0.3919 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-04-01-00t.png} \\ llava:7b: 0.5400 \\ llava:7bWithoutUnsure: 0.6333 \\ gemma4:12b: 0.7500 \\ gemma4:12bWithoutUnsure: 0.7500 \\ ministral-3:8b: 0.2900 \\ ministral-3:8bWithoutUnsure: 0.2900 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.8444 \\ gemma4:12bNormalized: 0.9000 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1731 \\ average: 0.4933 \\ averageNormalized: 0.5865 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-04-02-00f.png} \\ llava:7b: 0.4850 \\ llava:7bWithoutUnsure: 0.4250 \\ gemma4:12b: 0.4333 \\ gemma4:12bWithoutUnsure: 0.4000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.5667 \\ gemma4:12bNormalized: 0.4800 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3563 \\ averageNormalized: 0.4169 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-04-02-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-04-06-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-04-06-01f.png}\\[2mm]
% 2026-04-02-00l.png, 2026-04-06-00f.png, 2026-04-06-01f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-04-02-00l.png} \\ llava:7b: 0.5150 \\ llava:7bWithoutUnsure: 0.5500 \\ gemma4:12b: 0.6667 \\ gemma4:12bWithoutUnsure: 0.6667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.7333 \\ gemma4:12bNormalized: 0.8000 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.4292 \\ averageNormalized: 0.5028 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-04-06-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.6000 \\ gemma4:12bWithoutUnsure: 0.6000 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.7200 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.4250 \\ averageNormalized: 0.5019 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-04-06-01f.png} \\ llava:7b: 0.4590 \\ llava:7bWithoutUnsure: 0.4317 \\ gemma4:12b: 0.0000 \\ gemma4:12bWithoutUnsure: 0.0000 \\ ministral-3:8b: 0.2200 \\ ministral-3:8bWithoutUnsure: 0.2200 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.5756 \\ gemma4:12bNormalized: 0.0000 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.0385 \\ average: 0.2129 \\ averageNormalized: 0.2249 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-04-20-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-04-30-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-05-01-00f.png}\\[2mm]
% 2026-04-20-00f.png, 2026-04-30-00f.png, 2026-05-01-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-04-20-00f.png} \\ llava:7b: 0.4800 \\ llava:7bWithoutUnsure: 0.3000 \\ gemma4:12b: 0.2667 \\ gemma4:12bWithoutUnsure: 0.2667 \\ ministral-3:8b: 0.2900 \\ ministral-3:8bWithoutUnsure: 0.2900 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.4000 \\ gemma4:12bNormalized: 0.3200 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1731 \\ average: 0.2892 \\ averageNormalized: 0.3304 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-04-30-00f.png} \\ llava:7b: 0.4975 \\ llava:7bWithoutUnsure: 0.4917 \\ gemma4:12b: 0.3667 \\ gemma4:12bWithoutUnsure: 0.3667 \\ ministral-3:8b: 0.2000 \\ ministral-3:8bWithoutUnsure: 0.2000 \\ qwen3-vl:8b: 0.4000 \\ qwen3-vl:8bWithoutUnsure: 0.4000 \\ llava:7bNormalized: 0.6556 \\ gemma4:12bNormalized: 0.4400 \\ qwen3-vl:8bNormalized: 0.5714 \\ ministral-3:8bNormalized: 0.0000 \\ average: 0.3646 \\ averageNormalized: 0.4167 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-05-01-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.2667 \\ gemma4:12bWithoutUnsure: 0.1500 \\ ministral-3:8b: 0.2100 \\ ministral-3:8bWithoutUnsure: 0.2100 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.1800 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.0192 \\ average: 0.2650 \\ averageNormalized: 0.2879 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-05-01-00t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-05-08-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-05-08-00l.png}\\[2mm]
% 2026-05-01-00t.png, 2026-05-08-00f.png, 2026-05-08-00l.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-05-01-00t.png} \\ llava:7b: 0.5050 \\ llava:7bWithoutUnsure: 0.5167 \\ gemma4:12b: 0.6833 \\ gemma4:12bWithoutUnsure: 0.6833 \\ ministral-3:8b: 0.7000 \\ ministral-3:8bWithoutUnsure: 0.7000 \\ qwen3-vl:8b: 0.4000 \\ qwen3-vl:8bWithoutUnsure: 0.4000 \\ llava:7bNormalized: 0.6889 \\ gemma4:12bNormalized: 0.8200 \\ qwen3-vl:8bNormalized: 0.5714 \\ ministral-3:8bNormalized: 0.9615 \\ average: 0.5750 \\ averageNormalized: 0.7605 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-05-08-00f.png} \\ llava:7b: 0.4900 \\ llava:7bWithoutUnsure: 0.4500 \\ gemma4:12b: 0.5833 \\ gemma4:12bWithoutUnsure: 0.5833 \\ ministral-3:8b: 0.2200 \\ ministral-3:8bWithoutUnsure: 0.2200 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.6000 \\ gemma4:12bNormalized: 0.7000 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.0385 \\ average: 0.3633 \\ averageNormalized: 0.4060 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-05-08-00l.png} \\ llava:7b: 0.4700 \\ llava:7bWithoutUnsure: 0.2000 \\ gemma4:12b: 0.4667 \\ gemma4:12bWithoutUnsure: 0.4667 \\ ministral-3:8b: 0.2700 \\ ministral-3:8bWithoutUnsure: 0.2700 \\ qwen3-vl:8b: 0.4000 \\ qwen3-vl:8bWithoutUnsure: 0.4000 \\ llava:7bNormalized: 0.2667 \\ gemma4:12bNormalized: 0.5600 \\ qwen3-vl:8bNormalized: 0.5714 \\ ministral-3:8bNormalized: 0.1346 \\ average: 0.3342 \\ averageNormalized: 0.3832 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-05-08-02t.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-05-09-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-05-16-00f.png}\\[2mm]
% 2026-05-08-02t.png, 2026-05-09-00f.png, 2026-05-16-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-05-08-02t.png} \\ llava:7b: 0.4750 \\ llava:7bWithoutUnsure: 0.2500 \\ gemma4:12b: 0.4667 \\ gemma4:12bWithoutUnsure: 0.4667 \\ ministral-3:8b: 0.7000 \\ ministral-3:8bWithoutUnsure: 0.7000 \\ qwen3-vl:8b: 0.1000 \\ qwen3-vl:8bWithoutUnsure: 0.1000 \\ llava:7bNormalized: 0.3333 \\ gemma4:12bNormalized: 0.5600 \\ qwen3-vl:8bNormalized: 0.1429 \\ ministral-3:8bNormalized: 0.9615 \\ average: 0.3792 \\ averageNormalized: 0.4994 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-05-09-00f.png} \\ llava:7b: 0.4900 \\ llava:7bWithoutUnsure: 0.4000 \\ gemma4:12b: 0.6833 \\ gemma4:12bWithoutUnsure: 0.6833 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.5333 \\ gemma4:12bNormalized: 0.8200 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3958 \\ averageNormalized: 0.4578 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-05-16-00f.png} \\ llava:7b: 0.5200 \\ llava:7bWithoutUnsure: 0.7000 \\ gemma4:12b: 0.6000 \\ gemma4:12bWithoutUnsure: 0.6000 \\ ministral-3:8b: 0.2200 \\ ministral-3:8bWithoutUnsure: 0.2200 \\ qwen3-vl:8b: 0.4000 \\ qwen3-vl:8bWithoutUnsure: 0.4000 \\ llava:7bNormalized: 0.9333 \\ gemma4:12bNormalized: 0.7200 \\ qwen3-vl:8bNormalized: 0.5714 \\ ministral-3:8bNormalized: 0.0385 \\ average: 0.4800 \\ averageNormalized: 0.5658 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-05-16-01f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-05-22-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-05-25-00f.png}\\[2mm]
% 2026-05-16-01f.png, 2026-05-22-00f.png, 2026-05-25-00f.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-05-16-01f.png} \\ llava:7b: 0.4850 \\ llava:7bWithoutUnsure: 0.3500 \\ gemma4:12b: 0.7667 \\ gemma4:12bWithoutUnsure: 0.7667 \\ ministral-3:8b: 0.2200 \\ ministral-3:8bWithoutUnsure: 0.2200 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.4667 \\ gemma4:12bNormalized: 0.9200 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.0385 \\ average: 0.3842 \\ averageNormalized: 0.4277 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-05-22-00f.png} \\ llava:7b: 0.5000 \\ llava:7bWithoutUnsure: 0.5000 \\ gemma4:12b: 0.5667 \\ gemma4:12bWithoutUnsure: 0.5667 \\ ministral-3:8b: 0.2800 \\ ministral-3:8bWithoutUnsure: 0.2800 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.6667 \\ gemma4:12bNormalized: 0.6800 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1538 \\ average: 0.3867 \\ averageNormalized: 0.4466 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-05-25-00f.png} \\ llava:7b: 0.4900 \\ llava:7bWithoutUnsure: 0.4000 \\ gemma4:12b: 0.5667 \\ gemma4:12bWithoutUnsure: 0.5667 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.2000 \\ qwen3-vl:8bWithoutUnsure: 0.2000 \\ llava:7bNormalized: 0.5333 \\ gemma4:12bNormalized: 0.6800 \\ qwen3-vl:8bNormalized: 0.2857 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.3667 \\ averageNormalized: 0.4228 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{ccc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-06-04-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-06-04-00l.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-06-04-00t.png}\\[2mm]
% 2026-06-04-00f.png, 2026-06-04-00l.png, 2026-06-04-00t.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-06-04-00f.png} \\ llava:7b: 0.4800 \\ llava:7bWithoutUnsure: 0.3000 \\ gemma4:12b: 0.3333 \\ gemma4:12bWithoutUnsure: 0.3333 \\ ministral-3:8b: 0.2900 \\ ministral-3:8bWithoutUnsure: 0.2900 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.4000 \\ gemma4:12bNormalized: 0.4000 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1731 \\ average: 0.3058 \\ averageNormalized: 0.3504 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-06-04-00l.png} \\ llava:7b: 0.4600 \\ llava:7bWithoutUnsure: 0.3000 \\ gemma4:12b: 0.2500 \\ gemma4:12bWithoutUnsure: 0.2500 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.4000 \\ gemma4:12bNormalized: 0.3000 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.2875 \\ averageNormalized: 0.3302 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-06-04-00t.png} \\ llava:7b: 0.4900 \\ llava:7bWithoutUnsure: 0.4000 \\ gemma4:12b: 0.7333 \\ gemma4:12bWithoutUnsure: 0.7333 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.4000 \\ qwen3-vl:8bWithoutUnsure: 0.4000 \\ llava:7bNormalized: 0.5333 \\ gemma4:12bNormalized: 0.8800 \\ qwen3-vl:8bNormalized: 0.5714 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.4583 \\ averageNormalized: 0.5443 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\begin{tabular}{cc}
\includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-06-17-00f.png} & \includegraphics[height=5cm]{/home/tomasr/kdrive/Code/Calvilo/Images/2026-06-17-00t.png}\\[2mm]
% 2026-06-17-00f.png, 2026-06-17-00t.png
\begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-06-17-00f.png} \\ llava:7b: 0.4700 \\ llava:7bWithoutUnsure: 0.3500 \\ gemma4:12b: 0.7167 \\ gemma4:12bWithoutUnsure: 0.7167 \\ ministral-3:8b: 0.3000 \\ ministral-3:8bWithoutUnsure: 0.3000 \\ qwen3-vl:8b: 0.3000 \\ qwen3-vl:8bWithoutUnsure: 0.3000 \\ llava:7bNormalized: 0.4667 \\ gemma4:12bNormalized: 0.8600 \\ qwen3-vl:8bNormalized: 0.4286 \\ ministral-3:8bNormalized: 0.1923 \\ average: 0.4167 \\ averageNormalized: 0.4869 \end{minipage} & \begin{minipage}[t]{4cm}\ttfamily\tiny \texttt{\tiny 2026-06-17-00t.png} \\ llava:7b: 0.4450 \\ llava:7bWithoutUnsure: 0.3167 \\ gemma4:12b: 0.6333 \\ gemma4:12bWithoutUnsure: 0.7000 \\ ministral-3:8b: 0.3800 \\ ministral-3:8bWithoutUnsure: 0.3800 \\ qwen3-vl:8b: 0.1000 \\ qwen3-vl:8bWithoutUnsure: 0.1000 \\ llava:7bNormalized: 0.4222 \\ gemma4:12bNormalized: 0.8400 \\ qwen3-vl:8bNormalized: 0.1429 \\ ministral-3:8bNormalized: 0.3462 \\ average: 0.3742 \\ averageNormalized: 0.4378 \end{minipage}\\
\end{tabular}
\vspace{5mm}
\end{document}
File diff suppressed because one or more lines are too long
View File
+163
View File
@@ -0,0 +1,163 @@
from tinydb import Query, TinyDB
from logging import getLogger
from base64 import b64encode
from requests import post, get, RequestException
import subprocess
import time
from os import listdir, path
from re import search
logger = getLogger("hairloss")
OLLAMA_URL = "http://localhost:11434"
PROMPT = """
Think
You are a visual estimator of scalp hair density.
You will be given:
an image
an angle label: "top", "lateral", or "face"
Angle meaning:
top: evaluate crown/vertex only
lateral: evaluate temple recession and side density
face: evaluate frontal hairline and symmetry
Task:
Estimate hair loss severity as a continuous value between 0.0 and 1.0.
Scoring meaning:
0.0 → full dense hair
0.5 → moderate thinning / visible scalp
1.0 → severe hair loss
Guidelines:
Use only visible evidence in the image.
Be robust to lighting and hairstyle, but consider scalp visibility.
Only evaluate regions that are visible from the given angle.
If a region is not visible, do not infer it.
If image quality is unclear:
use a neutral estimate based on visible areas (do not guess extremes)
Output:
Return ONLY a single float between 0.0 and 1.0.
No text, no explanation, no punctuation.
"""
def prepareModel(timeout: int = 15):
try:
get(f"{OLLAMA_URL}/api/tags", timeout=2)
logger.info("Ollama already running")
return
except RequestException:
logger.info("Ollama not running, starting server...")
subprocess.Popen(
["ollama", "serve"],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
)
start = time.time()
while time.time() - start < timeout:
try:
get(f"{OLLAMA_URL}/api/tags", timeout=2)
logger.info("Ollama server started")
return
except RequestException:
time.sleep(1)
raise RuntimeError("Failed to start Ollama server")
def evaluate(image_path: str, model: str, repetitions: int = 10, timeOut: int = 10):
db = TinyDB(path.abspath(path.join(image_path, "../hairlineResults.json")))
q = Query()
prepareModel()
for image in listdir(image_path):
oldInfo = db.get(q.filename == image)
if model in oldInfo.keys():
logger.info(f"Skipping evaluation {image} with {model}...")
continue
logger.info(f"Evaluating {image} with model {model} {repetitions} times.")
with open(path.join(image_path, image), "rb") as f:
imageb64 = b64encode(f.read()).decode("utf-8")
average = 0
averageWithoutUnsure = 0
averageWithoutUnsureCount = 0
if "f" in image:
angle = "face"
elif "l" in image:
angle = "lateral"
elif "t" in image:
angle = "top"
else:
raise ValueError(f"no angle information in filename {image}")
imagePrompt = PROMPT + f"\nlabel:\"{angle}\""
for i in range(repetitions): # we ask multiple times and get the average response
response = post(
f"{OLLAMA_URL}/api/generate",
json={
"model": model,
"prompt": imagePrompt,
"images": [imageb64],
"stream": False,
"thinking": model != "qwen3-vl:8b" # for some reason this model thinkgs so much, that it spends all it's tokens on thinking and None in output...
},
timeout=timeOut,
)
response.raise_for_status()
logger.debug(response.json())
result = search(r"^(0(?:\.\d+)?|1(?:\.0+)?)$", response.json()["response"].strip())
logger.debug(result)
if result == None:
result = 0.5
else:
data = float(search(r"^(0(?:\.\d+)?|1(?:\.0+)?)$", response.json()["response"].strip()).group(1)) # extract the float in case it outputed some text
if data != 0.5: # if the model is uncertain it should return 0.5
averageWithoutUnsure += data
averageWithoutUnsureCount += 1
average += data
average /= repetitions
if averageWithoutUnsureCount != 0: # avoids case where all repetitions are unsure
averageWithoutUnsure /= averageWithoutUnsureCount
else:
averageWithoutUnsure = 0.5
if db.contains(q.filename == image): # we add the result to a database. It allows to do everything in multiple runs and combine results from multiple models
imageResult = db.get(q.filename == image)
imageResult[model] = average
imageResult[model+"WithoutUnsure"] = averageWithoutUnsure
db.upsert(imageResult, q.filename == image)
else:
imageResult = {
"filename": image,
model: average,
model + "WithoutUnsure": averageWithoutUnsure
}
db.upsert(imageResult, q.filename == image)
logger.info("Normalizing values ...")
# normalise values
maxValue = max(image[model + "WithoutUnsure"] for image in db)
minValue = min(image[model + "WithoutUnsure"] for image in db)
for image in listdir(image_path):
unnormalizedValues = db.get(q.filename == image)
unnormalizedValues[model+"Normalized"] = (unnormalizedValues[model+"WithoutUnsure"] - minValue)/(maxValue - minValue)
db.upsert(unnormalizedValues, q.filename == image)
logger.info("Stopping model...")
subprocess.Popen(
["ollama", "stop", model],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
)
+101
View File
@@ -0,0 +1,101 @@
from tinydb import TinyDB
from pathlib import Path
def gallery(image_path):
DB_FILE = Path(image_path).parent / "hairlineResults.json"
OUTPUT_TEX = "gallery.tex"
IMAGE_DIR = Path(image_path)
IMAGES_PER_ROW = 3
IMAGE_HEIGHT = "5cm"
db = TinyDB(DB_FILE)
entries = sorted(db.all(), key=lambda x: x["filename"])
def latex_escape(s):
return (
str(s)
.replace("\\", "\\textbackslash{}")
.replace("_", "\\_")
.replace("&", "\\&")
.replace("%", "\\%")
.replace("#", "\\#")
.replace("{", "\\{")
.replace("}", "\\}")
)
with open(OUTPUT_TEX, "w", encoding="utf8") as f:
f.write(r"""\documentclass[a4paper]{article}
\usepackage[a4paper,margin=1cm]{geometry}
\usepackage{graphicx}
\usepackage{array}
\usepackage{longtable}
\usepackage{float}
\usepackage{grffile}
\usepackage[T1]{fontenc}
\pagestyle{empty}
\setlength{\parindent}{0pt}
\begin{document}
""")
for i in range(0, len(entries), IMAGES_PER_ROW):
row = entries[i:i + IMAGES_PER_ROW]
cols = "c" * len(row)
f.write(r"\begin{tabular}{" + cols + "}\n")
#
# Images
#
image_cells = []
for e in row:
img_path = Path(IMAGE_DIR) / e["filename"]
image_cells.append(
rf"\includegraphics[height={IMAGE_HEIGHT}]{{{img_path.as_posix()}}}"
)
f.write(" & ".join(image_cells) + r"\\[2mm]" + "\n")
# LaTeX comment with filenames
f.write("% " + ", ".join(e["filename"] for e in row) + "\n")
#
# Text cells (FIXED)
#
text_cells = []
for e in row:
lines = []
lines.append(rf"\texttt{{\tiny {latex_escape(e['filename'])}}}")
for k, v in e.items():
if k == "filename":
continue
if isinstance(v, float):
lines.append(f"{latex_escape(k)}: {v:.4f}")
else:
lines.append(f"{latex_escape(k)}: {latex_escape(v)}")
cell = (
r"\begin{minipage}[t]{4cm}\ttfamily\tiny "
+ r" \\ ".join(lines)
+ r" \end{minipage}"
)
text_cells.append(cell)
f.write(" & ".join(text_cells) + r"\\" + "\n")
f.write(r"\end{tabular}")
f.write("\n\n\\vspace{5mm}\n\n")
f.write(r"\end{document}")
+157
View File
@@ -0,0 +1,157 @@
from tinydb import Query, TinyDB
from pathlib import Path
import os
import argparse
import logging
logger = logging.getLogger("hairloss")
from datetime import date
from .evaluate import *
from .visuals import *
from .gallery import *
models = ["llava:7b", "gemma4:12b", "qwen3-vl:8b", "ministral-3:8b"]
def main():
parser = argparse.ArgumentParser()
parser.add_argument("--verbose", action="store_true", help="Enable debug logging")
parser.add_argument("--generate_with_llava", action="store_true", help="Generate values with llava:7b")
parser.add_argument("--generate_with_gemma", action="store_true", help="Generate values with gemma4:12b")
parser.add_argument("--generate_with_qwen", action="store_true", help="Generate values with qwen3-vl:8b")
parser.add_argument("--generate_with_ministral", action="store_true", help="Generate values with ministral-3:8b")
parser.add_argument("--generate_averages", action="store_true", help="Generate averages values")
parser.add_argument("--generate_gallery", action="store_true", help="Generate gallery")
parser.add_argument("--generate_visuals", action="store_true", help="Graph the values in multiple plots.")
args = parser.parse_args()
logging.basicConfig(
level=logging.DEBUG if args.verbose else logging.INFO,
format="%(asctime)s [%(levelname)s] %(message)s"
)
IMAGES = Path(os.environ.get("HAIRLOSS_IMAGES", "Images")) or Path("./Images")
if args.generate_with_llava:
evaluate(IMAGES, "llava:7b", 10, 10)
if args.generate_with_gemma:
evaluate(IMAGES, "gemma4:12b", 3, 90) # gemma takes much more time as it use thinking, so we reduce the repetitions
if args.generate_with_qwen:
evaluate(IMAGES, "qwen3-vl:8b", 1, 180)
if args.generate_with_ministral:
evaluate(IMAGES, "ministral-3:8b", 10, 10)
if args.generate_averages:
db = TinyDB(path.abspath(path.join(IMAGES, "../hairlineResults.json")))
q = Query()
# average
for image in db:
sumModels = 0
sumModelsNormalized = 0
for key in image.keys():
if key in models:
sumModels += image[key + "WithoutUnsure"]
sumModelsNormalized += image[key + "Normalized"]
image["average"] = sumModels/len(models)
image["averageNormalized"] = sumModelsNormalized/len(models)
logger.info(f"Image {image["filename"]}: average = {str(image["average"])} averageNormalized = {str(image["averageNormalized"])}")
db.upsert(image, q.filename == image)
if args.generate_gallery:
gallery(IMAGES)
if args.generate_visuals:
# args are models, withClean, withNormalized, withRaw, image_path, filepath, doSave, doShow, doRegression, doCorrelation, angle (array of "t", "f" and "l")
# all angles
plotHairline(["llava:7b", "gemma4:12b", "qwen3-vl:8b", "ministral-3:8b"], False, False, True, IMAGES, "rawDataAllModelsAllAngles.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t", "f", "l"], False, False)
plotHairline(["llava:7b", "gemma4:12b", "qwen3-vl:8b", "ministral-3:8b"], True, False, False, IMAGES, "withCleanDataAllModelsAllAngles.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t", "f", "l"], False, False)
plotHairline(["llava:7b", "gemma4:12b", "qwen3-vl:8b", "ministral-3:8b"], False, True, False, IMAGES, "withNormalizedAllModelsAllAngles.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t", "f", "l"], False, False)
plotHairline(["llava:7b"], True, False, True, IMAGES, "dataLlavaAllAngles.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t", "f", "l"], False, False)
plotHairline(["gemma4:12b"], True, False, True, IMAGES, "dataGemmaAllAngles.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t", "f", "l"], False, False)
plotHairline(["qwen3-vl:8b"], True, False, True, IMAGES, "dataQwenAllAngles.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t", "f", "l"], False, False)
plotHairline(["ministral-3:8b"], True, False, True, IMAGES, "dataMinistralAllAngles.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t", "f", "l"], False, False)
plotHairline(["ministral-3:8b"], True, True, False, IMAGES, "dataMinistralNormalizedAllAngles.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t", "f", "l"], False, False)
plotHairline(["llava:7b"], True, True, False, IMAGES, "dataLLavaNormalizedAllAngles.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t", "f", "l"], False, False)
plotHairline(["gemma4:12b"], True, True, False, IMAGES, "dataGemmaNormalizedAllAngles.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t", "f", "l"], False, False)
plotHairline(["qwen3-vl:8b"], True, True, False, IMAGES, "dataQwenNormalizedAllAngles.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t", "f", "l"], False, False)
plotHairline(["average"], False, True, False, IMAGES, "dataAverageNormalizedAllAngles.pdf", True, False, True, True, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t", "f", "l"], False, False)
plotHairline(["average"], False, False, True, IMAGES, "dataAverageAllAngles.pdf", True, False, True, True, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t", "f", "l"], False, False)
# top angle
plotHairline(["llava:7b", "gemma4:12b", "qwen3-vl:8b", "ministral-3:8b"], False, False, True, IMAGES, "rawDataAllModelsTopAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t"], False, False)
plotHairline(["llava:7b", "gemma4:12b", "qwen3-vl:8b", "ministral-3:8b"], True, False, False, IMAGES, "withCleanDataAllModelsTopAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t"], False, False)
plotHairline(["llava:7b", "gemma4:12b", "qwen3-vl:8b", "ministral-3:8b"], False, True, False, IMAGES, "withNormalizedAllModelsTopAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t"], False, False)
plotHairline(["llava:7b"], True, False, True, IMAGES, "dataLlavaTopAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t"], False, False)
plotHairline(["gemma4:12b"], True, False, True, IMAGES, "dataGemmaTopAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t"], False, False)
plotHairline(["qwen3-vl:8b"], True, False, True, IMAGES, "dataQwenTopAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t"], False, False)
plotHairline(["ministral-3:8b"], True, False, True, IMAGES, "dataMinistralTopAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t"], False, False)
plotHairline(["ministral-3:8b"], True, True, False, IMAGES, "dataMinistralNormalizedTopAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t"], False, False)
plotHairline(["llava:7b"], True, True, False, IMAGES, "dataLLavaNormalizedTopAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t"], False, False)
plotHairline(["gemma4:12b"], True, True, False, IMAGES, "dataGemmaNormalizedTopAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t"], False, False)
plotHairline(["qwen3-vl:8b"], True, True, False, IMAGES, "dataQwenNormalizedTopAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t"], False, False)
plotHairline(["average"], False, True, False, IMAGES, "dataAverageNormalizedTopAngle.pdf", True, False, True, True, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t"], False, False)
plotHairline(["average"], False, False, True, IMAGES, "dataAverageTopAngle.pdf", True, False, True, True, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["t"], False, False)
# face angle
plotHairline(["llava:7b", "gemma4:12b", "qwen3-vl:8b", "ministral-3:8b"], False, False, True, IMAGES, "rawDataAllModelsFaceAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f"], False, False)
plotHairline(["llava:7b", "gemma4:12b", "qwen3-vl:8b", "ministral-3:8b"], True, False, False, IMAGES, "withCleanDataAllModelsFaceAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f"], False, False)
plotHairline(["llava:7b", "gemma4:12b", "qwen3-vl:8b", "ministral-3:8b"], False, True, False, IMAGES, "withNormalizedAllModelsFaceAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f"], False, False)
plotHairline(["llava:7b"], True, False, True, IMAGES, "dataLlavaFaceAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f"], False, False)
plotHairline(["gemma4:12b"], True, False, True, IMAGES, "dataGemmaFaceAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f"], False, False)
plotHairline(["qwen3-vl:8b"], True, False, True, IMAGES, "dataQwenFaceAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f"], False, False)
plotHairline(["ministral-3:8b"], True, False, True, IMAGES, "dataMinistralFaceAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f"], False, False)
plotHairline(["ministral-3:8b"], True, True, False, IMAGES, "dataMinistralNormalizedFaceAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f"], False, False)
plotHairline(["llava:7b"], True, True, False, IMAGES, "dataLLavaNormalizedFaceAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f"], False, False)
plotHairline(["gemma4:12b"], True, True, False, IMAGES, "dataGemmaNormalizedFaceAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f"], False, False)
plotHairline(["qwen3-vl:8b"], True, True, False, IMAGES, "dataQwenNormalizedFaceAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f"], False, False)
plotHairline(["average"], False, True, False, IMAGES, "dataAverageNormalizedFaceAngle.pdf", True, False, True, True, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f"], False, False)
plotHairline(["average"], False, False, True, IMAGES, "dataAverageFaceAngle.pdf", True, False, True, True, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f"], False, False)
# lateral angle
plotHairline(["llava:7b", "gemma4:12b", "qwen3-vl:8b", "ministral-3:8b"], False, False, True, IMAGES, "rawDataAllModelsLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["l"], False, False)
plotHairline(["llava:7b", "gemma4:12b", "qwen3-vl:8b", "ministral-3:8b"], True, False, False, IMAGES, "withCleanDataAllModelsLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["l"], False, False)
plotHairline(["llava:7b", "gemma4:12b", "qwen3-vl:8b", "ministral-3:8b"], False, True, False, IMAGES, "withNormalizedAllModelsLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["l"], False, False)
plotHairline(["llava:7b"], True, False, True, IMAGES, "dataLlavaLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["l"], False, False)
plotHairline(["gemma4:12b"], True, False, True, IMAGES, "dataGemmaLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["l"], False, False)
plotHairline(["qwen3-vl:8b"], True, False, True, IMAGES, "dataQwenLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["l"], False, False)
plotHairline(["ministral-3:8b"], True, False, True, IMAGES, "dataMinistralLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["l"], False, False)
plotHairline(["ministral-3:8b"], True, True, False, IMAGES, "dataMinistralNormalizedLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["l"], False, False)
plotHairline(["llava:7b"], True, True, False, IMAGES, "dataLLavaNormalizedLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["l"], False, False)
plotHairline(["gemma4:12b"], True, True, False, IMAGES, "dataGemmaNormalizedLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["l"], False, False)
plotHairline(["qwen3-vl:8b"], True, True, False, IMAGES, "dataQwenNormalizedLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["l"], False, False)
plotHairline(["average"], False, True, False, IMAGES, "dataAverageNormalizedLateralAngle.pdf", True, False, True, True, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["l"], False, False)
plotHairline(["average"], False, False, True, IMAGES, "dataAverageLateralAngle.pdf", True, False, True, True, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["l"], False, False)
# stress inducing factor since 2023-09-11 (ex: sickness, work or in this case being near an anoying person) to see if there was an influence on the hair loss
plotHairline(["average"], False, True, False, IMAGES, "dataAverageNormalizedSince2023-09-11AllAngles.pdf", True, False, True, True, date.fromisoformat("2023-09-11"), date.fromisoformat("2050-01-01"), ["t", "f", "l"], False, False)
plotHairline(["average"], False, True, False, IMAGES, "dataAverageNormalizedSince2023-09-11TopAngles.pdf", True, False, True, True, date.fromisoformat("2023-09-11"), date.fromisoformat("2050-01-01"), ["t"], False, False)
plotHairline(["average"], False, True, False, IMAGES, "dataAverageNormalizedSince2023-09-11FaceAngles.pdf", True, False, True, True, date.fromisoformat("2023-09-11"), date.fromisoformat("2050-01-01"), ["f"], False, False)
plotHairline(["average"], False, True, False, IMAGES, "dataAverageNormalizedSince2023-09-11LateralAngles.pdf", True, False, True, True, date.fromisoformat("2023-09-11"), date.fromisoformat("2050-01-01"), ["l"], False, False)
# from our testing top is a less reliable angle
# top and lateral angle
plotHairline(["llava:7b", "gemma4:12b", "qwen3-vl:8b", "ministral-3:8b"], False, False, True, IMAGES, "rawDataAllModelsFaceAndLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f","l"], False, False)
plotHairline(["llava:7b", "gemma4:12b", "qwen3-vl:8b", "ministral-3:8b"], True, False, False, IMAGES, "withCleanDataAllModelsFaceAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f","l"], False, False)
plotHairline(["llava:7b", "gemma4:12b", "qwen3-vl:8b", "ministral-3:8b"], False, True, False, IMAGES, "withNormalizedAllModelsFaceAndLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f","l"], False, False)
plotHairline(["llava:7b"], True, False, True, IMAGES, "dataLlavaFaceAndLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f","l"], False, False)
plotHairline(["gemma4:12b"], True, False, True, IMAGES, "dataGemmaFaceAndLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f","l"], False, False)
plotHairline(["qwen3-vl:8b"], True, False, True, IMAGES, "dataQwenFaceAndLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f","l"], False, False)
plotHairline(["ministral-3:8b"], True, False, True, IMAGES, "dataMinistralFaceAndLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f","l"], False, False)
plotHairline(["ministral-3:8b"], True, True, False, IMAGES, "dataMinistralNormalizedFaceAndLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f","l"], False, False)
plotHairline(["llava:7b"], True, True, False, IMAGES, "dataLLavaNormalizedFaceAndLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f","l"], False, False)
plotHairline(["gemma4:12b"], True, True, False, IMAGES, "dataGemmaNormalizedFaceAndLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f","l"], False, False)
plotHairline(["qwen3-vl:8b"], True, True, False, IMAGES, "dataQwenNormalizedFaceAndLateralAngle.pdf", True, False, False, False, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f","l"], False, False)
plotHairline(["average"], False, True, False, IMAGES, "dataAverageNormalizedFaceAndLateralAngle.pdf", True, False, True, True, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f","l"], False, False)
plotHairline(["average"], False, False, True, IMAGES, "dataAverageFaceAndLateralAngle.pdf", True, False, True, True, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f","l"], False, False)
plotHairline(["average"], False, True, False, IMAGES, "dataAverageNormalizedSince2023-09-11FaceAndLateralAngles.pdf", True, False, True, True, date.fromisoformat("2023-09-11"), date.fromisoformat("2050-01-01"), ["f","l"], False, False)
# final plots
plotHairline(["average"], False, True, False, IMAGES, "averagedDataAverageNormalizedFaceAndLateralAngle.pdf", True, False, True, True, date.fromisoformat("1983-04-01"), date.fromisoformat("2050-01-01"), ["f","l"], True, False)
plotHairline(["average"], False, True, False, IMAGES, "averagedDataAverageNormalizedSince2023-09-11FaceAndLateralAngles.pdf", True, False, True, True, date.fromisoformat("2023-09-11"), date.fromisoformat("2050-01-01"), ["f","l"], True, False)
+100
View File
@@ -0,0 +1,100 @@
from tinydb import TinyDB
from datetime import datetime
import matplotlib.pyplot as plt
from os import path
from scipy.stats import spearmanr
import numpy as np
from datetime import date
from logging import getLogger
logger = getLogger("hairloss")
def averageWithDates(dates, values): # average points with same date
dates = np.array(dates)
values = np.array(values)
datesUnique = np.unique(dates)
valuesUnique = np.array([values[dates == datesCopy].mean() for datesCopy in datesUnique])
return (datesUnique, valuesUnique)
def plotHairline(models: [str], withClean: bool, withNormalized: bool, withRaw: bool, image_path: str, filepath: str, doSave: bool, doShow: bool, doRegression: bool, doCorrelation: bool, start: date, end: date, angles: [str], doAverage: bool, doPlot: bool):
db = TinyDB(path.abspath(path.join(image_path, "../hairlineResults.json")))
if doPlot and (doRegression or doCorrelation):
raise ValueError("You can't use regression or correlation wit doPlot set to true.")
if doPlot and not doAverage:
raise ValueError("doPlot needs doAverage set to True")
databaseEntry = db.all()
filteredDatabaseEntry = []
for entry in databaseEntry:
# we filter by date
if start <= date.fromisoformat(entry["filename"][:10]) <= end:
# and by angles
for angleType in angles:
if angleType in entry["filename"]:
filteredDatabaseEntry.append(entry)
dates = [datetime.strptime(d["filename"][:10], "%Y-%m-%d") for d in filteredDatabaseEntry]
plt.figure(figsize=(12, 6))
if (doRegression or doCorrelation) and withClean + withNormalized + withRaw != 1:
raise ValueError(f"With doRegression or doCorrelation exaclty one of withClean, withNormalized or withRaw must be set to true")
values = []
# plot raw values
if withRaw:
for model in models:
values = [d[model] for d in filteredDatabaseEntry]
if doAverage:
dates, values = averageWithDates(dates, values)
if doPlot:
plt.plot(dates, values, label=model)
else:
plt.scatter(dates, values, label=model)
# plot without uncertain
if withClean:
for model in models:
key = model + "WithoutUnsure"
values = [d[key] for d in filteredDatabaseEntry]
if doAverage:
dates, values = averageWithDates(dates, values)
if doPlot:
plt.plot(dates, values, label=key)
else:
plt.scatter(dates, values, label=key)
if withNormalized:
for model in models:
key = model + "Normalized"
values = [d[key] for d in filteredDatabaseEntry]
if doAverage:
dates, values = averageWithDates(dates, values)
if doPlot:
plt.plot(dates, values, label=key)
else:
plt.scatter(dates, values, label=key)
if doCorrelation:
rho, p = spearmanr([d.toordinal() for d in dates], values)
plt.plot([], [], ' ', label=f"Correlation factor of {rho:-3f} (with p-value of {p:.3g})")
if doRegression:
x = np.array([d.toordinal() for d in dates])
m, b = np.polyfit(x, values, 1)
plt.plot(dates, m*x + b, label=f"Regression line y={m}*x + {b}")
plt.xlabel("Dates")
plt.ylabel("Baldness score")
plt.title(filepath)
plt.grid(True, alpha=0.3)
plt.legend()
plt.tight_layout()
if doShow:
plt.show()
if doSave:
plt.savefig(filepath, bbox_inches="tight")
plt.close()
+22
View File
@@ -0,0 +1,22 @@
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
[project]
name = "hairloss"
version = "0.1"
description = "Hairloss graph over time."
requires-python = ">=3.10"
dependencies = [
"tinydb",
"requests",
"matplotlib",
"numpy",
"scipy"
]
[project.scripts]
hairloss = "hairloss.main:main"
[tool.setuptools]
packages = ["hairloss"]
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More