Simon Shi的小站

人工智能,机器学习, 强化学习,大模型,自动驾驶

0%

新建工程SOP

  • 1 选择STM32F103C8

  • 2 Manager Project Items (点击 “品”按钮)

    • 根据需要增加Group

    • 再Group添加c文件

    • startup_stm32f10x_md.s 记得添加进去

  • 3 target配置(点击魔法棒按钮)

    • 3,1 Output

      • 选择Out目录

      • 选中 Creat Hex File

    • 3.2 C/C++

      • Define: USE_STDPERIPH_DRIVER,STM32F10X_MD —与startup文件一致

      • inlude_Paths: 所有的.h文件目录加进去

      • 可以直接整理好,输入进去eg:

      • .\mbot\usart;.\Mbot_COER\;.\Mbot_HARDWARE\;.\Mbot_HARDWARE\ADC;
        .\Mbot_HARDWARE\BEEP;.\Mbot_HARDWARE\DMP;.\Mbot_HARDWARE\ENCODER;
        .\Mbot_HARDWARE\EXTI;.\Mbot_HARDWARE\IIC;.\Mbot_HARDWARE\KEY;
        .\Mbot_HARDWARE\LED;.\Mbot_HARDWARE\MOTOR_PWM;.\Mbot_HARDWARE\MPU6050;
        .\Mbot_HARDWARE\USART1;.\Mbot_HARDWARE\USART3;.\RTE\;.\STM32F10x_FWLib\inc;
        .\SYSTEM\delay;.\SYSTEM\sys;.\USER\
        
  • 4 编译

    • 会提示生成hex文件,即完成

Flask

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
app = Flask(__name__,static_folder=project_root+"\\static", 
template_folder=project_root+"\\templates")

"""项目的首页"""
@app.route('/')
def index():
"""首页的路由"""
return render_template('index_new.html')


"""浏览器默认打开工程"""
def open_browser():
print("打开浏览器")
webbrowser.open('http://localhost:5000')

if __name__ == '__main__':
# 创建一个新线程来打开浏览器
thread = threading.Timer(1,open_browser)
thread.start()
app.run()
# load_data()

Flask 数据库op

Flask-Migrate 是一个用于 Flask 的扩展,它通过 Alembic 来处理基于 SQLAlchemy 的数据库迁移。以下是它的主要作用:

  1. 数据库迁移:它允许你管理数据库模式的变化,例如添加或删除表和列。
  2. 版本控制:它跟踪数据库模式的不同版本,使你能够根据需要升级或降级模式。
  3. 自动化:它根据 SQLAlchemy 模型的变化自动生成迁移脚本。
  4. 集成:它与 Flask 和 SQLAlchemy 无缝集成,使得在 Flask 应用程序中管理数据库模式变更更加方便。

在提供的代码中,Flask-Migrate 被初始化为与 Flask 应用和 SQLAlchemy 实例一起使用,以管理数据库迁移。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from flask import Flask, make_response, jsonify, request
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

db = SQLAlchemy()
migrate = Migrate()

app = Flask(__name__)
app.config.from_object(config_class)

db.init_app(app)
migrate.init_app(app, db)


from flask import Blueprint
api_bp = Blueprint('api', __name__)
app.register_blueprint(api_bp, url_prefix='/api')


@api_bp.route("/create_task", methods=['POST'])
def create_task():
pass

@api_bp.route("/get_task/<task_id>", methods=['POST'])
def get_task(task_id):
pass

使用 WSGI 服务器部署

  1. 安装 WSGI 服务器:例如 Gunicorn 或 uWSGI

launch

1
2
3
4
5
6

with gr.Blocks(css=css) as demo:
...


demo.launch(server_name="0.0.0.0", share=True, server_port=6081)

Gra

1
2
3
4
5
6
7
8
9
10
# 设置 gallery 的样式
gallery.style(
grid=(2, 3), # 2 行 3 列的网格布局
columns=3, # 也可以单独设置列数
rows=2, # 也可以单独设置行数
height="400px", # 设置高度
container=True, # 是否使用容器
preview=True, # 是否显示预览
object_fit="cover" # 图像的适应方式
)

安装

1
2
3
4
5
6
7
8
9
cd nginx-1.25.1
./configure --prefix=/usr/local/nginx_1.25.1 \
--with-stream \
--with-http_ssl_module \
--with-pcre \
--with-http_gzip_static_module

--user=nginx \
--group=nginx \

