Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >resnet18[通俗易懂]

resnet18[通俗易懂]

作者头像
全栈程序员站长
发布于 2022-09-01 08:56:20
发布于 2022-09-01 08:56:20
1.6K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

前言

在前篇vgg16之后,无法成功训练vgg16,发现是自己电脑可用的显存太低了,遂放弃。

在2015 ILSVRC&COCO比赛中,何恺明团队提出的Resnet网络斩获第一,这是一个经典的网络。李沐说过,如果要学习一个CNN网络,一定是残差网络Resnet。与VGG相比,Resnet则更加出色,为后续的研究做下铺垫 这是Resnet论文翻译参考链接:https://blog.csdn.net/weixin_42858575/article/details/93305238

在之前的神经网络,存在两个问题:

  1. 网络收敛速度很慢,在用vgg16训练做cifar分类的时候,收敛速度很慢,与resnet相比,收敛速度慢至几倍甚至十倍。而且一旦出现梯度爆炸或者梯度消失,则会影响网络的收敛
  2. 随着网络的加深,准确率达到饱和,然后开始下降。这称之为退化。

从上面这幅图可以看出,在一定的训练迭代中,适合的浅层网络要比深层网络有更低的训练误差和测试误差

Resnet在当时打破了网络越深,性能越好的共识,而且残差结构能加速学习,使得模型更加容易学习,也能有效地防止梯度爆炸或者消失。

为什么残差网络更容易学习特征?

  1. 从论文中可以看出,Resnet网络没有使用Dropout,而是利用了Bn层和平均池化层进行正则化,有效加快训练。
  2. 使用很少的池化层,间接加快训练
  3. 残差结构能够减少学习压力,在学习过程中,可以通过Shortcut连接学习冗余度比较高的地方,整体看,网络不再依赖整个映射,因此能够学习地更好。
  4. 还有一个可能,Resnet就像是集成学习,将每一个残差模块以某种加权方式学习起来。该观点属于猜测,写下来是为了做个标记,在未来可以根据资料印证。

区分退化和过拟合: 退化:指的是网络深度增加,网络准确度出现饱和,甚至出现下降 过拟合:指的是网络在训练集训练的很好,但是在未知的测试集表现地很差

下图是Resnet系列,包括Resnet18、Resnet34、Resnet50、Resnet101、Resnet152

在keras中没有找到Resnet18的网络,所以本次复现的是Resnet18,如果有问题,请联系我。本次我根据一些帖子以及pytorch的源码去核对我复现的版本,复现的代码参照了keras源码。

代码
Resnet18
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from keras import backend
from keras.applications import imagenet_utils
from keras.engine import training
from keras.layers import VersionAwareLayers

layers = VersionAwareLayers()
def ResNet18(input_tensor=None,
             input_shape=None,
             classes=1000,
             use_bias=True,
             classifier_activation='softmax',
             weights=None):
    bn_axis = 3 if backend.image_data_format() == 'channels_last' else 1
    if input_tensor is None:
        img_input = layers.Input(shape=input_shape)
    else:
        if not backend.is_keras_tensor(input_tensor):
            img_input = layers.Input(tensor=input_tensor, shape=input_shape)
        else:
            img_input = input_tensor

    # conv1_conv
    x = layers.ZeroPadding2D(
        padding=((3, 3), (3, 3)), name='conv1_pad')(img_input)
    x = layers.Conv2D(64, 7, strides=2, use_bias=use_bias, name='conv1_conv')(x)
    x = layers.BatchNormalization(
        axis=bn_axis, epsilon=1.001e-5, name='conv1_bn')(x)
    x = layers.Activation('relu', name='conv1_relu')(x)
    x = layers.ZeroPadding2D(padding=((1, 1), (1, 1)), name='pool1_pad')(x)
    x = layers.MaxPooling2D(3, strides=2, name='pool1_pool')(x)

    # 第二段卷积
    x = block1(x, filters=64, kernel_size=3, conv_shortcut=False, name="conv2_block1")
    x = block1(x, filters=64, kernel_size=3, conv_shortcut=False, name="conv2_block2")

    # 第三段卷积
    x = block1(x, filters=128, kernel_size=3, stride=2, conv_shortcut=True, name="conv3_block1")
    x = block1(x, filters=128, kernel_size=3, conv_shortcut=False, name="conv3_block2")

    # 第四段卷积
    x = block1(x, filters=256, kernel_size=3, stride=2, conv_shortcut=True, name="conv4_block1")
    x = block1(x, filters=256, kernel_size=3, conv_shortcut=False, name="conv4_block2")

    # 第五段卷积
    x = block1(x, filters=512, kernel_size=3, stride=2, conv_shortcut=True, name="conv5_block1")
    x = block1(x, filters=512, kernel_size=3, conv_shortcut=False, name="conv5_block2")

    x = layers.GlobalAveragePooling2D(name='avg_pool')(x)
    imagenet_utils.validate_activation(classifier_activation, weights)
    x = layers.Dense(classes, activation=classifier_activation,
                     name='predictions')(x)

    model = training.Model(img_input, x, name="Resnet18")
    return model


