Verified Expert in Engineering
Erkan is a software developer and team leader with expertise in implementing efficient algorithms on platforms with limited computational capability. As a developer, he has applied various computer vision algorithms to embedded environments for several defense projects, including missile seeker heads, head-mounted displays, and missile warning systems. Erkan has also led a team of over eight engineers to develop and carry out computer vision solutions for around ten active defense projects.
Windows, Linux, C, C++, MATLAB, NVIDIA CUDA
The most amazing...
...thing I've developed is a seeker head of an anti-aircraft missile system that detects and tracks the target for homing purposes.
Embedded Software Engineer
- Developed a real-time 100-to-200 frame-per-second target detection and tracking routines for HISAR, a surface-to-air anti-aircraft missile system. Designed and implemented computer vision algorithms for computationally limited embedded systems.
- Created a real-time target tracking routines for cluttered environments for U/OMTAS, an air-surface-to-surface anti-tank missile system. Implemented patterns for target quality calculations, critical hit point selection, and more.
- Launched a real-time target tracking routines for cluttered environments for KARAOK, a surface-to-surface anti-tank missile system. The patterns were implemented to work on CPUs and FPGAs and were configured to be used as co-processors.
- Managed the real-time head tracking routines to direct airborne weapon systems and cameras from head movements for AVCI, a helmet-mounted display unit with head tracking capacity. Implemented rigid object tracking algorithms for this project.
- Parallelized a moving object detection routine for surveillance using OpenCV, OpenMP, and OpenGL libraries.
- Pioneered an auto-focus procedure for automatically finding the correct optic system lens position to achieve the best focus for thermal cameras. Used a dynamic programming approach that sees the most extended increasing sequence of sharpness values.
- Established an object detection routine for an ultraviolet missile warning system with scene adaptive features.
- Implemented a packet relaying software for man-in-the-middle attack purposes enabling an open-loop scene generation software to accept input to render images from the platforms' point of view.
- Authored several patents and utility models. Six of these patents have been granted, two are in pending status, and one is in submission.
- Led a team of eight full-time and two part-time engineers to develop and implement computer vision solutions for around ten active defense projects.
- Developed software that calculates similarities between image segments using C++ and CUDA using client-specified similarity metrics. Ensured the software was well tested and ran fast.
- Wrote C++ code to parse custom app-specific data present in the MXF files. Read the specifications of the data and parsed the data accordingly. Also reviewed the code of another app written in C# to understand the MXF file format.
- Wrote C++ code to parse custom app-specific data present in the MPEG-TS files. Read the specifications of the data and parsed the data accordingly. Implemented functionality to dump parsed information in JSON format.
- Developed software that finds the best matches between features found in a reference image and an image captured from a real-time video source using C++ and CUDA. Ensured the software was well tested and ran fast.
- Implemented a video search routine using OpenCV and C++. Produced the best position in the video and quality metrics. Utilized image hashing methods to do image comparisons and a backtracking method with early termination options to do video search.
- Wrote a parser that has a double functionality: the parser can read and parse data from the JSON files using the nlohmann::json library, and the parsed parameters can be overwritten by processing the command line commands using the CLI11 library.
- Investigated a procedure to log system information of the utilized workstations, including GPU state, to enable remote observation of the utilization and system problems. Used and integrated Prometheus and Grafana to produce the logging system.
- Investigated a library called radialpose which implements minimal solvers to find the position and orientation of a camera using a minimal number of correspondences. Implemented C++ wrappers and Python scripts for client testing.
- Integrated the client-developed face recognition algorithm to the National Institute of Standards and Technology (NIST) and specified Face Recognition Vendor Test (FRVT) software for the client.
- Modified the DICIO software to accept multiple images belonging to the same person and modified the DICIO software to process numerous faces presented in a single image.
- Wrote Python scripts to achieve image type conversions, image analysis, and performance analysis of the face recognition algorithm for the monochrome input images for the client.
- Worked as a teaching assistant for algorithms and computer networks courses.
- Created assignments, graded exams, homework, and projects, and gave lectures.
- Submitted a thesis (Hypergraph-partitioning-based Image-space-parallel Direct Volume Renderer for Unstructured Grids with Replication) and implemented the project over a Beowulf cluster connected via a high-speed switch using C++ and MPI.
A Method to Accelerate Deep Learning Applications for Embedded Environmentshttps://drive.google.com/file/d/1iSz3qmPTRVoyy5IBUtAetQp_FdAmL0lA/view?usp=sharing
An inherent sub-function is crucial in the fast execution of convolutional neural networks. This is a convolution operation, which can be thought of as passing a filter over an image. For this project, I have found an order of execution between pixels so that retrieved data to the cache is used more times before eviction from the cache. Thus, cache misses reduce, and overall calculation speed increases.
Acceleration achieved using this method greatly varies according to image sizes and cache structure or size of the underlying platform. We have achieved three to five times speedup for the limited embedded environments we have tested.
There is a pending patent application associated with this project (tr 2021/013858).
A Method for Passively Optimizing Focus of an Optical Systemhttps://drive.google.com/file/d/1XUEyxQfjPhSX-TrLm-z6aV_H1ik2DAUQ/view?usp=sharing
I have formulated the focusing problem for this project with a dynamic programming approach as an effortless way to implement the longest increasing sub-sequence calculation. This formulation allows fast calculation without directional change and finds the optimal focus distance before much defocusing occurs after the optimal point, i.e., it provides an excellent early termination condition.
A granted patent application is associated with this project (PCT/TR2016/050155).
A Noise Elimination Method for Detection Applicationshttps://drive.google.com/file/d/1W9JYl8-SXqXSH83y-D3nQBYuQiLkwQMi/view?usp=sharing
I have used a Bloom filter data structure to carry out fast membership tests. The Bloom filter supports O(1) time insertion and test operations as well as O(1) space requirements. This incredible feat is achieved by allowing a small percentage of false positives for memberships tests while never allowing false negatives or supporting deletions. Thus, I eliminated noisy data with minimal computational cost by using the Bloom filter structure.
A pending patent application is associated with this project (tr 2020/19736).
C, C++, Embedded C++, Java, UML, MIPS, Tcl, R, C#, Python, Python 3
MPI, OpenMP, Sockets, OpenGL, OpenCV
MATLAB, NS-2, Weka, Wireshark, CMake
Parallel Programming, Object-oriented Programming (OOP), Best Practices
Windows, Linux, NVIDIA CUDA, Unix, Ubuntu, Software Design Patterns, Ubuntu Linux
Algorithms, Multiprocessing, Multithreading, Concurrency, Back-end Development, Back-end, Background Threading, Software Architecture, Optimization, Computer Networking, Embedded Systems, Memory Management, Computer Graphics, Operating Systems, Programming Languages, UDP, TCP/IP, Yacc, Wireless Networking, Wireless Sensor Networks, Cryptography, Computer Vision, Graph Theory, Information Retrieval, Data Mining, Computational Biology, Electronic Design Automation (EDA), Mobile Networks, GUI, MXF, Command-line Interface (CLI), Economics, Finance, Architecture, Videos, MPEG, Search, Image Hashing
Master's Degree in Computer Engineering
Bilkent University - Ankara, Turkey
Bachelor's Degree in Computer Engineering
Bilkent University - Ankara, Turkey