first commit
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
from clearml.automation import PipelineController
|
||||
|
||||
|
||||
def inject_xywh_from_detection(pipeline, node, parameters):
|
||||
from clearml import Task
|
||||
|
||||
prev = pipeline.get_pipeline_dag()["model_training_v1"]
|
||||
if not prev.executed:
|
||||
raise ValueError("model_training_v1 has not finished yet")
|
||||
|
||||
task = Task.get_task(task_id=prev.executed)
|
||||
artifacts = task.artifacts or {}
|
||||
if "final_result" not in artifacts:
|
||||
raise ValueError(
|
||||
f"final_result not found on {prev.executed}; "
|
||||
f"available={list(artifacts.keys())}"
|
||||
)
|
||||
|
||||
result = artifacts["final_result"].get()
|
||||
detections = result.get("output", {}).get("detections", [])
|
||||
if not detections:
|
||||
raise ValueError("No detections in model_training_v1.final_result")
|
||||
|
||||
box = None
|
||||
for det in detections:
|
||||
if det.get("name") == "person":
|
||||
box = det["box"]
|
||||
break
|
||||
if box is None:
|
||||
box = detections[0]["box"]
|
||||
|
||||
xywh = f"{box['x']},{box['y']},{box['w']},{box['h']}"
|
||||
parameters["General/xywh"] = xywh
|
||||
if node.job and node.job.task:
|
||||
node.job.task.set_parameter("General/xywh", xywh)
|
||||
return True
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
pipe = PipelineController(
|
||||
name="Git_Data_Processing_Pipeline",
|
||||
project="Git_Pipeline_Demo",
|
||||
version="1.0.0",
|
||||
add_pipeline_tags=True,
|
||||
)
|
||||
pipe.set_default_execution_queue("default")
|
||||
|
||||
pipe.add_step(
|
||||
name="model_training_v1",
|
||||
base_task_project="Normal_Object_Detection",
|
||||
base_task_name="model-yolo26-human",
|
||||
parameter_override={
|
||||
"General/image_url": "https://link.lxl.kr/reumdata/20260619_145116_image.jpg"
|
||||
},
|
||||
)
|
||||
pipe.add_step(
|
||||
name="vcode2",
|
||||
parents=["model_training_v1"],
|
||||
base_task_project="Sample",
|
||||
base_task_name="vcode",
|
||||
cache_executed_step=False,
|
||||
)
|
||||
pipe.add_step(
|
||||
name="model_training_v2",
|
||||
parents=["vcode2"],
|
||||
base_task_project="Person_Attribute_Recognition",
|
||||
base_task_name="model-yolo-person-classify",
|
||||
parameter_override={
|
||||
"General/image_url": "https://link.lxl.kr/reumdata/20260619_145116_image.jpg",
|
||||
},
|
||||
task_overrides={
|
||||
"script.branch": "main",
|
||||
"script.version_num": "",
|
||||
},
|
||||
pre_execute_callback=inject_xywh_from_detection,
|
||||
cache_executed_step=False,
|
||||
)
|
||||
|
||||
pipe.start(queue="default")
|
||||
pipe.wait()
|
||||
print("파이프라인 실행이 완료되었습니다!")
|
||||
Reference in New Issue
Block a user