AnomalyLISA : boosting a VLLM with LISA method and expert agents for Industrial Anomaly Detection
L'ensemble de ce dépôt dépeint un système multi-agent pour améliorer un chatbot dans la détection d'anomalie industriel (IAD).
L'architecture de ce système est constituée de plusieurs agents qui sont des IA experts dans leurs tâches qui sont orchestrés par un ordonnenceur.
Si la majorité des agents sont autonomes, l'ordonnenceur (pipeline) est le cerveau qui permet de faire fonctionner la globalité et de gérer les communications entre agents.
Un agent a la faculté d'exécuter une série de tâches en fonction d'informations et des consignes en entrée pour produire en sortie, des résultats et des paramètres.
Nous avons construit les différents agent qu'ils puissent êter totatelement indépendant et fonctionnel. De plus, ils peuvent s'utiliser soit en ligne de commande soit directement en Python.
Agent_SAM)L'agent SAM permet d'englober le fonctionnement de SAM afin de réaliser différentes tâches nécessaire tout le long du pipeline.
Agent SAM (pour plus de détail voir '§usage' :
git clone https://github.com/facebookresearch/segment-anything.git SAM
sed -i \"s/torch.load(f)/torch.load(f, weights_only=True)/g\" SAM/segment_anything/build_sam.py
python ia_sam.py -h
usage: AgentIA SAM [-h] [--logfile [LOGFILE]] [--savefile [SAVEFILE]] [--task {run,train,background}] [--nolog]
[--bbox BBOX] --input INPUT [--output [OUTPUT]] [--model-type {vit_h,vit_l,vit_b}]
[--checkpoint CHECKPOINT] [--device DEVICE]
command line SAM
options:
-h, --help show this help message and exit
--logfile [LOGFILE] sortie du programme
--savefile [SAVEFILE]
spécifie s'il faut sauvegarder. Si aucun fichier, alors nom par défaut
--task {run,train,background}
[défaut=run] tâche à accomplir par l'agent
--nolog désactive les log
--bbox BBOX coordonnées de la box au format [x_min, y_min, x_max, y_max]
--input INPUT chemin de l'image d'entrée
--output [OUTPUT] [défaut=results] chemin du dossier de sortie
--model-type {vit_h,vit_l,vit_b} =>"model_type" dans la variable **args**
[défaut=vit_h] modèle VIT de SAM [vit_h, vit_l, vit_b]
--checkpoint CHECKPOINT
[défaut=checkpoints] dossier où sont les poids de SAM
--device DEVICE [défaut=cpu] device où charger SAM [auto, cpu, cuda, torch_directml]
Exemples :
python ia_sam.py --input=dog.jpeg --model-type=vit_b --bbox=[65,250,631,940] --task run --savefile
python ia_sam.py --input=dog.jpeg --model-type=vit_b --bbox=[65,250,631,940] --task background --savefile
import ia_sam
args = {}
args["task"] = ...
agent = ia_sam.run_process(args)
agent.results
# agent.results["img_without_bg"]
# agent.results["mask"]
from ia_sam import Agent_SAM
args = {}
args["task"] = "background"
args["model_type"] = "vit_b"
args["input"] = "dogs.jpeg"
args["bbox"] = "[65,250,631,940]"
image_rgb = np.array(Image.open(args["input"]).convert("RGB"))
args["sam_img_in"] = image_rgb
agent = Agent_SAM(model_type=args["model_type"])
agent.run(args, mode=args["task"])
agent.save_results()
from ia_sam import Agent_SAM
args = {}
args["model_type"] = "vit_b"
args["task"] = "background"
args["input"] = "dog.jpeg"
args["bbox"] = "[65,250,631,940]"
agent = ia_sam.run_process(args)
agent.results
# agent.results["img_without_bg"]
# agent.results["mask"]
import numpy as np
from PIL import Image
from ia_sam import Agent_SAM
# 1- Préparation des arguments
args = {}
args["task"] = "background"
args["model_type"] = "vit_b"
args["input"] = "dogs.jpeg"
args["bbox"] = "[65,250,631,940]"
image_rgb = np.array(Image.open(args["input"]).convert("RGB"))
args["sam_img_in"] = image_rgb
# 2- Exécution
agent = Agent_SAM(model_type=args["model_type"])
agent.run(args, mode=args["task"])
agent.save_results()
Agent_LISA)L'agent LISA permet d'englober le fonctionnement de LISA, le LLM, afin de réaliser différentes tâches nécessaire tout le long du pipeline.
Agent LISA (pour plus de détail voir '§usage' :
conda create --name myenv_lisa python=3.10
conda activate myenv_lisa
python -m pip install --upgrade pip wheel setuptools
cd experiments/
git clone https://github.com/dvlab-research/LISA.git
python -m pip install -r LISA/requirements.txt
python -m pip install flash-attn==2.0.9 --no-build-isolation
conda deactivate
conda deactivate
Pour LISA++ :
conda activate myenv_lisa
python -m pip install scikit-learn
cd experiments/LISA/
git switch lisa_plus
conda deactivate
python ia_lisa.py -h
usage: AgentIA SAM [-h] [--logfile [LOGFILE]] [--savefile [SAVEFILE]] [--task {run,train,background}] [--nolog]
[--output [OUTPUT]] [--checkpoint CHECKPOINT] [--device DEVICE] --input_img INPUT_IMG
--input_prompt INPUT_PROMPT [--input_expert INPUT_EXPERT]
[--version {xinlai/LISA-7B-v1-explanatory,xinlai/LISA-13B-llama2-v1-explanatory,Senqiao/LISA_Plus_7b}]
[--precision {fp32,bf16,fp16}] [--image_size IMAGE_SIZE] [--load_in_8bit] [--load_in_4bit]
command line LISA
options:
-h, --help show this help message and exit
--logfile [LOGFILE] sortie du programme
--savefile [SAVEFILE]
spécifie s'il faut sauvegarder. Si aucun fichier, alors stdout sauf pour 'train'
--task {run,train,background}
[défaut=run] tâche à accomplir par l'agent
--nolog désactive les log
--output [OUTPUT] [défaut=results] chemin du dossier de sortie
--checkpoint CHECKPOINT
[défaut=checkpoints] dossier où sont les poids du modèle
--device DEVICE [défaut=cpu] device où charger SAM [auto, cpu, cuda, torch_directml]
--input_img INPUT_IMG
chemin de l'image d'entrée
--input_prompt INPUT_PROMPT
chemin du fichier prompt d'entrée
--input_expert INPUT_EXPERT
chemin du fichier prompt des experts
--version {xinlai/LISA-7B-v1-explanatory,xinlai/LISA-13B-llama2-v1-explanatory,Senqiao/LISA_Plus_7b}
[défaut=LISA7B] dépôt du modèle
--precision {fp32,bf16,fp16}
precision for inference
--image_size IMAGE_SIZE
image size
--load_in_8bit
--load_in_4bit
Exemples :
CUDA_VISIBLE_DEVICES=1 python ia_lisa.py --input_img=LISA/1466_2L1_cut.jpg --input_prompt "There is a defect ? Explain in details." --device cuda --savefile
CUDA_VISIBLE_DEVICES=1 python ia_lisa.py --input_img=../data/MMAD/MVTec-AD/carpet/test/cut/000.png --input_prompt ./user_prompt.txt --input_expert ./expert_prompt.txt --device cuda --savefile
import ia_lisa
args = {}
args["task"] = ...
agent = ia_lisa.run_process(args)
agent.results
# agent.results["text_output"]
# agent.results["pred_masks"]
from ia_lisa import Agent_LISA
args = {}
args["task"] = ...
agent = Agent_LISA(args)
agent.run(args)
agent.save_results()
import ia_lisa
from ia_lisa import Agent_SAM
# 1- Préparation des arguments
args = {}
args["input_prompt_str"] = "There is an defect ? explain in details"
args["input_expert_str"] = ""
args["version"] = ia_lisa.DEFAULT_LISA_MODEL
args["precision"] = "bf16"
args["image_size"] = 1024
args["load_in_8bit"] = False
args["load_in_4bit"] = False
args["model_max_length"] = ia_lisa.DEFAULT_LISA_MODEL_MAX_LENGTH
args["lora_r"] = ia_lisa.DEFAULT_LISA_MODEL_LORA
args["vision_tower"] = ia_lisa.DEFAULT_LISA_MODEL_VISION_TOWER
args["use_mm_start_end"] = ia_lisa.DEFAULT_LISA_MODEL_USE_MM_START_END
args["conv_type"] = ia_lisa.DEFAULT_LISA_MODEL_CONV_TYPE
args["device"] = ia_lisa.DEVICE_GLOBAL
image_rgb = np.array(Image.open(args["input_img"]).convert("RGB"))
args["sam_img_in"] = image_rgb
#local_arg["lisa_img_in"] = agent_sam.results["img_without_bg"]
# 2- Exécution
agent_lisa = Agent_LISA(args)
agent_lisa.run(args)
agent.save_results()
33 commits
Jupyter Notebook
96.3%
Python
3.6%
AnomalyLISA : boosting a VLLM with LISA method and expert agents for Industrial Anomaly Detection
L'ensemble de ce dépôt dépeint un système multi-agent pour améliorer un chatbot dans la détection d'anomalie industriel (IAD).
L'architecture de ce système est constituée de plusieurs agents qui sont des IA experts dans leurs tâches qui sont orchestrés par un ordonnenceur.
Si la majorité des agents sont autonomes, l'ordonnenceur (pipeline) est le cerveau qui permet de faire fonctionner la globalité et de gérer les communications entre agents.
Un agent a la faculté d'exécuter une série de tâches en fonction d'informations et des consignes en entrée pour produire en sortie, des résultats et des paramètres.
Nous avons construit les différents agent qu'ils puissent êter totatelement indépendant et fonctionnel. De plus, ils peuvent s'utiliser soit en ligne de commande soit directement en Python.
Agent_SAM)L'agent SAM permet d'englober le fonctionnement de SAM afin de réaliser différentes tâches nécessaire tout le long du pipeline.
Agent SAM (pour plus de détail voir '§usage' :
git clone https://github.com/facebookresearch/segment-anything.git SAM
sed -i \"s/torch.load(f)/torch.load(f, weights_only=True)/g\" SAM/segment_anything/build_sam.py
python ia_sam.py -h
usage: AgentIA SAM [-h] [--logfile [LOGFILE]] [--savefile [SAVEFILE]] [--task {run,train,background}] [--nolog]
[--bbox BBOX] --input INPUT [--output [OUTPUT]] [--model-type {vit_h,vit_l,vit_b}]
[--checkpoint CHECKPOINT] [--device DEVICE]
command line SAM
options:
-h, --help show this help message and exit
--logfile [LOGFILE] sortie du programme
--savefile [SAVEFILE]
spécifie s'il faut sauvegarder. Si aucun fichier, alors nom par défaut
--task {run,train,background}
[défaut=run] tâche à accomplir par l'agent
--nolog désactive les log
--bbox BBOX coordonnées de la box au format [x_min, y_min, x_max, y_max]
--input INPUT chemin de l'image d'entrée
--output [OUTPUT] [défaut=results] chemin du dossier de sortie
--model-type {vit_h,vit_l,vit_b} =>"model_type" dans la variable **args**
[défaut=vit_h] modèle VIT de SAM [vit_h, vit_l, vit_b]
--checkpoint CHECKPOINT
[défaut=checkpoints] dossier où sont les poids de SAM
--device DEVICE [défaut=cpu] device où charger SAM [auto, cpu, cuda, torch_directml]
Exemples :
python ia_sam.py --input=dog.jpeg --model-type=vit_b --bbox=[65,250,631,940] --task run --savefile
python ia_sam.py --input=dog.jpeg --model-type=vit_b --bbox=[65,250,631,940] --task background --savefile
import ia_sam
args = {}
args["task"] = ...
agent = ia_sam.run_process(args)
agent.results
# agent.results["img_without_bg"]
# agent.results["mask"]
from ia_sam import Agent_SAM
args = {}
args["task"] = "background"
args["model_type"] = "vit_b"
args["input"] = "dogs.jpeg"
args["bbox"] = "[65,250,631,940]"
image_rgb = np.array(Image.open(args["input"]).convert("RGB"))
args["sam_img_in"] = image_rgb
agent = Agent_SAM(model_type=args["model_type"])
agent.run(args, mode=args["task"])
agent.save_results()
from ia_sam import Agent_SAM
args = {}
args["model_type"] = "vit_b"
args["task"] = "background"
args["input"] = "dog.jpeg"
args["bbox"] = "[65,250,631,940]"
agent = ia_sam.run_process(args)
agent.results
# agent.results["img_without_bg"]
# agent.results["mask"]
import numpy as np
from PIL import Image
from ia_sam import Agent_SAM
# 1- Préparation des arguments
args = {}
args["task"] = "background"
args["model_type"] = "vit_b"
args["input"] = "dogs.jpeg"
args["bbox"] = "[65,250,631,940]"
image_rgb = np.array(Image.open(args["input"]).convert("RGB"))
args["sam_img_in"] = image_rgb
# 2- Exécution
agent = Agent_SAM(model_type=args["model_type"])
agent.run(args, mode=args["task"])
agent.save_results()
Agent_LISA)L'agent LISA permet d'englober le fonctionnement de LISA, le LLM, afin de réaliser différentes tâches nécessaire tout le long du pipeline.
Agent LISA (pour plus de détail voir '§usage' :
conda create --name myenv_lisa python=3.10
conda activate myenv_lisa
python -m pip install --upgrade pip wheel setuptools
cd experiments/
git clone https://github.com/dvlab-research/LISA.git
python -m pip install -r LISA/requirements.txt
python -m pip install flash-attn==2.0.9 --no-build-isolation
conda deactivate
conda deactivate
Pour LISA++ :
conda activate myenv_lisa
python -m pip install scikit-learn
cd experiments/LISA/
git switch lisa_plus
conda deactivate
python ia_lisa.py -h
usage: AgentIA SAM [-h] [--logfile [LOGFILE]] [--savefile [SAVEFILE]] [--task {run,train,background}] [--nolog]
[--output [OUTPUT]] [--checkpoint CHECKPOINT] [--device DEVICE] --input_img INPUT_IMG
--input_prompt INPUT_PROMPT [--input_expert INPUT_EXPERT]
[--version {xinlai/LISA-7B-v1-explanatory,xinlai/LISA-13B-llama2-v1-explanatory,Senqiao/LISA_Plus_7b}]
[--precision {fp32,bf16,fp16}] [--image_size IMAGE_SIZE] [--load_in_8bit] [--load_in_4bit]
command line LISA
options:
-h, --help show this help message and exit
--logfile [LOGFILE] sortie du programme
--savefile [SAVEFILE]
spécifie s'il faut sauvegarder. Si aucun fichier, alors stdout sauf pour 'train'
--task {run,train,background}
[défaut=run] tâche à accomplir par l'agent
--nolog désactive les log
--output [OUTPUT] [défaut=results] chemin du dossier de sortie
--checkpoint CHECKPOINT
[défaut=checkpoints] dossier où sont les poids du modèle
--device DEVICE [défaut=cpu] device où charger SAM [auto, cpu, cuda, torch_directml]
--input_img INPUT_IMG
chemin de l'image d'entrée
--input_prompt INPUT_PROMPT
chemin du fichier prompt d'entrée
--input_expert INPUT_EXPERT
chemin du fichier prompt des experts
--version {xinlai/LISA-7B-v1-explanatory,xinlai/LISA-13B-llama2-v1-explanatory,Senqiao/LISA_Plus_7b}
[défaut=LISA7B] dépôt du modèle
--precision {fp32,bf16,fp16}
precision for inference
--image_size IMAGE_SIZE
image size
--load_in_8bit
--load_in_4bit
Exemples :
CUDA_VISIBLE_DEVICES=1 python ia_lisa.py --input_img=LISA/1466_2L1_cut.jpg --input_prompt "There is a defect ? Explain in details." --device cuda --savefile
CUDA_VISIBLE_DEVICES=1 python ia_lisa.py --input_img=../data/MMAD/MVTec-AD/carpet/test/cut/000.png --input_prompt ./user_prompt.txt --input_expert ./expert_prompt.txt --device cuda --savefile
import ia_lisa
args = {}
args["task"] = ...
agent = ia_lisa.run_process(args)
agent.results
# agent.results["text_output"]
# agent.results["pred_masks"]
from ia_lisa import Agent_LISA
args = {}
args["task"] = ...
agent = Agent_LISA(args)
agent.run(args)
agent.save_results()
import ia_lisa
from ia_lisa import Agent_SAM
# 1- Préparation des arguments
args = {}
args["input_prompt_str"] = "There is an defect ? explain in details"
args["input_expert_str"] = ""
args["version"] = ia_lisa.DEFAULT_LISA_MODEL
args["precision"] = "bf16"
args["image_size"] = 1024
args["load_in_8bit"] = False
args["load_in_4bit"] = False
args["model_max_length"] = ia_lisa.DEFAULT_LISA_MODEL_MAX_LENGTH
args["lora_r"] = ia_lisa.DEFAULT_LISA_MODEL_LORA
args["vision_tower"] = ia_lisa.DEFAULT_LISA_MODEL_VISION_TOWER
args["use_mm_start_end"] = ia_lisa.DEFAULT_LISA_MODEL_USE_MM_START_END
args["conv_type"] = ia_lisa.DEFAULT_LISA_MODEL_CONV_TYPE
args["device"] = ia_lisa.DEVICE_GLOBAL
image_rgb = np.array(Image.open(args["input_img"]).convert("RGB"))
args["sam_img_in"] = image_rgb
#local_arg["lisa_img_in"] = agent_sam.results["img_without_bg"]
# 2- Exécution
agent_lisa = Agent_LISA(args)
agent_lisa.run(args)
agent.save_results()
33 commits
Jupyter Notebook
96.3%
Python
3.6%