Hüseyin Erkan Acun
Verified Expert in Engineering
Deep Learning Developer
Ankara, Turkey
Toptal member since May 11, 2018
For the past seven years, Hüseyin has worked as a full-stack developer and embedded programmer—designing and implementing projects running from embedded to large-scale servers, developing various products (image processing, machine learning algorithms, web interfaces, etc.), and building systems from scratch. Hüseyin works closely with clients to provide spot-on solutions. He has a particular passion for designing and developing with C++.
Portfolio
Experience
- C++ - 5 years
- Concurrent Programming - 5 years
- Linux - 4 years
- Qt - 4 years
- Deep Learning - 4 years
- Parallel Programming - 4 years
- Image Processing - 3 years
- Python - 2 years
Availability
Preferred Environment
Linux, Qt, C++
The most amazing...
...project I've developed is an IP camera mock; it responds to a request as a camera does and provides video streams. It can be controlled via an HTPP address.
Work Experience
Senior Embedded Linux WebRTC Application Engineer
Spencer Health Solutions Inc
- Updated the Chromium source code to integrate a hardware encoder and decoder for a WebRTC-based video chat application.
- Ran multiple C++ applications to utilize hardware codecs on the device to test performance and analyze its behavior.
- Ran the system with updated Chromium and fixed bugs related to the mismatch between the hardware encoder and Chromium.
Senior C Developer
Mantis Health, Inc.
- Fixed the existing system's concurrency implementation to reduce latency on the video feed and updated the display to reduce visual artifacts.
- Implemented a module to update video feed focus points to provide the 3D sense outgoing video feed.
- Implemented a networking protocol to connect to the system and configure its behavior.
Software Engineer
Xtralth, Inc.
- Developed the user interface of a system using C++ and Qt. We used MVVM as design paradigm.
Senior Software Engineer
Infodif
- Developed image processing algorithms to detect accidents, intrusions, and other events that occur on bridges and highways.
Senior Software Engineer
ISSD
- Developed an image-processing application running on a CCTV camera itself using C++. This CCTV camera contains arm processor and DSP chips running under embedded Linux.
- Used the OpenCV and toolchain provided by the CCTV camera manufacturer and ran image processing algorithms in CCTV camera and integrated the system in the camera.
- Developed a proof-of-concept application using Intel Movidius VPUs.
- Ran our trained deep learning models on Movidius chips. Movidius can run complex models using very low cpu usage. The VPUs are optimized to run neural network models and the CPU are only required for utilizing VPUs.
Senior Software Engineer
Simsoft
- Built a distributed application for ASELSAN, a Turkish state-owned military company. The application contains signal processing at a very high volume of data in real-time.
- Developed a video-stream application over RTSP. The application contains a distribution of screens using real-time as well as different video resources—the project was developed using C++, DirectShow, FFmpeg, GStreamer, and OpenCV.
Senior Software Enginner
ISSD
- Developed an image-processing algorithm for event detection in tunnels. The algorithm connects a tunnel camera and provides detection results like car counts and various alarms (pedestrians, dropped packages, and intruders). The process also supports processed and unprocessed images as an MJPEG stream.
- Built a server application SPECTO to configure and run multiple image-processing detectors and integrate them with the central server. The server creates, deletes, and configures different types of detector processes and informs the central server about events.
- Created an IP-camera mocking application to integrate the network video recorders; this application can be added to an NVR as a camera and provide RTSP streams from different detecting processes. Its source can be configured through an HTTP request and NVR sees the process as a single camera.
- Created an application, called Bluesis, to gather Bluetooth discoveries of filed devices and use that data to calculate travel time and density between points. The system used Mac addresses sent from devices and find matches between configured points and use them in calculations. The system saves calculations in its own format and also integrates different host with different data formats.
- Developed user interfaces of Bluesis to configure parameters and monitor field devices and system statuses.
- Built a lightweight HTTP server in C++ with automated controller registration and routing. Also developed the WebSocket server for the HTTP server. The server connects other processes in the environment with DBus for configuration and monitoring. It also subscribes signals of other process and sends them via WebSocket.
- Developed a junction controller system Centris which controls traffic lights on junctions. Centris is an embedded device with an arm CPU, and it can connect to and gather information from different types of sensors and junction controllers. Centris can be configured to run different algorithms like the green wave and dynamic. It can also be configured and monitored from the central server. It can provide information about junction status to the server. It has its own HTTP server and user interface.
- Contributed to the design and development of complicated road systems (involving embedded processors and cameras) that do the following tasks: plate recognition, car counting, and calculates density.
Junior Software Engineer
Cybersoft
- Designed and developed a project for bank client companies to use in their billing and payment system; provided a solution for accountants so that they could only have limited access to the client company's bank account without interfering with their work.
Software Engineer
Usta Bilgi Sistemler A.Ş.
- Developed an email service to inform subscribers about their current statuses.
- Built a stock-and-purchases system.
- Created judicial management modules to track subscribers' legal statuses.
- Developed a mobile application to assign tasks to field workers and gather results.
- Built an OCR application to read sensor statuses and send them to the server.
Experience
AYBS+ | Multi-threaded and Multi-processing System
PROJECT DETAILS: Here, I worked with a team of software engineers in an EIS project called AYBS+ which is a multi-threaded and multi-processing system.
WORK DONE:
• Designed and developed a couple of modules in the system.
• Finished the construction of an email engine to inform system users and clients.
• Full-stack developed stock and purchases, judicial management modules, and more.
• Designed and implemented user interfaces, the server's back-end, and a database design.
TECHNOLOGIES: C#, .NET 4.5 Framework, SQL Server 2012 (used as DBMS)
Cybersoft | Financial Billing and Payments System
PROJECT DETAILS: Cybersoft mainly works on projects where banks and financial companies use them as their main form of software. In general, companies do not want their accountants to have unfettered access their bank accounts so we provided a solution where accountants have limited-but-useful access to a client's bank account. This project is not hosted by bank servers. It is an external system and can connect with multiple accounts in different banks.
WORK DONE:
• Designed and developed a project for bank client companies to use in their billing and payments system.
TECHNOLOGIES: Java 8, SQL Server (used as DBMS), Hibernate, Spring, ActiveMQ
Specto | Tunnel Event-detection System
PROJECT DETAILS: Specto is an event-detection system that is installed in tunnels. It consists of cameras being placed on operators to detect and intervene in any tunnel incidents. The cameras cover the entire tunnel and it supplies real-time video stream from cameras to the system. Incidents like a pedestrian walking in the tunnel or dropping object or debris are detected by Specto and operators are informed about the incident. Specto has a main server to configure image processor servers and processes. The system is a multi-machine, multi-process, and multi-threaded system.
WORK DONE:
• Was responsible for the design and development of processor machines and image processor processes.
• Helped to design the user interfaces, database, and use cases for Specto.
• Contributed to the image-processing algorithm design. The system is written in C++ and OpenCV used for image processing.
• Led the design and developed every aspect of Specto.
Project that Mimics CCTV Cameras
PROJECT DETAILS: I developed a project to mimic CCTV cameras. It acts as a camera and implements ONVIF camera web services that can restream real-time videos from cameras or saved videos. The process also can be configured via HTTP commands. It is used to restream camera videos where incidents are detected. I used Wowza, Live555 and Gstreamer to restream camera feeds. It is also used in the framework to build image process algorithms.
Bluesis | Calculate Travel Time and Density Between Road Points
PROJECT DETAILS: Bluesis calculates travel time and density between points on roads and also can integrate different types of services to notify users about the changes.
Bluesis is made up of three main parts.
1. Embedded devices are placed on roads or junctions. These devices collect Mac addresses of Bluetooth devices around and send it to the central server. The embedded device software is written in C++.
2.& 3. The server has two parts. For configuration, IIS hosts the web project and a calculation engine. A calculation engine calculates travel time and the density of configured vectors using Mac addresses which are sent by embedded devices. The server system is written in C#, .NET 4.5 was used as the framework, and SQL Server used as DBMS.
WORK DONE:
• Was responsible for the development and design of this project.
• Led a team of three engineers.
Centris | Embedded Device to Manipulate Junction Control Systems
PROJECT DETAILS: Centris project is an embedded device placed on junctions to manipulate junction control systems. These systems are responsible for changing lights on junctions and with Centris, we can optimize green-light durations for junctions.
How do we accomplish this? Centris devices are connected to a central server to inform operators about the junction status. Centris devices can be fed with different kind of sensors about junction like loop counters or density and car counter Viero cameras which ISSD produces. With that information and configuration sent by a central server which can be automated or user-defined; Centris controls JMS to optimize green-light time. This also involved are various kinds of optimization algorithms.
WORK DONE:
• Led a team of two engineers in the Centris project.
TECHNOLOGIES: C++, SQLite (used as DBMS in devices)
Small, Lightweight HTTP Server
PROJECT DETAILS: I developed a small, lightweight HTTP server written in C++ which is used in embedded devices and other projects. The HTTP server supports an MVC pattern, automated controller registration, and automated request routing. For computer vision systems, WebRTC support added to stream processes and raw streams. It was designed to make integrations with other systems via HTTP easier.
ASELSAN | Defense Industry Firm Work
PROJECT DETAILS: I worked on this project which was outsourced to ASELSAN, a Turkish corporation that produces tactical military radios and defense electronic systems for the Turkish Armed Forces.
ASELSAN | Defense Industry Firm Work
PROJECT DETAILS: I developed a video-streaming server using FFMpeg and GStreamer. The server can capture and serve live screenshots as well as other video sources like DirectShow.
WORK DONE:
• Designed and developed the project.
TECHNOLOGIES: C++, STL, FFMpeg, DirectShow, GStreamer, OpenCV
CCTV Camera Embedded Video Processing
PROJECT DETAILS: CCTV Camera contains CPUs and DSP chips running under embedded Linux. The project required running real-time computer vision applications on the chips inside the cameras. The CCTV manufacturer provided necessary tools for integrating algorithms within the camera ecosystem. Using these tools, I ran the CV algorithms inside the CCTV camera.
WORK DONE:
• Designed and developed the project.
TECHNOLOGIES: C++, STL, OpenCV, Embedded Linux, Arm Toolchain
Real-time Video Processing Using Intel Movidius VPU
PROJECT DETAILS: Deep neural networks are time-consuming to execute on embedded devices. Movidius VPUs are highly optimized for execution on these types of networks. I ran trained a DNN using Intel Movidius chips with very low CPU usage.
WORK DONE:
• Designed and developed the project.
TECHNOLOGIES: C++, STL, FFMpeg, OpenCV, Intel Model Optimizer, Intel Inference Engine, TensorFlow, Linux
Education
Bachelor's Degree in Computer Engineering
METU | Middle East Technical University - Ankara, Turkey
Skills
Libraries/APIs
Standard Template Library (STL), REST APIs, OpenCV, Web API 2, FFmpeg, ZeroMQ, TensorFlow, WebRTC, GPUImage, OpenGL
Tools
Microsoft Visual Studio, Qt Creator, DBus, CMake, Qmake, Wowza, MATLAB, ActiveMQ, GNU Toolchain
Languages
C++, C#, Java, SQL, Python, C#.NET, JavaScript, HTML, C
Frameworks
.NET 4, Qt, .NET, Hibernate, Spring, Razor, ASP.NET MVC 5, OSGi, Boost, GStreamer, LIVE555
Paradigms
Parallel Programming, Concurrent Programming, Model View ViewModel (MVVM), CRUD
Platforms
Linux, Windows, Intel, Embedded Linux, NVIDIA CUDA, Kernel, Ubuntu
Storage
SQL Server 2012, Microsoft SQL Server, SQLite
Other
Deep Learning, Video Encoding, H264, IIS, Windows Communication Foundation (WCF), RTSP, Image Processing, Windows App Design, HTTP, Machine Learning, Touchscreens, Medical Devices, Video Manipulation
How to Work with Toptal
Toptal matches you directly with global industry experts from our network in hours—not weeks or months.
Share your needs
Choose your talent
Start your risk-free talent trial
Top talent is in high demand.
Start hiring