人工智能交互挑战 记录 DAY 1

167 阅读15分钟

人工智能交互挑战 记录 DAY 1

1. 人工智能导论

● 人工智能的基本概念和历史发展

基本概念: 人工智能是一种使机器模仿人类只能行为的技术 包括:学习. 推理.感知.自然语言处理. AI技术,能够让计算机执行,比如:语音识别,视觉识别,情绪识别

● 机器学习与深度学习的了解

机器学习是什么
是人工智能的一个子领域,使得计算机能够从数据中学习,并在有明确的编程指令的情况下做出决策。机器学习算法可以分为:监督学习,无监督学习和强化学习等类型

● 自然语言处理的应用场景

深度学习
深度学习是指一种基于人工神经网络的机器学习方法,它使得计算机能够处理大量的数据,图像,语言。 它的学习模型通常由很多多层神经元组成

2. 研讨案例分析

● AlphaGo、自动驾驶技术和ChatGPT案例

● 各案例中应用的AI技术(如语音助手)

语音识别、自然语言处理、深度学习、知识图谱、多模态交互和个性化推荐技术

3. 人工智能体验

● 图像识别和语音识别的实际应用和背后技术

图像识别
图形识别是利用计算机的视觉技术来识别和分类图像中的物体,背后的技术包含卷积神经网络CNN,是通过逐层提取图像中的特征,从而精准的分类和识别

语言识别
使计算机能够识别语音,并把语音转换为文本,通常涉及:声学的模型,语言的模型和解码算法。深度神经网络DNN和循环神经网络RNN,使语言识别的关键技术

STT
声音->文本 Speech To Text

TTS
文本->声音 Text To Speech

● AI 实验室中的数据处理示例分析

4. 编辑器介绍与开发环境搭建

● 常用编程编辑器(VS Code, PyCharm)的优缺点

PyCharm
为python开发设计的一个集成开发环境(IDE),提供了丰富的代码分析,调试和集成工具 优点:功能全面,可以自动补全 ;缺点:占用系统资源很多,重量级
VS code
轻量级的编辑器,支持多种编程语言和插件扩展。 优点:界面简洁,速度快,可高度控制;缺点:功能不全面 

● 树莓派环境的搭建过程与其应用场景

树莓派环境的搭建过程

硬件准备
树莓派主板(如 Raspberry Pi 4 Model B)
电源适配器(5V 3A 的 USB-C 电源适配器)
Micro SD 卡(至少 8GB,建议 16GB 或更大)
显示器(HDMI 接口)

键盘和鼠标
可选:以太网线、无线网卡、外壳、散热片、风扇等
操作系统安装
下载树莓派官方操作系统 Raspbian(现在称为 Raspberry Pi OS)或其他第三方操作系统(如 Ubuntu MATE, Kali Linux 等)。
使用 SD 卡格式化工具(如 SD Card Formatter)格式化 Micro SD 卡。
使用镜像写入工具(如 balenaEtcher)将操作系统镜像写入 Micro SD 卡。

首次启动
将 Micro SD 卡插入树莓派的 SD 卡槽。
连接显示器、键盘、鼠标和电源适配器。
启动树莓派,按照屏幕提示进行初始设置,包括选择语言、地区、设置用户名和密码等。

网络配置
通过以太网线或无线网络连接树莓派到互联网。
配置无线网络(如果使用无线网卡),可以在首次启动前通过在 SD 卡根目录创建 wpa_supplicant.conf 文件进行配置,或在系统启动后通过图形界面或命令行进行配置。

系统更新和软件安装
更新系统软件包:sudo apt-get update 和 sudo apt-get upgrade。
安装所需的软件和工具,如编程环境(Python, Scratch)、多媒体软件、开发工具等。

远程访问配置
配置 SSH 远程登录,允许通过网络远程访问树莓派。
配置 VNC 或其他远程桌面工具,实现图形界面的远程访问。

树莓派的应用场景

教育
作为编程教学的平台,支持 Python, Scratch, C/C++ 等多种编程语言。
用于电子学和物理学的实验,如传感器实验、机器人控制等。

嵌入式系统
开发和测试嵌入式系统,如智能家居控制器、自动化设备等。
作为小型服务器,运行 Web 服务器、文件服务器、媒体服务器等。

物联网(IoT)
连接各种传感器和执行器,实现数据采集和控制。
构建 IoT 项目,如环境监测系统、智能农业系统等。

