Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >AI识万物:从0搭建和部署手语识别系统 ⛵

AI识万物:从0搭建和部署手语识别系统 ⛵

原创
作者头像
ShowMeAI
发布于 2022-08-09 10:59:57
发布于 2022-08-09 10:59:57
1K00
代码可运行
举报
文章被收录于专栏:ShowMeAI研究中心ShowMeAI研究中心
运行总次数:0
代码可运行

💡 作者:韩信子@ShowMeAI 📘 深度学习实战系列:https://www.showmeai.tech/tutorials/42 📘 计算机视觉实战系列: https://www.showmeai.tech/tutorials/46 📘 本文地址:https://www.showmeai.tech/article-detail/292 📢 声明:版权所有,转载请联系平台与作者并注明出处 📢 收藏ShowMeAI查看更多精彩内容

据北京听力协会预估数据,我国听障人群数量已过千万。而在全球范围内有4.66亿人患有残疾性听力损失,约占全世界人口的5%。聋哑人士很特殊,他们需要使用手语进行交流,其他与常人无异,我国存在特殊教育水平在各城市中发展力度具有较大差异,国家通用手语推广程度浅,但不懂手语,与听力障碍者交流会非常困难。

在本篇内容中,ShowMeAI 借助深度学习与神经网络技术,针对这个问题从 0 构建 1 个应用程序,检测手语并将其翻译给其他人进而打破手语隔阂。

搭建和部署完成后,你可以通过摄像头,轻松测试模型,如下图所示,快来一起试试吧。这个动图中的手势代表的单词,见文末哦!

💡 手语介绍

我们先来简单了解一下手语,它由 3 个主要部分组成:

  • 手指拼写:这是一种手动的交流方式,用双手和手指拼写单词。每个字母都用指定的手位置表示。
  • 单词级符号词汇:这是一个大型视频数据集,用于识别单词或字母的整个手势。
  • 非手部特征:包括任何面部表情、嘴巴、舌头或身体姿势。

在本文中,我们先解决第①个部分的问题。我们准备使用的解决方案是基于视觉数据的神经网络

💡 深度学习与计算机视觉

人工智能计算机视觉的最典型的模型是卷积神经网络(CNN),它在典型的计算机视觉应用中(如图像识别、目标检测等)应用广泛。我们在本次应用的核心技术也将采用 CNN。

CNN 网络有着如上图所示的网络结构,典型的结构包括卷积层、池化层、激活层、全连接层等,对于输入图像,可以有效抽取图像内容表征,并进行分类或其他处理。卷积层等特殊结构,可以在控制参数量的前提下,保证良好的图像特征提取能力。

关于卷积神经网络的详细知识可以参考ShowMeAI下述教程:ShowMeAI深度学习教程 | 吴恩达专项课程 · 全套笔记解读 中的文章 卷积神经网络解读 ShowMeAI深度学习与计算机视觉教程 中的文章 卷积神经网络详解

💡 小试牛刀,打通流程

我们来构建一个 CNN 识别的流程,会分成以下基础步骤:

① 导入相关库

我们在这里主要使用 TensorFlow 构建网络与训练,会使用 Numpy 做数据计算与处理,以及使用 Matplotlib 进行简单可视化。

对于这些工具库,ShowMeAI都制作了快捷即查即用的速查表手册,大家可以在下述位置获得:Tensorflow 速查手册 Numpy 速查手册 Matplotlib 速查手册

我们先把这些工具库导入。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 导入工具库
import string
import pandas as pd
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
from tensorflow import keras
from functools import partial
from tensorflow.keras.preprocessing.image import ImageDataGenerator, array_to_img

② 读取数据集

本数据集为手语字母对应的数据集,图片 size 不大,所以也叫做 sign_mnist 数据集(类比手写数字数据集 mnist),部分示例图片如下

数据集大家可以在 🏆Kaggle平台对应数据集页面 下载,也可以通过ShowMeAI的百度网盘地址下载。

🏆 实战数据集下载(百度网盘):点击 这获取本文 [5] 从0搭建基于神经网络的手语识别系统 『sign_mnist 数据集』

ShowMeAI官方GitHubhttps://github.com/ShowMeAI-Hub

下面我们加载训练集与测试集并切分特征与标签:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 读取数据
test = pd.read_csv("sign_mnist_test.csv")
train = pd.read_csv("sign_mnist_train.csv")

