Machine Learning and Sensing C++, Python, PyTorch, OpenCV, NLP


I started with Computer Vision in 2005, for my industrial PhD with Thales. I developed classical computer vision algorithms for interest point (Harris, SURF, SIFT…) matching, line segment detection, and tracking. I also worked with sensor fusion, for images and lidar data, using SLAM (Simultaneous Localization And Mapping). Those algorithms were implemented using C++ and the OpenCV library.

During the last 10 years, I have moved toward using machine learning approaches for image classification and recognition, focusing on training and adapting CNN models for special applications. Recently, I started working with NLP, and in particular Bert and Large-Language Models for interfacing humans with robots, and in particular, on the question of natural text to query. I have mainly used the PyTorch and OpenCV frameworks.

I have focused on adapting Machine Learning approaches for embedded systems, in particular, through the pralin library, implemented in C++, interfacing with PyTorch, OpenCV, PCL frameworks.

Embedded Systems and ROS C++, Python

Most of my career has been spent working with embedded systems, with highly constrained computational capabilities. I have deployed algorithms on various autonomous systems: ground robots, or unmanned aerial vehicles (UAVs). I have worked with the ROS (Robot Operating System). Some of the systems, I have worked with were deployed on Raspberry PI, I have also implemented firmwares for Arduino boards, using C++.

Qt / C++ QML

I have more than 20 years of experience with the Qt framework. I started with the open-source drawing application krita. I worked on image processing and helped develop the GUI, in particular the brush system. In recent years, I also used the Qt framework as part of my professional work, it is used extensively in the distributed knowledge framework for the auKsys project. As part of the project, I contributed 3D visualization tools, and also a UI for browsing knowledge and control UAVs, using QML. I have also developed a shopping list synchronization application for Android/iOS for a startup.

I have contributed several Qt-related open-source components and libraries. The largest is Cyqlops, a collection of libraries with interfacing to databases, extra QML controls, MQTT… Cartography is a library with components for Qt-based GIS applications, including QML bindings for mapnik.

Database SQL, RDF, SPARQL, C++, Query Engines

I have worked with SQL and Semantic Web technologies for the past 10 years, as part of our distributed knowledge framework for the auKsys project. I have developed a SPARQL engine, which includes extensions for sensor processing. I have developed algorithms for the synchronization of information between database instances. For that framework, I have also worked with PostGIS. I have also developed an open source GQL/OpenCypher based library called GQLite, and an associated UI implemented with Qt/QML.

Algorithms GIS, Optimization

I have developed several new and original algorithms. First, in Computer Vision, I developed algorithms for line segment detection and tracking. That work led me to develop algorithms for geometric feature matching, grounded in graph theory.

I have also worked with various optimization techniques, such as EKF filter, least square, factor graphs, CMA-ES. I have developed new approaches, for factor graphs, or specialized to solve Geographic Information Systems, such as for polygon decomposition.

For all those algorithms, I have both worked on implementation and theoretical analysis.

Other Rust, Ruby, Cuda, Docker

Over the years, I have worked with different other technologies. I have used Ruby for scripting and even started the Ruby on ROS project. I also worked with Cuda to boost the performance of some of our algorithms, in particular, for optimization algorithms.

I used Docker to set up Continuous Integration for work and personal projects. I also used Docker for deploying software, for instance, in the auKsys project.

Recently, I learned Rust, which I used for a work project, matks, which is a multi-agent tasks and knowledge simulator. This project makes extensive use of the asynchronous capabilities of Rust, relying on established frameworks such as Tokio.

Recent Posts

llama.cpp, llama-xpp and pralin

pralin has had experimental support for llama.cpp since version 2. But it was hard to maintain as the llama API is moving and breaking on a regular basis. Th...

Fun with figlets!

I had a little bit of fun with figlets the past few days. I came to the conclusion that they could be useful in seperating sections in Rust code. Generally, ...

Welcome to My New Blog!

Welcome to my new blog, where I will, hopefully, write about many different topics that interest me. From technology, to the environment, to carpentry, to el...