I’m Arthur Lu, a first-year M.S. student in Computer Science at USC in Los Angeles. Before USC, I studied Computer Science with Artificial Intelligence at the University of Nottingham Ningbo China.
I’m interested in machine learning for medical imaging, generative models and LLM agents, and in the engineering that makes them dependable. I like working along the whole path from raw data to a working system: preparing datasets, training models, and building the tools and tests that show whether a model learned what it should. My current work asks a practical question. When a training run finishes, or an AI agent says it has fixed a bug, how do we know the result is right?
I want to work as a machine learning engineer, AI engineer or software engineer, and I’m looking for a Summer 2027 internship in one of these roles.
Verifying the repairs LLM agents make to deep-learning training code
Sep 2026 – present
Training bugs are often silent: the run finishes and accuracy barely moves. When an LLM agent says it fixed one, RunSleuth checks each requirement of the task against evidence recorded while the repaired project trains, runs short probes where that evidence is missing, and then accepts the repair, rejects it or sends it to a person.
0 / 16 wrong repairs accepted
0 / 164 correct repairs rejected
Best LLM reviewer: 2 / 16 wrong accepted
Held-out test of 180 repairs written by five LLM agents for six faults in pathology and dermoscopy pipelines. Preliminary until the blind review of the labels is complete.
Conditional diffusion for translating brain MRI between T1 and T2 contrast
Jun 2025 – May 2026 · ICONIP 2026
A PyTorch diffusion model that translates in both directions. Anatomy-consistent structural guidance keeps the anatomy in place while denoising, cross-attention and classifier-free guidance condition on the source scan, and training combines MSE, L1 and SSIM losses.
Extends OnePose++, an offline single-camera pose pipeline, to live tracking from two cameras whose views are fused into one estimate. A Flask and Socket.IO backend with a Vue.js interface stores each object’s reference data, so a registered object can be tracked again without recapturing and preprocessing video.