def block1(x, filters, kernel_size=3, stride=1, conv_shortcut=True, name=None):
    bn_axis = 3 if backend.image_data_format() == 'channels_last' else 1

    if conv_shortcut:
        shortcut = layers.Conv2D(
            filters, 1, strides=stride, name=name + '_0_conv')(x)
        shortcut = layers.BatchNormalization(
            axis=bn_axis, epsilon=1.001e-5, name=name + '_0_bn')(shortcut)
    else:
        shortcut = x

    x = layers.Conv2D(
        filters, kernel_size,strides=stride, padding='SAME', name=name + '_1_conv')(x)
    x = layers.BatchNormalization(
        axis=bn_axis, epsilon=1.001e-5, name=name + '_1_bn')(x)
    x = layers.Activation('relu', name=name + '_1_relu')(x)

    x = layers.Conv2D(
        filters, kernel_size, padding='SAME', name=name + '_2_conv')(x)
    x = layers.BatchNormalization(
        axis=bn_axis, epsilon=1.001e-5, name=name + '_2_bn')(x)

    x = layers.Add(name=name + '_add')([x, shortcut])
    x = layers.Activation('relu', name=name + '_out')(x)
    return x
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from resnet18_version1.resnet import ResNet18
from keras.utils.vis_utils import plot_model

# 通过plot_model保存keras版本resnet18的模型结构
model = ResNet18(input_shape=(224,224,3),classes=10)
model.summary()
plot_model(model,to_file="./resnet18.png",show_shapes=True)
下图是plot_model函数保存下来的Resnet18网络结构,欢迎大家指出问题
训练

这次依旧训练cifar10,将cifar10分成训练集、验证集、测试集。接下来贴代码,本次训练和上篇vgg16一样,大家可以参照上一篇。按照其他大佬的经验,在不大修改模型的情况下,按照比赛的记录,测试的结果应该在85%+。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import glob
import os, sys
import random
from concurrent.futures import ThreadPoolExecutor
import cv2
import numpy as np
import tensorflow as tf
from keras.applications.resnet import ResNet, ResNet50
from keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.applications.vgg16 import VGG16

from resnet18_version1.resnet import ResNet18

os.environ["CUDA_VISIBLE_DEVICES"] = "0"
# # tensorflow 2.0写法
config = tf.compat.v1.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.98
config.gpu_options.allow_growth = True
sess = tf.compat.v1.Session(config=config)

cifarlabel = ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
train_path = r""
test_path = r""
valid_path = r""
batch_size = 8


def train():
    # 数据增强方式
    transform = ImageDataGenerator(rescale=1. / 255, rotation_range=random.randint(0, 30), width_shift_range=random.randint(0, 5),
                                   height_shift_range=random.randint(0, 5))

    train_data = transform.flow_from_directory(train_path, target_size=(32, 32), shuffle=True, batch_size=batch_size)
    valid_data = transform.flow_from_directory(valid_path, target_size=(32, 32), shuffle=True, batch_size=batch_size)

    model = ResNet18(
        weights=None,
        classes=10,
        input_shape=(32, 32, 3)
    )
    early_stopping = tf.keras.callbacks.EarlyStopping(monitor='loss', min_delta=0.001, patience=3, verbose=0,
                                                      mode='auto',
                                                      baseline=None, restore_best_weights=False)
    model.compile(optimizer="Adam",
                  loss=tf.keras.losses.categorical_crossentropy,
                  metrics=['accuracy'])
    model.fit_generator(train_data, epochs=50,
                        callbacks=[early_stopping], validation_data=valid_data)
    model.save("./resnet18.h5")


