通过对点云进行ESF全局特征提取,训练神经网络分类器,对点云进行分类。ESF特征提取见上述链接。
基于tensorflow2
python代码如下:
import tensorflow as tf
import numpy as np
dataset =tf.data.Dataset
a3 = np.loadtxt('')
train1 = np.array(a3)
label1 = np.loadtxt('')
label1 = tf.one_hot(label1,depth=3)
a4 = np.loadtxt('')
text = np.array(a4)
label_text = np.loadtxt('')
label_text = tf.one_hot(label_text,depth=3)
input_data = tf.keras.Input(shape=(640,),name='input_data')
##out=tf.keras.layers.Flatten()(input_data)
##out=tf.keras.layers.Dense(512,activation='relu',name='dense_1')(input_data)
##ou=tf.keras.layers.Dense(256,activation='relu',name='dense_2')(out)
out1=tf.keras.layers.Dense(128,activation='relu',name='dense_3')(input_data)
out2=tf.keras.layers.Dense(128,activation='relu',name='dense_4')(out1)
out3=tf.keras.layers.Dense(32,activation='relu',name='dense_5')(out2)
pre=tf.keras.layers.Dense(3,activation='softmax',name='predictions')(out3)
model=tf.keras.Model(inputs=input_data,outputs=pre)
print(model.summary())
model.compile(optimizer=tf.keras.optimizers.Adam(1e-4),
loss='categorical_crossentropy',metrics=['accuracy'])
tensorboard = tf.keras.callbacks.TensorBoard(histogram_freq=1)
model.fit(x=train1,y=label1,epochs=500,batch_size=1,verbose=2,callbacks=[tensorboard])
model.evaluate(x=text,y=label_text)
y_pred = model.predict(text,batch_size = 1)