"UDZ" is a Russian developer and manufacturer of a wide range of unmanned aerial systems – from compact drones to heavy-lift multicopters and fixed-wing UAVs.
Due to the increase in workload and the active growth of the company, we are looking for a Computer Vision Software Engineer to join the software development team for autonomous UAV control, using cutting-edge technologies in object recognition, mathematical models for calculating their spatial positions, categorization, identification, and tracking.
Responsibilities:
- Development, implementation, and testing of software solutions, primarily using C++ and Python for UAV navigation and control.
- Development of object recognition and tracking algorithms for video data analysis to make autonomous decisions.
- Development and optimization of CV pipelines: detection, tracking, visual navigation;
- Deployment of pipelines on embedded systems with limited resources, optimization for specific hardware;
- Profiling and eliminating bottlenecks in C++ and Python code;
- Refinement of quality metrics on real data;
- Integration of ML/CV modules into the overall system in collaboration with the team;
- Camera calibration and system-level video stream processing;
- Training, fine-tuning, and testing of computer vision neural network models, including YOLO;
- Evaluation of model quality: precision, recall, mAP, analysis of recognition errors;
- Optimization of model performance for speed and accuracy;
- Deployment of neural network models into production on target hardware (CPU/GPU/NPU);
- Participation in task definition, assessment of approach applicability under platform constraints;
- Working with data for annotation;
- Creation of synthetic data and working with it;
- Understanding the principles of model training.
Requirements:
- Higher technical education.
- 3 years of software development experience, with an emphasis on C++ and Python programming.
- Proven experience in developing software for UAV platforms such as Pixhawk, ArduPilot, INAV, and Betaflight.
- Experience with control theory and algorithms as applied to UAVs.
- Classic CV: experience in building and optimizing detection, tracking, and visual navigation pipelines. Refinement of quality metrics on real data;
- Embedded/Edge: deployment of CV pipelines on embedded systems with limited resources, performance optimization for them;
- C++: high-performance code, vectorization (NEON/SIMD), multithreading (OpenMP, thread pools), profiling experience;
- Python: multithreaded code that does not hit the GIL; accelerating bottlenecks through native modules (pybind/ctypes) or JIT (numba).
- Practical experience in training or fine-tuning YOLO models;
- Experience with PyTorch or Ultralytics YOLO;
- Understanding of the data preparation process for training neural networks;
- Experience with images, video files, and video streams;
- Understanding of computer vision model quality metrics;
- Experience with Git;
WILL BE A PLUS:
- Training and production deployment of neural network models (ONNX);
- RKNN-Toolkit, running models on NPU;
- OpenCL and offloading computations to GPU;
- Understanding of camera principles: pinhole model, distortion models, practical calibration experience;
- System-level video processing: zero-copy, GStreamer, MIPI, DMA buffers;
- Knowledge of CV mathematics and geometry (linear algebra, probability theory, mathematical statistics, epipolar geometry)
- Knowledge of robotics and navigation (Kalman filters, sensor fusion, VIO/SLAM, GPS-denied environments)
- Knowledge of ML/CV model quality metrics (Precision/Recall trade-off, mAP, MOTA, IDF1)
Conditions:
- Employment under the Labor Code of the Russian Federation
- Stable "white" salary
- Schedule 5/2 from 9:00 to 18:00
- Shuttle service to the workplace (Kol'tsovo district). Work in Yekaterinburg!!!
- Corporate catering
- Competitive salary
- Interesting projects and work with cutting-edge technologies
- Modern equipment, any hardware for effective task execution
- Opportunities for self-development: trainings, conferences, education
- The final salary level will be determined based on the results of the technical interview in accordance with the candidate's experience, knowledge, and skills.