# 输出基本信息
print("训练集维度", train.shape)
print("测试集维度", train.shape)
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 输出标签信息
labels = train["label"].value_counts().sort_index(ascending=True)
labels
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 切分特征与标签
train_x = train.drop(labels = "label", axis = 1)
train_y = train["label"]
test_x = test.drop(labels = "label", axis = 1)
test_y = test["label"]
train_x.head()
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 数据预处理与可视化

# 存储标签数据
test_classes= test_y
train_clasees = train_y

# 特征转为numpy格式
train_x = train_x.to_numpy()
test_x = test_x.to_numpy()

# 把数据转为3维图像数据(图片数量*宽*高,这里如果是灰度图,颜色通道为1,省略)
train_x = train_x.reshape(-1,28,28)
test_x = test_x.reshape(-1,28,28)
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 在训练集中取样30张图片,做可视化查看
def plot_categories(training_images, training_labels):
    fig, axes = plt.subplots(3, 10, figsize=(16, 15))
    axes = axes.flatten()
    letters = list(string.ascii_lowercase)

    for k in range(30):
        img = training_images[k]
        img = np.expand_dims(img, axis=-1)
        img = array_to_img(img)
        ax = axes[k]
        ax.imshow(img, cmap="Greys_r")
        ax.set_title(f"{letters[int(training_labels[k])]}")
        ax.set_axis_off()

    plt.tight_layout()
    plt.show()

plot_categories(train_x, train_y)

③ 卷积神经网络CNN搭建

我们使用 TensorFlow 的 high level API(即keras)搭建一个简易CNN神经网络,并拟合一下数据

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
def create_model():
    model = tf.keras.models.Sequential([
    # 卷积层
    tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(28, 28, 1)),
    # 池化层
    tf.keras.layers.MaxPooling2D(2,2),
    # 卷积层
    tf.keras.layers.Conv2D(32, (3,3), activation='relu'),
    # 池化层
    tf.keras.layers.MaxPooling2D(2,2),
    # 展平
    tf.keras.layers.Flatten(),
    # 全连接层
    tf.keras.layers.Dense(512, activation='relu'),
    # softmax分类
    tf.keras.layers.Dense(26, activation='softmax')])

    model.compile(
    optimizer='adam',  #优化器
    loss='sparse_categorical_crossentropy',  #损失函数
    metrics=['accuracy']) #评估准则
  
    return model
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 初始化模型
model = create_model()
# 拟合数据
history = model.fit(train_x, train_y, epochs=20, validation_data=(test_x, test_y))

我们这里在全量数据集上迭代20个轮次,结果如下:

我们可以看到,这里的数据并不特别复杂,在自己从头搭建的 CNN 模型上,经过训练可以达到训练集 100% 验证集 92% 的准确率。

我们再对训练过程中的「准确率」及「损失函数」变化值进行绘制,以了解模型状态。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 获取准确率与损失函数情况
acc = history.history['accuracy']
val_acc = history.history['val_accuracy']
loss = history.history['loss']
val_loss = history.history['val_loss']

# matplotlib绘制训练过程中指标的变化状况
epochs = range(len(acc))

plt.plot(epochs, acc, 'r', label='Training accuracy')
plt.plot(epochs, val_acc, 'b', label='Validation accuracy')
plt.title('Training and validation accuracy')
plt.legend()
plt.figure()

plt.plot(epochs, loss, 'r', label='Training Loss')
plt.plot(epochs, val_loss, 'b', label='Validation Loss')
plt.title('Training and validation loss')
plt.legend()

plt.show()

💡 问题与优化

① 深度网络与梯度消失

一般来说,随着 CNN 网络层数变深,模型的学习能力会变强,也能学到更多的信息。但训练深度CNN存在梯度消失的问题。

梯度消失和梯度爆炸部分内容也可以参考ShowMeAI的对吴恩达老师课程的总结文章 📘 深度学习教程 | 深度学习的实用层面

非常深的神经网络的梯度会很快变为零(反向传播的梯度连乘带来的问题),这最终会使整个梯度下降变慢。有一些特殊结构的神经网络,可以大程度缓解这个问题,比如最著名的 ResNet,当然,大家可以借助 ResNet 预训练模型快速迁移学习应用在我们当前的手语识别问题上,为了让大家对ResNet 细节更清晰,我们在这里手动搭建 ResNet-50(即50层的ResNet网络)来训练和做效果对比。

ResNet的详细讲解也可以参考ShowMeAI的 📘 深度学习教程 | 吴恩达专项课程 · 全套笔记解读中的文章 📘 深度学习教程 | 经典CNN网络实例详解。