nginx path prefix: “/usr/local/nginx_1.25.1”
nginx binary file: “/usr/local/nginx_1.25.1/sbin/nginx”
nginx modules path: “/usr/local/nginx_1.25.1/modules”
nginx configuration prefix: “/usr/local/nginx_1.25.1/conf”
nginx configuration file: “/usr/local/nginx_1.25.1/conf/nginx.conf”
nginx pid file: “/usr/local/nginx_1.25.1/logs/nginx.pid”
nginx error log file: “/usr/local/nginx_1.25.1/logs/error.log”
nginx http access log file: “/usr/local/nginx_1.25.1/logs/access.log”
nginx http client request body temporary files: “client_body_temp”
nginx http proxy temporary files: “proxy_temp”
nginx http fastcgi temporary files: “fastcgi_temp”
nginx http uwsgi temporary files: “uwsgi_temp”
nginx http scgi temporary files: “scgi_temp”

Read more »

Stable Diffusion

Stable Diffusion2

StableDiffusionXL

StableDiffusionXLPipeline 是基于 Stable Diffusion XL (SDXL) 模型的一个 Python 库接口,用于文本到图像的生成任务。SDXL 是 Stable Diffusion 的一个变种,它在生成图像的质量和细节方面有所改进。

  1. 模型架构
  • SDXL 是一种扩散模型,它通过逐步添加噪声来生成图像,并反过来通过去除噪声来恢复像。

  • 它在多个阶段中工作,通常包括一个初步的低分辨率预测,然后是更高分辨率的细化步骤。

  • SDXL 支持条件输入,如文本提示、图像掩码等,以指导图像生成过程。

  1. 使用方式:

    • StableDiffusionXLPipeline 可以从预训练模型加载,例如通过 from_pretrained 方法。
    • 它可以使用 CUDA 或其他硬件加速器进行加速,以提高生成速度。
  2. 加载模型:

  • 你可以使用 from_pretrained 函数来加载预训练的 SDXL 模型。

  • 你也可以使用 .to() 方法将模型移动到特定的设备上,比如 GPU ("cuda").

  1. 内存占用:

    • 加载 SDXL 模型大约需要 7GB 显存。
    • 当使用 LoRA(Low-Rank Adaptation)微调时,每加载一个 LoRA 模型会增加大约 200MB 的显存占用。
  2. 文本到图像生成:

    • 一旦模型加载完成,就可以使用 pipe 对象来生成图像。

      python

      深色版本

      1
      2
      3
      1prompt = "Astronaut in a jungle, cold color palette, muted colors, detailed, 8k"
      2image = pipe(prompt=prompt).images[0]
      3image.save("./output/test_sdxl_text2image.png")
  3. 性能优化:

    • 可以通过调整数据类型(例如使用 torch.bfloat16)来减少内存使用并提高生成速度。
    • 使用 scaled_dot_product_attention 等技术可以进一步加速生成过程。
  4. 离线使用:

    • 如果无法连接到互联网,可以通过下载模型文件并在本地加载它们来离线使用 SDXL 模型。
  5. 扩展功能:

    • SDXL 可以与其他模型结合使用,如 ControlNet,来实现更复杂的图像生成任务。
    • 也可以使用 LoRA 来对模型进行微调,以适应特定的生成需求。

ref

AI绘画提示词生成器 - 一个工具箱 - 好用的在线工具都在这里!

一个写SD Prompt的Prompt:魔法提示词的实测与分享

Stable Diffusion2.1+WebUI的安装与使用(极详细)

ComfyUI+PhotoMaker|一键创造个性化人物形象_comfyui photomaker-CSDN博客

超详细的 Stable Diffusion ComfyUI 基础教程(一):安装与常用插件 - 优设网 - 学设计上优设

音频转换成文字

(音频转文字-音转文)

  1. 使用 Google Speech Recognition API
  2. 使用 Microsoft Azure Speech Service
  3. 使用 IBM Watson Speech to Text
  4. 使用 OpenAI Whisper

注意事项

  • 对于付费服务(如 Microsoft Azure、IBM Watson),你需要注册账号并获取 API 密钥。
  • 对于 OpenAI Whisper,你需要注册一个 OpenAI 账号并获取 API 密钥。
  • 有些服务可能需要额外的音频格式转换,例如从立体声转换为单声道,或者从不同的采样率转换为标准采样率(通常是 16 kHz)。
  • 在使用语音识别服务时,请确保遵守相关的使用条款和服务协议。

3.9 分布式多机器通信

ROS是一种分布式软件框架, 节点之间通过松耦合的方式进行组合, 在很多应用场景下, 节点可以运行在不同的计算平台上, 通过Topic、 Service进行通信。 但是“一山不容二虎”, ROS中只允许存在一个Master, 在多机系统中Master只能运行在一台机器上, 其他机器需要通过ssh的方式和Master取得联系。 所以在多机ROS系统中需要进行一些配置。

