Skip to main content

Posts

Showing posts from 2012

How to use Convolution Neural Network to predict SIFT features

A feature locator is essential in all CV domain.  It's the basis of the germetric transformation, epipolar geometry, to 3D mesh reconstruction. Many techniques - SIFT and other SLAM technologies, are available, but they require ideal environments to work in. To address the short comings: - sensitive to low texture environment - sensitive to low light envonrment - sensitive to high light environment (like outdoor day light with above 20k lux) - and many other issues I propose a CNN based neural network to detect 4 correspondences in an image A and an image B. Since it is tricky to have a neural network to predict a 4x4 affine matrix of rotation and translation, I separated the translation vector from the rotation vector. Basically, the ground truth data will be precalcalated with a generic SIFT with RANSAC to calculate the correspondences set P and P'. The L2 (Eucledean) distance will be used between a predicted value.  They are 4 points, so an averaged will b

Time of Flight Depth Sensor (ToF) - Pros and Cons

Pros - Lightweight - Full frame time-of-flight data (3D array) collected with a single laser pulse - Unambiguous direct calculation of range - Blur-free imager without motion distortion - Co-registeration of range and intensity for each pixel - Perfectly registered pixels within a frame - Ability to represent the camera-oblique objects - No precision scanning mechanism required - 3D flash LIDAR with 2D cameras (EO and IR) to combine 2D texture over 3D depth - Multiple 3D flash LIDAR cameras for full volumetric 3D scene - Lighter and smaller than point scanning systems - Non-moving parts - Lower power consumption - Ability to scan through range-gating, natural obscurants

Backpropagating dE/dy by Geoffrey Hinton

1. Convert the disprepancy between each output and its target value into an error derivative. E = 1 / 2 Sigma (Tj - Yj)^2 j in Output   dE / dYj = - (Tj  -Yj)     2. Compute an error derivative in each hidden layer from error derivatives in the layer above. dE / dZj = dYj / dZj  * (dE / dYj) , where Zj is the sum of all outputs of i hidden units. , where Yi is the output of i hidden unit. , where Yj is the output of j unit dE / dZj =  Yj (1 - Yj) * (dE / dYj) , where Yj (1 - Yj) is dY / dZ of a nonlinear logic unit of y = 1 / (1 + e ^ -Z)  , where dY / dZ is y (1 - y) dE / dYi = Sigma(j) ( dZj / dYi ) * (dE / dZj) dE / dYi = Sigma(j) Wij * (dE / dZj) ,where dE / dZj is already computed in above layer. thus, dE / dWij = (dZj / dWij) * (dE / dZj) dE / dWij  = Yi * (dE / dZj)   Proof: y = 1 / (1 + e^-Z) = (1 + e^-Z)^-1 thus, dy/dz = -1 (-e^-z) / (1 + e^-z)^2  dy/dz = 1 / (1 + e^-z) * (e^-z / (1 + e^-z) ) = y ( 1 - y) because,  (e^-z) / (1 + e^-z) = ((1 + e^-z) - 1) / (1 + e^-z) = (1 + e^-