② ResNet 模型简介

ResNet 是 Residual Networks 的简称,是迄今为止我们看到的最流行和最成功的深度学习模型之一。ResNets 由残差块组成,残差块的核心组件是『跳跃连接/skip-connection』。跳跃连接,也称为快捷连接,让神经网络跳过某些层并将一层的输出馈送到神经网络中另一层的输入。它能帮助模型避免乘以中间跳过的那些层的权重,从而有助于解决梯度消失的问题。

然而,使用 ResNet 和跳跃连接,由于中间有卷积层和池化层,一层输出的维度可能与另一层的输出维度不同。为了解决这个问题,可以使用两种方法:

  • 快捷连接填充多个零实体以增加其维度
  • 添加 1X1 卷积层来匹配维度。

但是,对于第二种方法,我们需要在输出中添加一个额外的参数,而第一种方法不需要。

③ ResNet为何有效

ResNet的效果核心有2点:

  • ① 它使用我们上面提到的跳跃连接,它跳过层来解决梯度消失的问题。
  • ② 它通过让模型学习恒等函数来确保最高层的性能至少与最低层一样好。

④ 构建ResNet-50

下面我们参考 keras 官方 ResNet 构建方式,构建一个 ResNet-50,如下所示,我们先构建基本模块,再组装成最终的网络。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# Defining the identity block of the Resnet-50 Model. 
def identity_block(X, f, filters, training=True):
    # filter of the three convs 
    f1,f2,f3 = filters
    X_shortcut = X 
    
    # First Component 
    X = tf.keras.layers.Conv2D(filters = f1, kernel_size = 1, strides = (1,1), padding = 'valid')(X)
    X = tf.keras.layers.BatchNormalization(axis = 3)(X, training = training) # Default axis
    X = tf.keras.layers.Activation('relu')(X)
   
    # Second Component 
    X = tf.keras.layers.Conv2D(filters = f2, kernel_size = f, strides = (1,1), padding = 'same')(X)
    X = tf.keras.layers.BatchNormalization(axis = 3)(X, training = training) # Default axis
    X = tf.keras.layers.Activation('relu')(X)
   
    # Third Component 
    X = tf.keras.layers.Conv2D(filters = f3, kernel_size = 1, strides = (1,1), padding = 'valid')(X)
    X = tf.keras.layers.BatchNormalization(axis = 3)(X, training = training) # Default axis
    
    # Adding the two tensors 
    X = tf.keras.layers.Add()([X_shortcut,X])
    X = tf.keras.layers.Activation('relu')(X)
    
    # Returning the last output
    return X
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# Defining the Convolution Block of the Resnet-50 Model. 
def convolutional_block(X, f, filters, s=2,training=True):
    # filter of the three convs 
    f1,f2,f3 = filters
    X_shortcut = X 
    
    # First Component 
    X = tf.keras.layers.Conv2D(filters = f1, kernel_size = 1, strides = (1,1), padding = 'valid')(X)
    X = tf.keras.layers.BatchNormalization(axis = 3)(X, training = training) # Default axis
    X = tf.keras.layers.Activation('relu')(X)
    
    # Second Component 
    X = tf.keras.layers.Conv2D(filters = f2, kernel_size = f, strides = (s,s), padding = 'same')(X)
    X = tf.keras.layers.BatchNormalization(axis = 3)(X, training = training) # Default axis
    X = tf.keras.layers.Activation('relu')(X)
    
    # Third Component 
    X = tf.keras.layers.Conv2D(filters = f3, kernel_size = 1, strides = (1,1), padding = 'valid')(X)
    X = tf.keras.layers.BatchNormalization(axis = 3)(X, training = training) # Default axis
    
    # Converting the Input Volume to the match the last output for addition. 
    X_shortcut =tf.keras.layers.Conv2D(filters = f3, kernel_size = 1, strides = (s,s), padding = 'valid')(X_shortcut)
    X_shortcut = tf.keras.layers.BatchNormalization(axis = 3)(X_shortcut, training = training)
    X = tf.keras.layers.Add()([X_shortcut,X])
    X = tf.keras.layers.Activation('relu')(X)
    
    # Adding the last two tensors
    X = tf.keras.layers.Add()([X, X_shortcut])
    X = tf.keras.layers.Activation('relu')(X)
    
    # Returning the output tensor
    return X
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# Defining a modified Resnet-50 Model using the Identity and Convolution Blocks. 
def ResNet50(input_shape = (28, 28, 1), classes = 26):
    
    # Defining the input as a tensor with shape input_shape
    X_input = tf.keras.Input(input_shape)
    
    # Zero-Padding
    X = tf.keras.layers.ZeroPadding2D((3, 3))(X_input)
    
    # Stage 1
    X = tf.keras.layers.Conv2D(64, (5, 5), strides = (1, 1))(X)
    X = tf.keras.layers.BatchNormalization(axis = 3)(X)
    X = tf.keras.layers.Activation('relu')(X)
    X = tf.keras.layers.MaxPooling2D((3, 3), strides=(2, 2))(X)

    # Stage 2
    X = convolutional_block(X, f = 3, filters = [64, 64, 256], s = 1)
    X = identity_block(X, 3, [64, 64, 256])
    X = identity_block(X, 3, [64, 64, 256])
    
    # Add an Average Pool Layer
    X = tf.keras.layers.AveragePooling2D((2,2))(X)

    # Output Layer
    X = tf.keras.layers.Flatten()(X)
    X = tf.keras.layers.Dense(classes, activation='softmax')(X)
    
    # Create Model
    model = tf.keras.Model(inputs = X_input, outputs = X)

    return model