设置IP

以两台计算机为例, 介绍分布式多机通信的配置步骤, 其中计算机hcx-pc作为主机运行Master, 计算机raspi2作为从机运行节点。

  • 两天机器的网络可以Ping通(同一个网段)

  • pc (192.168.10.13) raspi(192.168.10.112)

  • @pc cat /etc/hosts

    • 192.168.10.112 raspi

    • ping raspi 测试

  • @raspi

    • 192.168.10.13 pc

    • ping pc 测试

配置ROS_MASTER_URI

raspi

1
2
3
export ROS_MASTER_URI=http://pc:11311
or配置
echo "export ROS_MASTER_URI=http://pc:11311" >> ~/.bashrc

测试

pc

1
2
roscore
rosrun turtlesim turtlesim_node

raspi

1
rostopic list 查看网络中的话题

master_URI=ip:11311

5 平台搭建

系统搭建

7 机器视觉

  • 摄像头

  • 标定

  • 人脸识别

  • 物体跟踪

  • 二维码识别

  • 物体识别

8 机器语音

  • 英文语音识别: 基于创建的语音库, ROS中的pocketsphinx功能包可以实现机器人的语音识别功能

  • 英文语音播放: ROS中的元功能包audio-common提供了文本转语音的功能包sound_play, 可以实现机器人的英文语音播放功能。

  • 智能语音应答: 结合人工智能标记语言AIML, 机器人可以从语料库中智能匹配交流的输出语句, 从而实现智能化交流应用。

  • 中文语音的识别与合成: 在ROS中集成科大讯飞的语音处理SDK, 让机器人更懂中文

9 SLAM & Navi

  • 真实机器导航

  • 自主探索SLAM

mp4音频提取mp3

1
ffmpeg -i inputfile.mp4 -vn -acodec copy outputfile.m4a

其中 inputfile.mp4 是要提取的视频文件的文件名,

outputfile.m4a 是提取出来的音频文件的文件名。

1
ffmpeg -i 我们的时光.mp4 -ss 00:00:00 -t 00:00:36.0 -q:a 0 -map a output.mp3
  • ffmpeg命令中,-i 参数后面指定要提取的视频文件名称。
  • -ss 指定音频提取的开始时间。
  • -t 表示提取多长时间的音频。
  • output.mp3表示输出音频的名称。

TTS(文本转语音)

语音转文本

Whisper 是 OpenAI 研发的一个通用的语音识别模型,可以把语音转为文本。它在大量多样化的音频数据集上进行训练,同时还是一个多任务模型,可以执行多语言语音识别、语音翻译和语言识别。

安装 rust

下载地址:

http://rust-lang.org/tools/install

同样的,安装后需要确定命令行可以执行,测试命令:

1
rustc --version

如果无法执行,手动配置一下环境变量PATH。

rust 的默认安装位置是 ~/.cargo/bin

安装 Whisper

配置python虚拟环境,因为 Whisper 需要特定版本的 python。

1
2
conda create --name whisper_env python=3.9.18
activate whisper_env

安装依赖库:

1
2
pip install setuptools-rust
pip install -U openai-whisper
运行

命令行运行

1
whisper Haul.mp3 --model medium

其中 “Haul.mp3” 是我测试用的音频文件。

“–model medium” 是指定使用 medium 版本的模型(Whisper 有多种模型:tiny、base、small、medium、large,模型大小依次变大)。

第一次运行时,会先下载指定的模型,需要耐心等待一会儿。

模型下载之后,就会开始执行语音识别,输出识别结果。

并且会自动写入文件。

Python代码中运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import whisper

# 加载模型
model = whisper.load_model("medium")

# 加载音频文件
audio = whisper.load_audio("Haul.mp3")
audio = whisper.pad_or_trim(audio)

# make log-Mel spectrogram and move to the same device as the model
mel = whisper.log_mel_spectrogram(audio).to(model.device)

# detect the spoken language
_, probs = model.detect_language(mel)
print(f"Detected language: {max(probs, key=probs.get)}")

# decode the audio
options = whisper.DecodingOptions()
result = whisper.decode(model, mel, options)

# print the recognized text
print(result.text)

怎么样,感觉不错吧,有兴趣的话,快试试吧。

项目地址:

http://github.com/openai/whisper

#AI 人工智能,#OpenAI,#whisper, #ChatGPT,#语音转文字,#gpt890

信息来源 http://gpt890.com/article/34