家庭自动化
控制家庭设备,如智能灯光、温度控制、安防系统等。
集成语音助手(如 Google Assistant, Amazon Alexa)实现语音控制。

媒体中心
作为媒体播放器,播放视频、音乐和图片。
集成 Kodi 等媒体中心软件,打造家庭影院系统。

游戏和娱乐
运行复古游戏模拟器,如 RetroPie, Recalbox 等。
作为游戏开发平台,支持游戏编程和测试。

科学研究
用于数据采集和分析,如气象站、生物监测等。
作为科学实验的控制平台,如机器人实验、物理实验等。

5. 编写首个程序脚本

● 编写“Hello World”程序

print('Hello World')

● 变量与数据类型

# 整型 int integer
a = 1 #<class 'int'>
b = 2 #<class 'int'>

print(type(a))

# 字符串 str string
c = 'SW'
# c = "喝喝"
# c = '''我今天没吃'''
# c = """我是一个大段落"""
print(c)

# 浮点 float
d = 3.14
print(type(d)) #<class 'float'>

# 列表 list
# 见名知意
stu_list = ['JJ','Kevin','tim','terrence']
print(stu_list)
print(type(stu_list)) #<class 'list'>
# 对列表里面的元素取值
# 下标 index,从0开始对应列表里的第一个元素
# print(stu_list[0])
# print(len(stu_list)) #length
# print(stu_list[0:3])
print(stu_list.count('jj'))
print(stu_list.pop(2))

# 字典 dict dictionary
# 键 key
# 值 value
# 键值对

classroom = {
    'name':'JJ',
    'gender':'Male',
    'age':3
}
print(classroom.keys())
print(classroom.values())
print(classroom.items())

# 元组 tuple,不可变类型的
# 用小括号( )
e = (1,2,3)

# 布尔类型 boolean
# True
# False

6. 树莓派概述与功能介绍

● 树莓派的硬件结构与功能特点

树莓派的应用领域

树莓派因其丰富的功能和灵活性,广泛应用于多个领域。以下是一些主要的应用场景:

教育和培训:

树莓派是学习编程和计算机科学的理想工具。它支持多种编程语言,如Python、Scratch和C++,并提供丰富的教育资源和教程。

物联网(IoT):

树莓派可以作为物联网网关或节点,连接各种传感器和设备,实现智能家居、环境监测和工业自动化等应用。

媒体中心:

通过安装LibreELEC或OSMC,树莓派可以变成一个功能强大的家庭媒体中心,播放高清电影、音乐和照片。

游戏机:

使用RetroPie,树莓派可以模拟多种经典游戏机,如NES、SNES、Sega Genesis等,重温经典游戏。

网络服务器:

树莓派可以用作小型Web服务器、文件服务器或数据库服务器,适合个人和小型企业使用。

机器人和自动化:

树莓派的GPIO接口可以连接各种传感器和执行器,控制机器人、机械臂和自动化设备。

树莓派的优势和局限

优势

低成本:树莓派的价格非常亲民,即使是最新型号的树莓派4,其价格也在50美元左右。

开源社区支持:树莓派拥有庞大的开源社区,提供丰富的资源、教程和项目示例。

灵活性:树莓派支持多种操作系统和编程语言,适用于各种应用场景。

丰富的外设接口:树莓派提供多种外设接口(如GPIO、USB、HDMI、I2C、SPI等),方便连接各种传感器和设备。

局限

性能有限:虽然树莓派的性能不断提升,但与传统的PC相比,仍有一定差距。对于需要高性能计算的应用,树莓派可能不太适合。

存储受限:树莓派主要依赖microSD卡作为存储介质,读写速度和容量有限。对于需要大量存储的应用,可能需要额外的存储解决方案。

电源要求:树莓派需要稳定的电源供电,特别是连接多个外设时,可能需要使用高质量的电源适配器。

7. Python 基础

● Python 语法结构的基本认识与实战应用

# 模拟火箭发射
time_counter = 10
for i in range(10):
    print(time_counter)
    time.sleep(0.5)
    time_counter -= 1

● 数据类型的选择

Python3 中常见的数据类型有:

Number(数字)
String(字符串)
bool(布尔类型)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)

● 条件语句与逻辑运算

# 如果 或者
# if...else...
# 如果 或者如果 或者
# if...elif...else
score_input = int(input('请输入你的学分'))
if score_input > 90:
    print('You are Honor Student')
