Comments (4)
Hi @charlesq34,
Thank you for your work. The code is really helpful.
What is the faceid
field I see in the .h5 file? I have attached an image for your reference. I'm using a program called vitables to view the .h5 file.
I understand that label
value at location (0,0) is the label for data
at the same location and the normal
value corresponds to the value returned from LIDAR(as I understand). I do see these fields being added to the .h5 file in the data_prep_util.py
file but I don't see the faceid
field there
Also if I pass my data to the helper function provided in the data_prep_util.py
file, the generated .h5 file can be used for training right?
from pointnet.
Hi @skymaze
You can set a MAX number of points during training, if there are less than MAX points, just replicate existing points should be fine -- since we use max that will not alter final result. If there are more than MAX, you can randomly subsample the points.
during test you can have a smaller batch size and even larger MAX to evaluate all points :)
or if there are too many you can compute result in two steps -- by firstly extracting point embedding and then aggregate.
Hope it helps!
Best,
Charles
from pointnet.
When batching presumably you need to mask the batch before pooling to ensure the extra missing points are not included?
I did something like this:
# Turns the input list into a single tensor, padding the outputs.
# Produces a mask of size batch_size x max_list_len x 1
def batchToArrays(input_list):
max_len = 0
out = []; seq_len = []; masks = []
for i in input_list: max_len = max(len(i),max_len)
for l in input_list:
# Zero pad output
out.append(np.pad(np.array(l,dtype=np.float32), ((0,max_len-len(l)),(0,0)), mode='constant'))
# Create mask... (max_len x 1 vector with len(l) ones and rest zeros)
# Extra dimension is left in for easy broadcasting
masks.append(np.pad(np.array(np.ones((len(l),1)),dtype=np.float32), ((0,max_len-len(l)),(0,0)), mode='constant') )
return out, masks
and then:
def mask_and_pool(elems, mask, pool_type='max_pool'):
# Use broadcasting to multiply
masked_elems = tf.multiply(elems, mask)
# Pool using max pooling
embed = tf.reduce_max(masked_elems, axis=1)
return embed
My batch and num_points are set to None in the placeholder so I don't have to worry about the exact size, just about making sure everything has the same dimensions.
from pointnet.
If that's max pooling then it won't matter in fact. Replicating points will not alter max pooled result.
If it's average pooling then you do need to add a mask.
from pointnet.
Related Issues (20)
- meshlab
- PointNet for angle regression
- Area_5/hallway_6 HOT 1
- Issued certificate has expired HOT 1
- Annotation HOT 1
- A lightweight Cylinder3D model with much higher performance is now available!!!
- Isn't this section incorrect? HOT 1
- __init__() missing 1 required positional argument: 'dtype'
- How much memory needed for sem_seg training HOT 2
- How to visualize the semantic segmentation results through ROS
- how to use PointNet model in live inference HOT 1
- cant download dataset with HDF5 data. Help! HOT 1
- Segment point clouds with different point numbers
- Cannot get modelnet40 from server HOT 3
- Conv2D x Conv1D
- Input transform and point cloud with features on the points
- Is normalization to unit sphere mandatory?
- Tensorflow-TensorRT Integration error
- How does the the T-Net achieve translation invariance?
- how to use cpu
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pointnet.