def write_img(path, img, label, index):
    print(index)
    label = str(label)
    dir = os.path.join(path, label)
    if not os.path.exists(dir):
        os.makedirs(dir)
    img_path = os.path.join(dir, str(index) + ".jpg")
    cv2.imwrite(img_path, img)


def gen_data():
    (train_image, train_label), (test_image, test_label) = tf.keras.datasets.cifar10.load_data()
    print(train_image[3].shape, cifarlabel[int(train_label[3])])  # 查看数据格式
    path = train_path
    with ThreadPoolExecutor(max_workers=None) as t:
        for index, i in enumerate(range(len(train_image))):
            t.submit(write_img, path, train_image[index], int(train_label[index]), index)
    path = test_path
    with ThreadPoolExecutor(max_workers=None) as t:
        for index, i in enumerate(range(len(test_image))):
            t.submit(write_img, path, test_image[index], int(test_label[index]), index)
    valid_path = os.path.join(os.path.dirname(train_path), "valid")
    for i in os.listdir(train_path):
        dirname = os.path.join(train_path, i)
        valid_dir = os.path.join(valid_path, i)
        if not os.path.exists(valid_dir):
            os.makedirs(valid_dir)
        files = os.listdir(dirname)
        files = random.sample(files, len(files))
        for j in files[:int(len(files) * 0.1)]:
            os.rename(os.path.join(dirname, j), os.path.join(valid_dir, j))


# keras flow_from_directory会无限循环提供batch图片,
# 现在写一个伪迭代,仿flow_from_directory会无限循环提供batch图片,
# 缺点很多,比不上源代码,而且路径只有2级。我定义的是数字类名,这里刚好也使用数字。
# 如果自己自定义数据集的话,需要自己修改此处代码
def loader(path, batch_size, target_size=(224, 224), shuffle=True):
    files = glob.glob(os.path.join(path, "*", "*.jpg"))
    if shuffle:
        random.shuffle(files)
    labels = [os.path.basename(os.path.dirname(file)) for file in files]
    # print(files[0],labels[0])
    for i in range(0, len(files), batch_size):
        imgs = files[i:i + batch_size]
        imgs = [cv2.imread(img) for img in imgs]
        imgs = [cv2.resize(img, target_size) for img in imgs]
        imgs = [tf.convert_to_tensor(img) for img in imgs]
        imgs = tf.convert_to_tensor(imgs)
        labelss = labels[i:i + batch_size]
        yield (imgs, labelss)


def test():
    # 数据增强方式 刚开始没有给图片归一化,准确率一直在10%左右
    transform = ImageDataGenerator(rescale=1. / 255)

    test_data = transform.flow_from_directory(test_path, target_size=(224, 224), shuffle=True, batch_size=batch_size,class_mode="sparse")

    model = tf.keras.models.load_model("/data/kile/other/vgg16/resnet18_version1/model/0.415565_resnet18.h5",compile=False)
    allCount = 0
    trueCount = 0
    for index, i in enumerate(test_data):
        if index >= len(test_data):
            break
        predict_result = model.predict(i[0])
        # 预测的label
        predict_label = np.argmax(predict_result, axis=1).tolist()
        # 实际的label
        label = i[1]
        print(allCount, predict_label, label)
        for a, b in zip(predict_label, label):
            allCount += 1
            if a == int(b):
                trueCount += 1
    print(f"allCount:{ 
     allCount} trueCount:{ 
     trueCount} true_percent:{ 
     trueCount / allCount}")


if __name__ == '__main__':
    # gen_data() 第一次使用就好了 不用重复
    train()
    test()