elif 90 >= score_input > 80:
    print('You are Good Student')
elif 80 >= score_input > 70:
    print('You are Good Student')
else:
    print('学习不适合我.我打游戏去了!')
    
a = 1
b = 10
c = 50
d = 100
print(a+b)
print(a-b)
print(c*b)
print(d/c)
# 叠加运算
# a += 1
# b -= 10
# c *= 10
# d /= 100

8. 程序结构与逻辑运算

● 程序顺序结构与条件结构的设计与实现

● 循环结构的应用场景

例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向移动的指令。在这个场景中,让机器人向球门方向移动就是一个需要重复的动作

● 逻辑运算符的使用

9. 编写一个傻瓜式机器人

● 简单机器人程序的设计思路

确定目标和功能:
明确机器人需要完成什么任务。
确定机器人的基本功能,如移动、感知环境、执行特定动作等。

选择硬件平台:
根据功能需求选择合适的硬件,如微控制器(Arduino、Raspberry Pi等)、电机、传感器、执行器等。
确保硬件之间能够相互兼容并满足项目需求。

设计软件架构:
规划程序的结构,包括主循环、功能模块、通信接口等。
确定编程语言和开发环境,如C/C++、Python、Blockly等。

编写控制逻辑:
编写主控制循环,处理输入(传感器数据)和输出(电机控制、LED指示等)。
实现状态机或事件驱动逻辑,以响应不同的事件和状态变化。

传感器和执行器接口:
编写代码读取传感器数据,如距离、温度、光线等。
编写代码控制执行器,如电机、舵机、LED等。

用户交互和调试:
设计用户界面,如按钮、显示屏、远程控制等。
实现调试功能,如日志输出、状态监控、错误处理等。

测试和优化:
在实际环境中测试机器人,确保其按预期工作。
根据测试结果调整程序,优化性能和稳定性。

文档和维护:
编写文档,记录设计思路、代码结构、使用方法等。
规划后续的维护和升级计划。

● 机器人行为的逻辑编程

● 程序调试与优化过程中的问题及解决

print('please enter number 1-9 ,enter 0 to break')
print('menu:')
print('1: hello')
print('2: 笑话')
print('3: Q币充值')
print('4: v50')
print('5: 已读不回')
print('6: 人机回答')
print('7: 自动回复')
print('8: 代刷深渊/圣遗物/体力/原石,前十预约者送超绝uid')
print('9: 官宣动态自动回复')
while True:
    user_input = int(input('please enter your number:'))
    if  user_input > 0 and user_input <= 9:
        if user_input == 1 :
            print('hello')
        elif user_input == 2:
            print('一个胖子和一个瘦子开车路过山区,车子坏了,要等到下午才有人来修。饥饿的两人爬过两座山,终于找到一个偏僻小镇。镇上有小饭馆,可是他们走进一家,出来了,再进一家,又出来了…… 终于两人饿得瘫软在地,瘦子恳求到:“局长,没发票就没发票吧!”')
        elif user_input == 3:
            print('你充Q币吗?')
        elif user_input == 4:
            print('肯德基疯狂星期四,v我50')
        elif user_input == 5:
            print('已读不回')
        elif user_input == 6:
            print('你好亲,有什么可以帮您?')
        elif user_input == 7:
            print('这是自动回复,不用管')
        elif user_input == 8:
            print('代刷深渊')
        else:
            print('啊啊啊啊劳斯你们是香香软软的小蛋糕999999999999')

    elif user_input == 0 :
        print('finish')
        break
    else:
        print('Try again in number between 1 and 9')

10. Linux 基础

● Linux 基本命令的实用性分析

1.文件和目录操作命令
    ls: 列出目录内容。实用性极高,用于查看目录下的文件和子目录。
    cd: 改变当前目录。实用性极高,用于导航文件系统。
    pwd: 显示当前工作目录。实用性较高,用于确认当前位置。
    mkdir: 创建新目录。实用性较高,用于组织文件系统结构。
    rm: 删除文件或目录。实用性极高,用于清理不再需要的文件。
    cp: 复制文件或目录。实用性极高,用于备份或复制文件。
    mv: 移动或重命名文件或目录。实用性极高,用于整理文件系统。

2.文件查看和编辑命令
    cat: 显示文件内容。实用性较高,用于快速查看文件内容。
    more  less: 分页显示文件内容。实用性较高,用于查看大文件。
    nano, vi, vim: 文本编辑器。实用性极高,用于编辑文件内容。

