Files
boc/iom/ai_pipeline/__pycache__/training_pipeline.cpython-39.pyc
T

83 lines
7.5 KiB
Plaintext
Raw Normal View History

a
ˆ’>j(ã@s~dZddlmZmZmZmZddlmZddlm Z ddl
Z
ddl Z eGdddƒƒZ Gdd „d ƒZ
d
d Zed krzeƒdS)
zC
AI Training Pipeline
Train YOLO and CLIP on infrastructure images
é)ÚDictÚListÚOptionalÚTuple)Ú dataclass)ÚPathNc@sjeZdZUdZeed<eed<dZeed<dZeed<dZ eed <d
Z
eed <d Z e ed
<dZ
eed<dS)ÚTrainingConfigzTraining configurationÚ dataset_pathÚ output_pathÚyolov8nÚ
model_typeédÚepochséÚ
batch_sizei€Ú
image_sizegü©ñÒMbP?Ú
learning_rateÚcpuÚdeviceN)Ú__name__Ú
__module__Ú __qualname__Ú__doc__ÚstrÚ__annotations__r rÚintrrrÚfloatr©rrúD/home/bernt/.openclaw/workspace/iom/ai_pipeline/training_pipeline.pyr
s
     rc@eZdZdZedœddZedœddZedœd d
Z eed œd d
Z
edœddZ edœddZ edœddZ
edœddZedœddZedœddZdS)ÚTrainingPipelinea,
Training pipeline for infrastructure AI models
Steps:
1. Prepare dataset (images + annotations)
2. Train YOLO for object detection
3. Fine-tune CLIP for scene classification
4. Train custom defect classifier
5. Evaluate models
6. Export to production format
)ÚconfigcCs||_d|_d|_d|_dS)N)r ÚdatasetZ
yolo_modelZ
clip_model)Úselfr rrrÚ__init__'szTrainingPipeline.__init__)ÚreturncCst|jjƒ}| ¡s4td|ƒtdƒ| |¡| |¡}tdƒtd|dƒtd|dƒtd|d ƒtd
|d ƒ|S) a
Prepare dataset for training
Expected structure:
dataset/
images/
train/
val/
test/
labels/
train/
val/
test/
data.yaml
zDataset not found at z$Creating sample dataset structure...zDataset prepared:z Train images: Ú train_imagesz Val images: Ú
val_imagesz Test images: Ú test_imagesz Classes: Úclasses)rr r ÚexistsÚprintÚ_create_sample_datasetÚ_validate_dataset)r"r ÚstatsrrrÚprepare_dataset-s 

z TrainingPipeline.prepare_dataset)ÚpathcC|ddjdd|ddjdd|ddjdd|ddjdd|ddjdd|ddjddt| ¡ƒdd d
d gd ¢d
œ}t|ddƒ }tj||ddWdƒn1sÊ0Ytd|ƒtdƒdS)zCreate sample dataset structureÚimagesÚtrainT)ÚparentsÚvalÚtestÚlabelsz images/trainz
images/valz images/testé
)
Ú street_lightÚ traffic_signÚbenchÚ trash_canÚsidewalkÚroadÚbuildingÚbridgeÚtreeÚgraffiti)r/r1r3r4ÚncÚnamesú data.yamlÚ©ÚindentNzSample dataset created at z-Add your images and labels to train the model)ÚmkdirrÚabsoluteÚopenÚjsonÚdumpr*)r"r/Z data_yamlÚfrrrr+Os"
ú.z'TrainingPipeline._create_sample_dataset)r/r$cCtt|dd d¡ƒƒ}tt|dd d¡ƒƒ}tt|dd d¡ƒƒ}t|dƒ}t |¡}Wdƒn1sz0Y|||| dg¡d œS)
zValidate dataset structurer0r1Ú*r3r4rCNrB)r%r&r'r()ÚlenÚlistÚglobrJrKÚloadÚget)r"r/r%r&r'rMÚdatarrrr,ts(
üz"TrainingPipeline._validate_datasetc
Csddlm}tdƒ||jjdƒ}|j|jjd|jj|jj|jj |jj
|jj |jj dd}|jj d}td ƒtd
|ƒ||j
d œS) zTrain YOLO modelr)ÚYOLOz
=== Training YOLO ===z.ptz
/data.yamlÚyolo_infrastructure)rTrÚbatchÚimgszZlr0rÚprojectÚnameú$/yolo_infrastructure/weights/best.ptzYOLO training completeú
Model saved: )Ú
model_pathÚmetrics)Ú ultralyticsrUr*r r r1r rrrrrr
Z results_dict)r"rUÚmodelÚresultsr]rrrÚ
train_yolo…s&  ø þzTrainingPipeline.train_yoloc Csnddlm}m}m}m}ddlm}tdƒ| d¡}| d¡}|j j
d}tdƒtd|ƒ|d d
œS) z'Fine-tune CLIP for scene classificationr)Ú CLIPModelÚ
CLIPProcessorÚTrainingArgumentsÚTrainer)Ú load_datasetz
=== Fine-tuning CLIP ===zopenai/clip-vit-base-patch32ú/clip_infrastructurezCLIP fine-tuning completer\Útrained©r]Zstatus) Z transformersrcrdrerfZdatasetsrgr*Zfrom_pretrainedr r
) r"rcrdrerfrgr`Z processorr]rrrÚ
finetune_clip¥s 

þzTrainingPipeline.finetune_clipcCs6tdƒ|jjd}tdƒtd|ƒ|ddœS)zTrain custom defect classifierz#
=== Training Defect Classifier ===ú/defect_classifier.pthz#Defect classifier training completer\rirj)r*r r
)r"r]rrrÚtrain_defect_classifierÐsþz(TrainingPipeline.train_defect_classifiercCs€tdƒdddddœddd œd