训练结果:总共训练了20个epoches,但是在第15-18个epoches时,模型达到比较优秀的结果
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Epoch 1/20
2022-01-02 13:55:16.442882: I tensorflow/stream_executor/cuda/cuda_dnn.cc:369] Loaded cuDNN version 8204
2813/2813 [==============================] - 472s 166ms/step - loss: 1.4426 - accuracy: 0.4791 - lr: 0.0100 - val_loss: 1.2521 - val_accuracy: 0.5508 - val_lr: 0.0100
/root/anaconda3/envs/py36/lib/python3.6/site-packages/keras/utils/generic_utils.py:497: CustomMaskWarning: Custom mask layers require a config and must override get_config. When loading, the custom mask layer must be passed to the custom_objects argument.
  category=CustomMaskWarning)
Epoch 2/20
2813/2813 [==============================] - 468s 166ms/step - loss: 0.9934 - accuracy: 0.6509 - lr: 0.0100 - val_loss: 1.1318 - val_accuracy: 0.6276 - val_lr: 0.0100
Epoch 3/20
2813/2813 [==============================] - 465s 165ms/step - loss: 0.7994 - accuracy: 0.7200 - lr: 0.0100 - val_loss: 1.0890 - val_accuracy: 0.6560 - val_lr: 0.0100
Epoch 4/20
2813/2813 [==============================] - 465s 165ms/step - loss: 0.6785 - accuracy: 0.7641 - lr: 0.0100 - val_loss: 1.0904 - val_accuracy: 0.6406 - val_lr: 0.0100
Epoch 5/20
2813/2813 [==============================] - 466s 166ms/step - loss: 0.5909 - accuracy: 0.7921 - lr: 0.0100 - val_loss: 0.7205 - val_accuracy: 0.7576 - val_lr: 0.0100
Epoch 6/20
2813/2813 [==============================] - 469s 167ms/step - loss: 0.5240 - accuracy: 0.8202 - lr: 0.0100 - val_loss: 0.6743 - val_accuracy: 0.7686 - val_lr: 0.0100
Epoch 7/20
2813/2813 [==============================] - 468s 166ms/step - loss: 0.4629 - accuracy: 0.8409 - lr: 0.0100 - val_loss: 0.7149 - val_accuracy: 0.7650 - val_lr: 0.0100
Epoch 8/20
2813/2813 [==============================] - 464s 165ms/step - loss: 0.4110 - accuracy: 0.8576 - lr: 0.0100 - val_loss: 0.7091 - val_accuracy: 0.7670 - val_lr: 0.0100
Epoch 9/20
2813/2813 [==============================] - 466s 166ms/step - loss: 0.3740 - accuracy: 0.8717 - lr: 0.0100 - val_loss: 0.6305 - val_accuracy: 0.7976 - val_lr: 0.0100
Epoch 10/20
2813/2813 [==============================] - 470s 167ms/step - loss: 0.3314 - accuracy: 0.8846 - lr: 0.0100 - val_loss: 0.7267 - val_accuracy: 0.7786 - val_lr: 0.0100
Epoch 11/20
2813/2813 [==============================] - 463s 165ms/step - loss: 0.3009 - accuracy: 0.8947 - lr: 0.0100 - val_loss: 0.6524 - val_accuracy: 0.7990 - val_lr: 0.0100
Epoch 12/20
2813/2813 [==============================] - 463s 165ms/step - loss: 0.2707 - accuracy: 0.9073 - lr: 0.0100 - val_loss: 0.6691 - val_accuracy: 0.7934 - val_lr: 0.0100
Epoch 13/20
2813/2813 [==============================] - 464s 165ms/step - loss: 0.1561 - accuracy: 0.9498 - lr: 9.9999e-04 - val_loss: 0.4140 - val_accuracy: 0.8664 - val_lr: 1.0000e-03
Epoch 14/20
2813/2813 [==============================] - 463s 165ms/step - loss: 0.1306 - accuracy: 0.9608 - lr: 9.9999e-04 - val_loss: 0.4191 - val_accuracy: 0.8628 - val_lr: 1.0000e-03
Epoch 15/20
2813/2813 [==============================] - 472s 168ms/step - loss: 0.1198 - accuracy: 0.9646 - lr: 9.9999e-04 - val_loss: 0.4149 - val_accuracy: 0.8644 - val_lr: 1.0000e-03
Epoch 16/20
2813/2813 [==============================] - 463s 165ms/step - loss: 0.1080 - accuracy: 0.9682 - lr: 9.9999e-04 - val_loss: 0.4156 - val_accuracy: 0.8644 - val_lr: 1.0000e-03
Epoch 17/20
2813/2813 [==============================] - 472s 168ms/step - loss: 0.1019 - accuracy: 0.9697 - lr: 9.9999e-04 - val_loss: 0.4225 - val_accuracy: 0.8684 - val_lr: 1.0000e-03
Epoch 18/20
2813/2813 [==============================] - 464s 165ms/step - loss: 0.0959 - accuracy: 0.9721 - lr: 9.9999e-04 - val_loss: 0.4228 - val_accuracy: 0.8670 - val_lr: 1.0000e-03
Epoch 19/20
2813/2813 [==============================] - 470s 167ms/step - loss: 0.0883 - accuracy: 0.9750 - lr: 9.9999e-04 - val_loss: 0.4216 - val_accuracy: 0.8654 - val_lr: 1.0000e-03
Epoch 20/20
2813/2813 [==============================] - 476s 169ms/step - loss: 0.0868 - accuracy: 0.9752 - lr: 9.9999e-04 - val_loss: 0.4166 - val_accuracy: 0.8664 - val_lr: 1.0000e-03
接下来 我们取其中第16个epoches做测试,得到结果,准确率大概在88%
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
9968 [3, 4, 6, 7, 4, 9, 2, 5] [3. 4. 6. 7. 4. 2. 5. 5.]
9976 [9, 9, 3, 4, 4, 7, 4, 5] [9. 9. 3. 4. 4. 7. 4. 5.]
9984 [1, 9, 1, 3, 4, 0, 2, 8] [1. 9. 1. 3. 4. 0. 2. 8.]
9992 [3, 1, 9, 1, 9, 5, 1, 4] [3. 1. 9. 9. 9. 5. 1. 7.]
allCount:10000   trueCount:8792  true_percent:0.8792