● 文件与目录操作在项目中的应用

1.项目结构管理
使用 mkdir 创建项目目录结构,确保代码、配置文件、文档等有组织地存放。
使用 mvcp 移动或复制文件,以调整项目结构或备份重要文件。

2.版本控制系统
使用 git 等版本控制系统时,文件与目录操作命令用于管理代码仓库中的文件,如 git add, git mv, git rm 等。

3.自动化脚本
在编写自动化脚本时,使用 ls, cd, rm, cp, mv 等命令来处理文件和目录,实现自动化部署、备份、清理等任务。

11. Python 基础 II 与硬件控制

● 列表与字典在编程中的应用\

列表(List)
列表是一个有序的集合,可以包含任意类型的元素,并且支持动态增删改查操作。
创建列表
my_list = [1, 2, 3, 4, 5]

访问元素
print(my_list[0])  # 输出 1
print(my_list[-1]) # 输出 5

切片操作
print(my_list[1:3])  # 输出 [2, 3]
print(my_list[:3])   # 输出 [1, 2, 3]
print(my_list[3:])   # 输出 [4, 5]

修改元素
my_list[0] = 10
print(my_list)  # 输出 [10, 2, 3, 4, 5]

添加元素
my_list.append(6)
print(my_list)  # 输出 [10, 2, 3, 4, 5, 6]

my_list.insert(1, 11)
print(my_list)  # 输出 [10, 11, 2, 3, 4, 5, 6]

删除元素
my_list.remove(11)
print(my_list)  # 输出 [10, 2, 3, 4, 5, 6]

del my_list[0]
print(my_list)  # 输出 [2, 3, 4, 5, 6]

列表合并
other_list = [7, 8, 9]
combined_list = my_list + other_list
print(combined_list)  # 输出 [2, 3, 4, 5, 6, 7, 8, 9]

字典(Dictionary)
字典是一个无序的键值对集合,通过键(key)来访问值(value),键必须是唯一的。
创建字典
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}

访问元素
print(my_dict['name'])  # 输出 Alice

修改元素
my_dict['age'] = 26
print(my_dict)  # 输出 {'name': 'Alice', 'age': 26, 'city': 'New York'}

添加元素
my_dict['gender'] = 'Female'
print(my_dict)  # 输出 {'name': 'Alice', 'age': 26, 'city': 'New York', 'gender': 'Female'}

删除元素
del my_dict['city']
print(my_dict)  # 输出 {'name': 'Alice', 'age': 26, 'gender': 'Female'}

遍历字典
for key, value in my_dict.items():
    print(f'{key}: {value}')

12. 循环控制与思维逻辑

● for循环与while循环的区别与应用

for循环的一般形式为:

  for (语句1;表达式;语句2)
  {
    语句块
  }
1for循环开始时,会先执行语句1,而且在整个循环过程中只执行一次语句12)接着判断表达式的条件,如果条件成立,就执行一次循环体中的语句块。

3)语句块执行完后,接下来会执行语句24)重复第2)步和第3),直到表达式的条件不成立才结束for循环。


while循环的一般形式为:

  while (表达式)
  {
    语句块
  }
意思是,先计算表达式的值,当值为真时(非0即是真),执行语句块,执行完语句块后,回到循环首部再次计算表达式的值,如果为真,又执行一次语句块……,这个过程会一直重复,直到表达式的值为假,就不再执行语句块。

● 嵌套循环在复杂问题中的应用

# 1.while loop 循环
# while + 条件:
# 循环体(要执行的代码)
# import time
#
# a = 0
# while a <= 10:
#     print(a)
#     a += 1
#     time.sleep(0.5)
import random

num_list = range(101)
true_num = random.choice(num_list)
counter = 3

while counter > 0:
    num_input = int(input('猜一个数字'))

    if num_input == true_num:
        print('猜对了!')
        break
    elif num_input > true_num:
        print('大了')
        counter -= 1
    else:
        print('小了')
        counter -= 1
else:
    print('Loser')

● 循环控制的思维逻辑训练

13. 完成乘法口诀表挑战

● 循环嵌套在乘法表设计中的应用

# 乘法口诀表 for i in range(1,10):     
for j in range(1,i+1):         
    result = i * j         
    print(i,"*",j,'=',result, end='\t')     
    print(' ')