⑤ 训练ResNet-50

下面我们在数据集上,使用 ResNet-50 网络进行训练

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 初始化模型
model = ResNet50()

# 编译
model.compile(optimizer="adam",metrics=["accuracy"],loss = "sparse_categorical_crossentropy")

# 训练
history = model.fit(train_x, train_y, validation_data = (test_x, test_y), epochs =10)

得到如下结果

💡 优化效果对比

我们对ResNet-50也绘制训练过程中准确率和损失函数的变化,如下

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 获取准确率与损失函数情况
acc = history.history['accuracy']
val_acc = history.history['val_accuracy']
loss = history.history['loss']
val_loss = history.history['val_loss']

# matplotlib绘制训练过程中指标的变化状况
epochs = range(len(acc))

plt.plot(epochs, acc, 'r', label='Training accuracy')
plt.plot(epochs, val_acc, 'b', label='Validation accuracy')
plt.title('Training and validation accuracy')
plt.legend()
plt.figure()

plt.plot(epochs, loss, 'r', label='Training Loss')
plt.plot(epochs, val_loss, 'b', label='Validation Loss')
plt.title('Training and validation loss')
plt.legend()

plt.show()

对比图如下:

我们观察到,从简单的 CNN 模型换到 ResNet 模型时,测试集的准确率从92% 到 97% 。也说明了,ResNet 的结构确实能够带来效果上的提升。

💡 部署与实时测试

在这里我们做一个简单的测试,使用 OpenCV 的视频录制功能,通过 python 收集我们的摄像头的镜头采集的图像并进行实时预测。

ShowMeAI给OpenCV工具库制作了快捷即查即用的 OpenCV 速查表手册,大家可以点击查看和下载。

具体的过程是,我们解析捕获的每一帧图像,将其处理为灰度图(类似于我们模型的训练集),在图像中心抓取一个 400*400 像素的正方形区域(参见 x0,x1,y0,y1),将正方形调整为我们最初的 28x28 大小并使用我们的模型进行测试(之前保存到 .h5 文件)。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 导入工具库
import keras
import numpy as np
from PIL import Image
import string
import pandas as pd
import tensorflow as tf
代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 导入OpenCV
import cv2
from matplotlib import pyplot

# 设定维度
dim = (28, 28) # 图像维度
letters = list(string.ascii_lowercase) # 识别的字母

x0 = 1920 // 2 - 400 # 400px left of center
x1 = 1920 // 2 + 400 # 400px right of center
y0 = 1080 // 2 - 400 # 400px right of center
y1 = 1080 // 2 + 400 # 400px right of center

# 初始化视频捕获
video=cv2.VideoCapture(0)

cv2.namedWindow('Webcam') # 构建1个窗口
cv2.moveWindow('Webcam',40,30) # 放置窗口