补充,其实还有一种方式可以画出keras的结构图。而且是网页版的 https://netron.app/

结果模型我已经放在云盘 欢迎大家下载测试 https://url25.ctfile.com/f/34628125-532522905-23a4e6 (访问密码:3005)

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/141112.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
脑机接口破圈医疗!对五种疾病或有奇效,难怪马斯克吹爆【附下载】| 智东西内参
在马斯克“三只小猪和打游戏猴子”的推动下,脑机接口(Brain Computer Interface,BCI )技术近些年走近了大众视野。
脑机接口社区
2022/09/22
8950
脑机接口破圈医疗!对五种疾病或有奇效,难怪马斯克吹爆【附下载】| 智东西内参
医疗脑机接口技术的法律规制
正常情况下,大脑意图作用于外部世界需要借助身体的外周神经和运动系统,而脑机接口则绕过了人体这些正常的通路,运用计算机去解读大脑,并且让大脑藉由计算机与外界沟通。脑机接口运行的基本框架,首先是对大脑信号进行实时采集,而后对其进行特征提取与模式识别,最后是将模式识别的结果进行输出,与此同时,外部执行的结果将会对大脑产生一个反馈。
脑机接口社区
2024/05/22
2420
医疗脑机接口技术的法律规制
脑机接口技术介绍、应用与挑战
BCI系统根据脑电信号获取的方式,可分为非侵入式、半侵入式和侵入式三种。其位置和特征如图2所示。对非侵入式BCI的研究,由于只需要通过相关设备对大脑皮层的表面信号,直接进行采集和处理,因此不需要外科手术的介入,已成为BCI研究的热点方向。脑电信号由于其时间分辨率高,采集设备容易携带,便于投入使用等优点,正成为脑机接口应用于控制系统(轮椅、机械手等)的主要方式。
脑机接口社区
2020/07/01
1.7K0
探索脑机接口技术的潜在医学应用
脑机接口 (BCI) 技术是一个快速发展的领域,有可能彻底改变我们与技术和周围世界互动的方式。从控制假肢到恢复严重残疾患者的运动和沟通,BCI 技术为改善人类健康和生活质量带来了巨大希望。然而,与任何技术一样,脑机接口技术也存在潜在风险和危害,尤其是在医疗领域。
脑机接口社区
2023/09/19
3030
探索脑机接口技术的潜在医学应用
深圳先进院李骁健团队:植入式脑机接口技术向医疗器械转化的问题与挑战
近几年植入式脑机接口技术取得了非常显著的进步,从工程实现能力和服务功能场景来说,脑机接口技术已经达到了临床应用的临界点,在实验室科研成果向临床医疗器械转化过程中将会面临新的挑战。本文章由此出发,首先介绍了脑机接口技术常用的信号源,包括脑电图、皮层电图以及皮层内电信号的特点,其次叙述了解码能力和信息双向闭环的考量,并讨论了目前脑机接口商用机设计中存在的稳定性、生物相容性挑战,最后简单阐述产业化发展中政策、资金和技术路线的协同发展。本文旨在探讨植入式脑机接口技术在应用于医疗领域过程中在技术路线、产业发展等方面面临的问题与挑战。
脑机接口社区
2023/10/23
6470
深圳先进院李骁健团队:植入式脑机接口技术向医疗器械转化的问题与挑战
脑机接口概述专题一 | 从运动脑机接口到情绪脑机接口:马斯克脑机接口公司Neuralink背后的原理
编者的话:这篇文章是专业顶刊里发表的唯一一篇提出把脑机接口概念从运动系统扩展到情绪系统的观点文章,而且从系统实现的角度该说的基本也都说了。本质上讲,脑机接口是控制与学习的过程,是贯通神经系统与计算机系统的智能科学。脑机接口又是涉及多种技术有机集成的大工程。高级形式的脑机接口将是人脑智能与人工智能的集大成者。目前的技术瓶颈在其最前端的神经界面上,信号的质量和带宽都被其所限。很多人知道马斯克的脑机接口公司-Neuralink。有人仿制他们的模拟前端芯片就号称可以正面PK了,这种想法显然肤浅了。他们目前展示的仅仅是脑机接口的部分前端技术-信号转换器。这篇文章就是在讲它后边的事。
脑机接口社区
2020/07/01
1K0
脑机接口概述专题一 | 从运动脑机接口到情绪脑机接口:马斯克脑机接口公司Neuralink背后的原理
深度解析脑机接口技术的现状与未来!
通过在脑后插入一根线缆,我们就能够畅游计算机世界;只需一个意念我们就能改变“现实”;学习知识不再需要通过书本、视频等媒介,也不需要在花费大量的时间,只需直接将知识传输到大脑当中即可。这是1999年上映的经典科幻片《黑客帝国》当中,为我们描绘的画面。这并非是天马行空的幻想,而是基于早已有之的“脑机接口”技术的的合理设想。
数据猿
2020/06/28
2K0
深度解析脑机接口技术的现状与未来!
《探秘事件相关电位:人工智能与脑机交互的深度融合》
在探索大脑奥秘与人工智能交互的征程中,事件相关电位(Event - Related Potentials,ERP)成为了一个关键的研究领域。它就像一把独特的钥匙,开启了大脑与机器直接对话的大门,为脑机交互技术带来了前所未有的发展机遇。
程序员阿伟
2025/02/25
860
《探秘事件相关电位:人工智能与脑机交互的深度融合》
脑机接口、数字永生与人类未来
在过去30年中,每当我的科学论文被退稿时,我都不得不应付那些劝告,他们不确定我将大脑和机器结合起来的设想是否正确,认为应该把这部分从论文中删掉。在那些令人痛苦的经历中,我会幻想有一天自己能够拯救这些充满疑问的想法,把其他人从这种想法中解放出来。这个机会终于来了。
小腾资讯君
2023/12/06
2020
脑机接口、数字永生与人类未来
2019Techo开发者大会|腾讯优图实验室郑冶枫:科幻电影之外的脑机接口技术探索
11月6-7日,由腾讯云发起的首届Techo开发者大会在北京举行,邀请海内外150位行业专家围绕前沿技术发展进行解读,聚集5000名开发者参与技术交流和探讨,旨在通过汇聚全球顶尖行业专家和技术爱好者,搭建一个开放、中立、活跃的技术交流平台。在前沿技术探索X论坛上,腾讯优图实验室总监郑冶枫带来了题为《脑机接口:揭开科幻表象,探索科学真相》的演讲,对近期大热的脑机接口的实现方式和应用场景进行了分享。
Techo
2019/11/13
7410
元宇宙的终极脑机接口离我们还有多远
最近元宇宙的概念很火。行行业业的人要是不聊元宇宙,出门都不好意思跟人打招呼。有支持的也有骂的,反正很热闹。说来说去,元宇宙可以说是VR等各种“R”技术的最新马甲。这里R是英文Reality的缩写,意思是“真实”。但是现有技术提供的各种“真实”体验,总觉得差那么点意思。
脑机接口社区
2022/08/24
3090
元宇宙的终极脑机接口离我们还有多远
解密脑机接口:专访CMU生物医学工程系主任贺斌
脑机接口能做什么?带上电极帽,你可以在实验室中用意念控制无人机飞行;在大脑皮层中植入电极,瘫痪病人能够用意念打字或者驱动轮椅。无论是无创还是有创的脑机接口,都试图在人类大脑与外部机器之间建立连接。过去几十年中,脑机接口技术稳步发展,一步步从科幻走向现实,也开始从实验室走向生活。2019年7月,埃隆·马斯克旗下 Neuralink 公司发布了一款缝纫机式的外科机器人,它可以在头骨上打洞,并将3072个微电极置入大脑皮层。
脑机接口社区
2020/06/30
8460
解密脑机接口:专访CMU生物医学工程系主任贺斌
情绪脑机接口:脑机接口概述专题三 | 从运动脑机接口到情绪脑机接口
编者的话:这篇文章是专业顶刊里发表的唯一一篇提出把脑机接口概念从运动系统扩展到情绪系统的观点文章,而且从系统实现的角度该说的基本也都说了。本质上讲,脑机接口是控制与学习的过程,是贯通神经系统与计算机系统的智能科学。脑机接口又是涉及多种技术有机集成的大工程。高级形式的脑机接口将是人脑智能与人工智能的集大成者。目前的技术瓶颈在其最前端的神经界面上,信号的质量和带宽都被其所限。很多人知道马斯克的脑机接口公司-Neuralink。有人仿制他们的模拟前端芯片就号称可以正面PK了,这种想法显然肤浅了。他们目前展示的仅仅是脑机接口的部分前端技术-信号转换器。这篇文章就是在讲它后边的事。
脑机接口社区
2023/02/13
5750
脑机接口给医疗带来了奇迹
2019 年,加州大学旧金山分校(University of California, San Francisco)的神经外科医生Edward Chang打开了一名绰号为“Pancho”的 36 岁男子的头骨,在他的大脑表面放置了一层薄薄的电极。这些电极从控制嘴、喉和其他身体部位运动的运动神经元收集电信号,从而产生语言。在Pancho的头部顶部植入一个小端口,将大脑信号传输给计算机。这种“脑机接口”(BCI)解决了一个棘手的医学问题。
脑机接口社区
2023/02/14
3040
脑机接口给医疗带来了奇迹
当思想与机器融合:脑机接口与人类的现在、困境与未来
当眼动追踪应用于捕捉受试者的视觉信息,脑电相关设备记录研究者的头皮表面神经活动……人的身体作为感知的媒介正愈发参与到人机交互的传播过程中。当思想与机器深入融合,通过人脑思想进行交流对话或成为更为便捷的方式,但技术对人的渗透,是否也在不断侵蚀着人的主体性、带来伦理困境? 作者 | 苏宸 编辑 | 陈彩娴 1 探索与实践 脑机接口(Brain-Computer Interface,简称「BCI」)是指通过在人脑神经与外部设备(比如计算机、机器人等)间建立直接通路,来实现神经系统和外部设备间信息交互与功能整合的技
AI科技评论
2022/03/03
4960
反思脑机接口技术:机器真的能控制我们的大脑吗?
猛烈的公牛在冲锋的途中锁定了双腿。它将双蹄扎进地下,在与之搏斗的人类参赛选手被刺伤之前停了下来。
AI科技评论
2021/07/02
5220
原创 | 脑机接口不断迎来重大突破,“思想钢印”还会远吗?
上个月,脑机接口领域再次迎来重大突破:使瘫痪者成功恢复运动能力,触觉准确率高达 90%。
数据派THU
2020/05/26
6370
中国信通院周洁等:科技为翼助飞梦想 脑机为伴改变生活
近年来,脑机接口技术发展与应用探索呈现加速趋势,全球各国普遍关注和重视,以Neuralink为代表的公司研究成果发布屡屡将脑机接口热点话题推向公众视野。脑机接口技术的产业发展具有战略意义,目前呈现技术创新不断迭代、产业生态不断壮大、应用范围不断拓展的态势。
脑机接口社区
2023/02/14
4380
中国信通院周洁等:科技为翼助飞梦想 脑机为伴改变生活
成功!马斯克官宣首个Neuralink脑机接口人类,意念操控鼠标,全民机器人时代来了?
就在刚刚,马斯克宣布,第一个植入Neuralink的人类患者,已经可以通过思考移动计算机鼠标了!
新智元
2024/02/26
1490
成功!马斯克官宣首个Neuralink脑机接口人类,意念操控鼠标,全民机器人时代来了?
脑虎科技NeuroXess完成数亿元A轮融资,持续推进侵入式脑机接口发展
12月28日,全球侵入式脑机接口解决方案领航者——脑虎科技NeuroXess(以下简称“脑虎科技”)正式宣布完成数亿元人民币A轮融资。本轮融资由中平资本领投,轻舟资本、国生资本(成都生物城)、上海赛领、演化博弈参与跟投,现有投资方盛大、联新资本、红杉中国持续追加投资。华兴资本担任本轮交易的独家财务顾问。
脑机接口社区
2023/02/14
2890
脑虎科技NeuroXess完成数亿元A轮融资,持续推进侵入式脑机接口发展
推荐阅读
脑机接口破圈医疗!对五种疾病或有奇效,难怪马斯克吹爆【附下载】| 智东西内参
8950
医疗脑机接口技术的法律规制
2420
脑机接口技术介绍、应用与挑战
1.7K0
探索脑机接口技术的潜在医学应用
3030
深圳先进院李骁健团队:植入式脑机接口技术向医疗器械转化的问题与挑战
6470
脑机接口概述专题一 | 从运动脑机接口到情绪脑机接口:马斯克脑机接口公司Neuralink背后的原理
1K0
深度解析脑机接口技术的现状与未来!
2K0
《探秘事件相关电位:人工智能与脑机交互的深度融合》
860
脑机接口、数字永生与人类未来
2020
2019Techo开发者大会|腾讯优图实验室郑冶枫:科幻电影之外的脑机接口技术探索
7410
元宇宙的终极脑机接口离我们还有多远
3090
解密脑机接口:专访CMU生物医学工程系主任贺斌
8460
情绪脑机接口:脑机接口概述专题三 | 从运动脑机接口到情绪脑机接口
5750
脑机接口给医疗带来了奇迹
3040
当思想与机器融合:脑机接口与人类的现在、困境与未来
4960
反思脑机接口技术:机器真的能控制我们的大脑吗?
5220
原创 | 脑机接口不断迎来重大突破,“思想钢印”还会远吗?
6370
中国信通院周洁等:科技为翼助飞梦想 脑机为伴改变生活
4380
成功!马斯克官宣首个Neuralink脑机接口人类,意念操控鼠标,全民机器人时代来了?
1490
脑虎科技NeuroXess完成数亿元A轮融资,持续推进侵入式脑机接口发展
2890
相关推荐
脑机接口破圈医疗!对五种疾病或有奇效,难怪马斯克吹爆【附下载】| 智东西内参
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验