HDF5 Data File Format
A brief introduction to the HDF5 data file format and its basic usage.
62 posts
A brief introduction to the HDF5 data file format and its basic usage.
A record of bugs that may occur while setting up reinforcement learning environments and running projects, along with their solutions
The most widely used point cloud library in C++
Instant-NGP, short for Instant Neural Graphics Primitives, uses multiresolution hash encoding to solve the efficiency problem encountered when parameterizing NeRF with a fully connected neural network. It greatly accelerates network training, reducing three-dimensional reconstruction time from several hours to several seconds.
An introduction to a fundamental reinforcement learning algorithm, Proximal Policy Optimization (PPO)
Using the classic YOLO algorithm for instance segmentation
Algorithm reproduction
During deep learning training, we inevitably need to observe changes in metrics such as Loss and Learning_rate, so plotting curves in real time is essential. This article explains how to use PyTorch's TensorBoard to plot curves.
Notes from searching for and reading ECCV papers related to 6D pose estimation from the past three years
A review of and notes on CVPR papers related to 6D pose estimation from the past three years
I searched for papers citing DenseFusion, but so many of them had no open-source code that after reading two, I switched to focusing only on papers from top-tier conferences.
Study notes on Statistical Learning Methods
Because some projects were developed some time ago, their programs use opencv2, while most people now have opencv4 installed. Since these projects contain a lot of code, modifying the source code would be too cumbersome, therefore considering installing multiple opencv versions side by side.
The nearest neighbors algorithm assumes a training dataset is given in which the class of each instance is known. For classification, a new instance is predicted from the classes of its k nearest training instances by majority voting or similar rules. Therefore, the k-nearest neighbors method has no explicit learning process.
The perceptron is a linear binary classification model. Its input is an instance's feature vector, and its output is the instance's class. Its goal is to find a separating hyperplane that linearly divides the training data.
Statistical learning is the discipline in which computers build probabilistic and statistical models from data and use those models to predict and analyze data. These notes follow Li Hang's book *Statistical Learning Methods*.
I am currently studying 6D pose estimation algorithms. The LINEMOD dataset is the most commonly used dataset in this field, but testing only on an existing dataset is not enough. Building a custom dataset is necessary for practical applications.
FFB6D fuses RGB and point cloud information during the feature extraction stage, then performs instance segmentation and keypoint detection.
This paper proposes a heterogeneous architecture that processes two data sources (RGB and depth maps) separately and uses a novel dense fusion network to extract dense pixel-level features for pose estimation.
Attempted to test PVNet but gave up partway through.
Addresses the increased difficulty of 6D pose estimation caused by occlusion and clutter between objects by combining a backbone network with ICP point matching.
Basic implementation methods for object detection, starting with object localization and summarizing object detection algorithms such as landmark detection, object detection, the sliding-window method, and NMS (Non-Max Suppression).
This article introduces several classic neural network models, including the network architectures of LeNet-5, AlexNet, VGG-16, ResNet, Inception networks, and more.
Why do neural networks often use convolution when analyzing images? Why are there padding and stride? What roles do pooling layers and fully connected layers play?
This article introduces common parameter-selection principles and approximate ranges in neural networks, as well as the basic principles of BN and softmax.
The LineMod algorithm was proposed by Hinterstoisser et al. in 2011. Using template matching, it addresses real-time detection and 6D pose estimation and localization for low-texture three-dimensional objects in cluttered scenes.
This article introduces several of the most commonly used optimization algorithms, starting from partitioning the dataset into mini-batches, then covering momentum gradient descent, RMSprop, and their combination Adam, along with implementation details and basic principles for each method.
There are many ways to improve neural network training performance, such as avoiding underfitting and overfitting, using regularization, and so on. Different methods also have different effects.
Linear regression in deep learning, basic optimization algorithms, and implementations of Softmax regression and loss functions.
Introduces how to perform basic data operations with PyTorch and pandas, and how to carry out fundamental linear algebra operations and derivative computation with torch.
COLMAP is a general-purpose Structure-from-Motion (SfM) and Multi-View Stereo (MVS) tool with graphical and command-line interfaces. OpenMVS is one of the three-dimensional reconstruction frameworks that produces better reconstruction results, and it provides automated scripts.
Three-dimensional reconstruction uses a camera to photograph real-world objects and scenes, then processes them with computer vision techniques to obtain a three-dimensional model of the object. The main techniques involved include multi-view stereo, depth map estimation, point cloud processing, mesh reconstruction and optimization, texture mapping, Markov random fields, image segmentation, and more.
When running deep learning code for training and inference, you will inevitably encounter various errors. This article collects some of the errors I have encountered and will be updated occasionally.
Mask R-CNN is a major 2017 work by Kaiming He. It performs instance segmentation alongside object detection and achieves excellent results.
Notes from my journey learning deep learning from scratch. This chapter introduces the most fundamental mathematical ideas behind deep learning, as well as simple regression-based approaches to deep learning algorithms and related code.
A summary of some concepts that beginners may find difficult to understand when starting out in deep learning.
Generally, channels refers to the number of convolution kernels in each convolutional layer. The channels of the initial input image sample depend on the image type, such as RGB; after convolution, out_channels depends on the number of convolution kernels. The out_channels then also serves as the in_channels of the convolution kernel in the next convolution.
Convolution is essentially the process of taking a matrix of a specific size each time, sliding it across the input matrix, and computing the inner product at each position.
The process of setting up a deep learning environment with Anaconda + CUDA + TensorFlow 2 + Keras.
An installation tutorial for the commonly used deep learning environment PyTorch.
A package for detecting ArUco pose, with installation, testing, and usage instructions.
Staple combines local HOG features and global color-histogram features for object tracking. This test has been completed in Windows, Ubuntu, and ROS environments and runs successfully.
SIFT (Scale-Invariant Feature Transform) is an algorithm for detecting and describing local image features. The algorithm searches for extrema across scale space and extracts position, scale, and rotation invariants. These keypoints remain stable under changes in illumination, affine transformation, and noise. The main steps are (1) scale-space extrema detection; (2) keypoint localization; (3) orientation assignment; and (4) keypoint description and matching.
When using the OpenCV package, you may encounter ImportError: No module named cv2. I was certain that I had already installed OpenCV. After looking into it, I found that OpenCV had been installed for a different Python version than the system default, which caused the module not to be found.
The KNN algorithm, or K-nearest neighbors algorithm, works by predicting the class of a new value x based on which class most of its K nearest neighbors belong to. The same idea applies to image recognition.
This article aims to recognize digits in camera images. Practical applications include license plate number recognition and recognizing printed digits on A4 paper in some competitions. Camera-based digit recognition consists of two steps: 1. Extract the ROI from the image, such as the rectangular license plate area or the A4 paper image. 2. Recognize digits in the ROI. Digit recognition is relatively straightforward, so this article first introduces its methods and principles.
First, download all the files in `opencv/samples/dnn/face_detector/` from OpenCV's GitHub site and overwrite the files in the local directory. Then open weights.meta4 in Notepad and download the files corresponding to the two URLs it contains.
Mean filtering uses the principle of image convolution. As shown in the figure below, when the convolution kernel is a third-order unit matrix, mean filtering is performed: each third-order submatrix of the original image has its mean computed and assigned to the center element.
An image histogram is a statistical feature of image pixel values. It is inexpensive to compute and has many advantages, including invariance to image translation, rotation, and scaling. It is widely used across image processing, especially for grayscale image thresholding, color-based image retrieval, image classification, and backprojection tracking. Common types are grayscale histograms and color histograms.
Reading and processing video is essential in image processing. In OpenCV, the main function used to read camera video is capture(). This article explains how to read camera video with OpenCV and describes the functions used to save it, including their implementation and specific details.
Common image transformation methods include image scaling, flipping, and rotation. In OpenCV, each of these image transformation operations has a corresponding function. This article introduces various image transformation methods through explanations of function definitions and concrete examples.
Normalization constrains the data to be processed, after processing (via some algorithm), within a certain range. This makes later data processing easier and also helps the program converge faster during runtime.
This article introduces how to handle keyboard and mouse input in OpenCV, the functions involved, and the parameters of each function. It also uses keyboard and mouse input handling to create several interesting small programs.
C and C++ provide the rand() and srand() functions for generating random numbers, and they can also be used when writing OpenCV code in C++. OpenCV also provides its own RNG class for generating random numbers, which is very convenient to use. This article mainly introduces how to use RNG and how to draw random lines based on the random numbers it generates.
This article introduces methods for drawing rectangles, circles, lines, and ellipses with C++ and OpenCV 4. It focuses on the definitions of OpenCV built-in functions (such as rectangle(), circle(), line(), and ellipse()) and the role of each parameter, and provides example programs for reference. It also summarizes methods for drawing polygons, including the polygon-border drawing function polylines(), the polygon-filling function fillPoly(), the function for drawing multiple polygons drawContours(), and more.
Replacing the background of a green-screen image involves ① color-space conversion, ② extracting the green-screen region, ③ inverting the green-screen region, and ④ copying the image. The various functions and code encountered along the way are also covered in detail in this article.
After splitting image channels, the output multi-channel sequence is typically stored using std::vector mv;, where mv[0], mv[1], and mv[2] correspond to the three BGR channels respectively. However, what is displayed now is essentially three single-channel images—in other words, three grayscale images. To restore intuitive color to the three images, you need to use the channel merging method described below.
OpenCV uses createTrackbar() to create a Trackbar. The function syntax and the purpose of each parameter are shown below.
Image pixel operations include read and write operations, arithmetic operations, logical operations, and more. Pixel operations are not only diverse; operations on grayscale images and color images also have their own characteristics. Operating on pixels allows us to access every pixel in an image and implement many unexpected functions.
Color space conversion function: cvtColor. GRAY: grayscale, with only one Channel for the grayscale value. BGR: the BGR color space, based on the three primary colors red, green, and blue (0~255), which are combined to form various colors. HSV: the hexagonal cone model, with Hue measured in degrees (0~180), Saturation in the range 0 ~ 255, and Value in the range 0 ~ 255.
First, download and extract OpenCV. I recommend downloading the Windows installer from the official OpenCV website. If the download is too slow, I have also uploaded the OpenCV4.5.2 installer to Aliyun Drive at https://www.aliyundrive.com/s/VGkaM7vyuck. Make sure to extract it to an English-only path.