while video.isOpened(): # 只要没有关掉实时摄像头
    ret,capture = video.read() # 抓取每个视频帧
    cropped = capture[y0:y1, x0:x1] # 截取
    img = cv2.cvtColor(cropped, cv2.COLOR_BGR2GRAY) # 转成灰度图
    img = cv2.GaussianBlur(img, (5, 5), 0) # 图像平滑
    img = cv2.resize(img, dim) # 图像大小缩放
    pyplot.imshow(img, cmap='gray') # 可视化展示图片
    pyplot.show() # 展示
    img = np.reshape(img, (1,img.shape[0],img.shape[1],1))
    img = tf.cast(img, tf.float32)
    pred=model.predict(img)

    # 可视化实时效果
    cv2.rectangle(capture, (x0,y0),(x1,y1),(255,0,0),2) # 为图片添加矩形框
    cv2.putText(capture,'{} res50'.format(letters[np.argmax(pred[0])]),(x0+25,y0+50),cv2.FONT_HERSHEY_SIMPLEX,0.9,(0,255,0),1) # 预测字母
    cv2.imshow('Webcam', capture) # 展示视频
    
    # 结果输出
    print(pred)
    print(letters[np.argmax(pred[0])])
    
    # 退出视频输入
    key = cv2.waitKey(1)
    if key == ord('q'):
        break
video.release()
cv2.destroyAllWindows()

为了更轻松地对预估结果查看,我们把将预测的字母显示在实时画面上(请参阅下面的 gif 以测试单词 hello)。

