Mohammed Djenadi
I build the data first, then the model.
Abstract
I'm a third-semester AI student who works on computer vision. When the labels I need don't exist, I render them in Unreal Engine 5, train on them, and then write down where the model still fails.
A small language model runs on your own device to find the answer in this page. Nothing is sent to a server.
At a glance
- Study
- BSc Artificial Intelligence, 3rd semester, JKU Linz
- Focus
- Computer vision, depth, tracking, detection
- Tools
- PyTorch, Ultralytics YOLO, Unreal Engine 5, SQL
- Datasets
- 2 published on Hugging Face
- Languages
- Arabic, English C1, German B1, French B1
- Contact
- djenadimohammed22@gmail.com
Alpine snow depth
Depth models have little to go on in snow and flat light. So I rendered 1,556 images on real Swiss terrain around the Eiger in Unreal Engine 5, each with exact depth, simulated LiDAR and noisy GPS/IMU, and published them on Hugging Face.
Then I trained a CNN with a transformer bottleneck. It takes Depth Anything 3's depth, the LiDAR and the image, and corrects the depth. It also outputs how confident it is in each pixel.
The same frame, in 3D
Look through the layers
Error before and after, lower is better
Flying on its own depth
To test if the depth is good for anything, I flew a simulated drone across a valley with no terrain map. Every 5 seconds it renders a 720p view, runs DA3 and my model, adds the depth to a height map with 5 m cells and plans a new route with A*. Climbing costs 12 times as much as flying flat, so it goes round the mountains.
It covered 5.3 km for a 3.6 km straight line, never came closer than 11.9 m to the ground, and stopped 13.5 m from the goal.
LimitsThe simulator's LiDAR is much cleaner than a real sensor, so this doesn't show it could fly a real drone. On real roads with real LiDAR, DA3 with a simple scale fix still beats my model.
Car speed from one camera
Real footage with the exact speed of every car on every frame barely exists, so I made it: 150 freeway clips in Unreal Engine 5, each from its own camera between 4 and 21 m up, with masks, track IDs and the true speed of 5,281 cars on every frame.
YOLO26-seg finds the cars, ByteTrack keeps their IDs, and a small transformer reads the second before and after each frame. It only gets numbers taken from the mask, like where the tyres touch the road. It never sees the image.
Traffic lab
| Setup | mean error | |
|---|---|---|
| Camera over 12 m, car over 1,500 px | 2.75 km/h | |
| Camera over 12 m, every car | 3.94 km/h | |
| Every camera, car over 1,500 px | 4.75 km/h | |
| Every camera, every car | 7.32 km/h | |
| Always guessing the average, 67.9 km/h | 21.00 km/h |
A frame from the dataset

PCB defects, tile by tile
A defect on a circuit board can be a few pixels wide in a 2,500 px photo, so shrinking the photo loses it. My app cuts the board into 320 px tiles that overlap by 64 px, runs a fine-tuned YOLO26l on each one and puts the boxes back together.
Each tile only keeps boxes whose centre is in its own half of the overlap, so a defect on a border isn't counted twice. On 6 boards it never saw, it finds all 30 labelled defects, plus a few extra boxes.
Replay of a real scan
More work
TikTok AI content detector10/2026 · PyTorch · Qwen3 embeddings
Spots AI-made TikTok posts from metadata and captions only, trained on a 99-million-post (11 GB) dataset. I kept the 22% of duplicate captions on one side of the split to stop leakage, and reweighted the test set to the real 5.8% AI rate.
Superstore discount optimiser08–10/2026 · SQL · XGBoost · PyTorch
Cleaned retail data in MySQL, then compared a PyTorch network with XGBoost to predict an order's profit class. I found and fixed a duplicate-row data leak on the way. The app suggests discount ranges for a target profit.
Steam genre predictor2026 · Sentence Transformers · PyTorch
Predicts a game's genres and store categories from its stats, name and description, with sentence embeddings and a multi-label network. Adding the description embedding gave most of the gain.
Third semester, AI at JKU Linz
I'm studying for a BSc in Artificial Intelligence at Johannes Kepler University in Linz, after a year of computer engineering in Algeria. Most of my courses are online, so I can take an internship of up to 12 months and move anywhere in Austria.
I like projects where I have to build the data first. I also write down where my models fail, from data leaks to results that don't carry over from renders to real images.
- Machine learning
- PyTorch, scikit-learn, XGBoost, Transformers, CNNs, model evaluation
- Computer vision
- YOLO (Ultralytics), segmentation, depth estimation, OpenCV
- NLP
- Sentence Transformers, Hugging Face
- Data
- Python, SQL (MySQL), pandas, NumPy, Matplotlib, Parquet
- Tools
- Unreal Engine 5, Streamlit, Git, CUDA, Claude Code