💡 参考资料

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
UG编程基本操作及加工工艺
肄本章主要介绍UG编程的基本操作及相关加工工艺知识,读者学习完本章后将会对UG编程知识有一个总体的认识,懂得如何设置编程界面及编程的加工参数。另外,为了使读者在学习UG编程前具备一定的加工工艺基础,本章还介绍了数控加工工艺的常用知识。
用户7505898
2020/09/22
1.9K0
UG编程基本操作及加工工艺
UG-CAM点位加工与数控加工仿真软件的综合应用
UG是世界上著名的功能强大,CAM软件技术最具代表性的软件,加工策略最丰富的数控加工、设计、编程软件。本文以一个一般孔数控加工工艺为例,论述UG编程操作的技巧以及编程操作过程,利用加工功能中的点位加工操作完成一般孔的加工,并将UG-CAM生成的数控加工程序导入仿真系统进行加工模拟,最终生成数控仿真加工及NC程序。
UG数控编程
2020/04/21
1.2K0
UG-CAM点位加工与数控加工仿真软件的综合应用
五轴UG(NX)后处理
UG作为一种优秀的CAD/CAM软件,他几乎可以覆盖从设计到加工的方方面面。利用UG NX CAM加工模块产生刀轨。但是不能直接将这种未修改过的刀轨文件传送给机床进行切削工件,因为机床的类型很多,每种类型的机床都有其独特的硬件性能和要求,比如他可以有垂直或是水平的主轴,可以几轴联动等。此外,每种机床又受其控制器(controller)的控制。控制器接受刀轨文件并指挥刀具的运动或其他的行为(比如冷却液的开关)。但控制器也无法接受这种未经格式化过的刀轨文件,因此,刀轨文件必须被修改成适合于不同机床/控制器的特定参数,这种修改就是所谓的后处理。
用户7505898
2020/11/22
3.1K0
五轴UG(NX)后处理
UG编程大神总结七点核心技巧,请速速收藏!
1、完成一个程序的生成需求经过以下几个步骤:数控编程能够分为四个阶段,准备工作、技术方案、数控编程、程序定形。
UG数控编程
2020/05/04
1.6K0
UG编程大神总结七点核心技巧,请速速收藏!
PowerMILL快速入门
PowerMILL是一种专业的数控加工编程软件,由英国Delcam Plc公司研制开发。Delcam Plc是世界领先的专业化CAD/CAM软件公司,其软件产品适用于具有复杂形体的产品、零件及模具的设计制造,广泛地应用于航空航天、汽车、船舶、内燃机、家用电器、轻工产品等行业,尤其对塑料模、压铸模、橡胶模、锻模、大型覆盖件冲压模、玻璃模具等的设计与制造具有明显的优势。
用户7505898
2021/02/01
1.8K0
PowerMILL快速入门
Mastercam X2基本操作
本章重点介绍基础知识和最常用的操作命令。通过本章的学习,用户可以了解Mastercam软件的功能特点以及最常用的操作。
用户7505898
2020/10/10
2.9K0
Mastercam X2基本操作
Mastercam挖槽刀路的设置
图3-1a为一个零件的立体图,零件高度为20mm,挖槽深度为15mm,图3-1b为加工过程仿真后的效果图。
lrglu
2022/03/30
1.4K0
Mastercam挖槽刀路的设置
UG编程手册
准备几何(Prepare Geometry)-------------------------------(2)
用户7505898
2020/09/28
2.3K0
UG编程手册
UG编程精讲
初学者首先把每个指令特有的图标熟记,因为仔细观察,会发现图标已经将命令自身的含义表述的非常清楚,理解后更容易学习。
用户7505898
2020/09/23
1.5K0
UG编程精讲
VERICUT如何搭建车铣中心
构建一个倾斜45°的卧式车床如下图,因此X轴有45°的斜度。塔盘上有12个指针位置,样板程序将使用3把刀具,机床初始位置在X460Z520。
lrglu
2022/05/16
3.4K0
VERICUT如何搭建车铣中心
UG初级教程
Unigraphics Solutions公司(简称UGS)是全球著名的MCAD供应商,主要为汽车与交通、 航空航天、日用消费品、通用机械以及电子工业等领域通过其虚拟产品开发(VPD)的理念提供多级化的、集成的、企业级的包括软件产品与服务在内的完整的MCAD解决方案。其主要的CAD产品是UG。
用户7505898
2020/10/11
2.2K0
UG初级教程
ug4入门教程
UG NX是一个功能非常强大的CAD/CAM/CAE软件,通过这一单元,我们来认识一下UG NX,并开始我们的学习。重点在于NX中视图视角的调整操作。
用户7505898
2020/09/08
3.5K0
ug4入门教程
Mastercam进刀方式设置
Mastercam进刀方式的设定在数控铣削中有很多不同于普通铣削的工艺性问题需要考虑,切削前的进刀方式就是其中之一。切削前的进刀方式有两种形式:一是垂直进刀方向,另一是水平进刀方向。对于数控加工来说,这两个方向的进刀都与普通铣削加工不同。下面就此讲述一下数控加工中进刀方式的设定方法。
lrglu
2022/03/30
2.1K0
Mastercam进刀方式设置
MastercamX5中文版实例教程
Mastercam作为一款专业的CAD/CAM一体化软件,自问世以来,一直以其独有的特点在专业领域享有很高的声誉。目前它已培育了一群专业人员,拥有了一批忠实的用户。
用户7505898
2020/09/27
3.6K0
MastercamX5中文版实例教程
数控铣床编程实例 数控铣床操作详解
数控铣床操作详解 实例一 毛坯为70㎜×70㎜×18㎜板材,六面已粗加工过,要求数控铣出如图2-23所示的槽,工件材料为45钢。 根据图样要求、毛坯及前道工序加工情况,确定工艺方案及加工路线: 以已加工过的底面为定位基准,用通用台虎钳夹紧工件前后两侧面,台虎钳固定于铣床工作台上。 工步顺序 铣刀先走两个圆轨迹,再用左刀具半径补偿加工50㎜×50㎜四角倒圆的正方形。 每次切深为2㎜,分二次加工完。 选择机床设备:根据零件图样要求,选用经济型数控铣床即可达到要求。故选用XKN7125型数控立式铣床。 选择
企鹅号小编
2018/02/28
2.5K0
数控铣床编程实例 数控铣床操作详解
UG和Mastercam在编程实例中的对比
数控编程、车铣复合、普车加工、Mastercam、行业前沿、机械视频,生产工艺、加工中心、模具、数控等前沿资讯在这里等你哦
lrglu
2023/11/14
1.1K0
UG和Mastercam在编程实例中的对比
数控铣床切削加工工艺的四个技巧
数控编程、车铣复合、普车加工、行业前沿、机械视频,生产工艺、加工中心、模具、数控等前沿资讯在这里等你哦
lrglu
2023/02/24
7050
数控铣床切削加工工艺的四个技巧
弯管内部拐角铣削
数控编程、车铣复合、普车加工、Mastercam、行业前沿、机械视频,生产工艺、加工中心、模具、数控等前沿资讯在这里等你哦
lrglu
2023/11/15
3100
弯管内部拐角铣削
巧妙运用4种数铣加工方法
数控编程、车铣复合、普车加工、Mastercam、行业前沿、机械视频,生产工艺、加工中心、模具、数控等前沿资讯在这里等你哦
lrglu
2023/12/16
4700
巧妙运用4种数铣加工方法
MasterCAM后处理修改特殊技巧
MasterCAM后处理修改特殊技巧一.1    MasterCAM后处理修改特殊技巧:
用户7505898
2020/10/09
7.4K1
MasterCAM后处理修改特殊技巧
相关推荐
UG编程基本操作及加工工艺
更多 >
LV.1
郑州电子商务职业学院数控编程教师
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验