2、数据采集基础:数据源类型、设备选型与环境搭建
说实话,做AI数据采集这么多年,我踩过最大的坑就是——设备买回来才发现根本不适合自己的场景。你想想看,花了几万块买了个工业级激光雷达,结果项目只需要做个室内温湿度监测,这不是杀鸡用牛刀嘛。
所以这一章,咱们就聊聊数据采集的根基。说白了,就是搞清楚三件事:数据从哪来、用什么设备采、怎么搭环境。
2.1 数据源类型:传感器、摄像头、麦克风
数据源是AI项目的“食材”。食材不好,再厉害的厨师也白搭。我习惯把常见的数据源分成三大类:
2.1.1 传感器类
传感器是物理世界和数字世界的桥梁。常见的包括:
- 温度/湿度传感器:比如DHT11、DHT22、BME280。我在做农业大棚项目时,就用的BME280,精度高还便宜。
- 压力传感器:用于气压、液位监测。比如BMP180。
- 惯性测量单元(IMU):加速度计+陀螺仪,比如MPU6050。做姿态识别时必备。
- 距离传感器:超声波(HC-SR04)、红外、激光雷达(LiDAR)。
- 气体传感器:MQ系列,检测CO、甲烷、酒精等。
2.1.2 摄像头类
摄像头是视觉AI的“眼睛”。常见类型有:
- USB摄像头:即插即用,适合原型验证。比如罗技C920。
- 树莓派摄像头:CSI接口,延迟低,适合嵌入式。
- 工业相机:高帧率、高分辨率,比如海康、大恒的相机。适合质检、测量场景。
- 深度摄像头:Intel RealSense、微软Kinect、奥比中光。能同时获取RGB和深度信息。
嗯,这里要注意:分辨率不是越高越好。我见过有人用4K摄像头做手势识别,结果模型训练慢得要死,推理也卡顿。后来换成720p,效果几乎没差,速度却快了5倍。
2.1.3 麦克风类
麦克风是语音AI的“耳朵”。主要分两种:
- 模拟麦克风:需要ADC转换,比如驻极体麦克风。
- 数字麦克风:内置ADC,直接输出数字信号,比如I2S接口的麦克风(INMP441、SPH0645)。
做语音唤醒或声源定位时,麦克风阵列是常见方案。比如亚马逊的Alexa就用7麦克风阵列。我自己做过一个智能音箱项目,用了4个INMP441组成阵列,效果还不错。
2.2 采集设备选型
选设备,说白了就是看三个维度:精度、成本、场景。我整理了一个表格,方便你快速对比:
| 设备类型 | 推荐型号 | 精度/性能 | 成本 | 适用场景 |
|---|---|---|---|---|
| 温湿度传感器 | BME280 | ±0.5°C, ±3%RH | 低 | 环境监测、农业 |
| IMU | MPU6050 | 16位ADC | 低 | 姿态识别、运动追踪 |
| USB摄像头 | 罗技C920 | 1080p 30fps | 中 | 人脸识别、物体检测 |
| 深度摄像头 | Intel RealSense D435 | 1280x720 90fps | 高 | 3D重建、SLAM |
| 数字麦克风 | INMP441 | 60dB SNR | 低 | 语音采集、声源定位 |
2.3 环境搭建
环境搭建,我把它分成三步:硬件连接、软件配置、数据验证。
2.3.1 硬件连接
以树莓派为例,连接一个BME280传感器:
# 接线方式(I2C接口)
BME280 VCC -> 树莓派 3.3V
BME280 GND -> 树莓派 GND
BME280 SCL -> 树莓派 SCL (GPIO 3)
BME280 SDA -> 树莓派 SDA (GPIO 2)
连接好后,先别急着写代码。先检查一下I2C设备是否识别:
# 启用I2C接口
sudo raspi-config
# 选择 Interface Options -> I2C -> Enable
# 检测设备
sudo i2cdetect -y 1
# 如果看到 0x76 或 0x77,说明连接成功
2.3.2 软件配置
安装必要的Python库:
pip install smbus2 bme280
写一个简单的采集脚本:
import smbus2
import bme280
# 初始化I2C总线
bus = smbus2.SMBus(1)
address = 0x76 # 根据i2cdetect的结果调整
# 读取数据
calibration_params = bme280.load_calibration_params(bus, address)
data = bme280.sample(bus, address, calibration_params)
print(f"温度: {data.temperature:.2f} °C")
print(f"湿度: {data.humidity:.2f} %")
print(f"气压: {data.pressure:.2f} hPa")
time.sleep()控制采样频率。比如温湿度变化慢,1秒采一次就够了。别傻乎乎地死循环,CPU会抗议的。
2.3.3 数据验证
数据采回来,得先看看是不是靠谱。我一般会做两件事:
- 静态验证:把传感器放在稳定环境中,看数据是否波动在合理范围内。
- 动态验证:人为改变环境(比如对着传感器哈口气),看数据是否响应。
如果数据异常,先检查接线,再检查代码。我曾经花了半天时间查bug,最后发现是杜邦线松了。嗯,这种低级错误,谁还没犯过呢。
2.4 知识体系总览
为了让你更直观地理解本章的知识结构,我画了一张图:
这张图把本章的核心逻辑串起来了。你想想看,数据源是基础,设备选型是桥梁,环境搭建是保障。三者缺一不可。
好了,这一章就聊到这儿。数据采集这块,说白了就是多动手、多踩坑。我当年也是从焊坏三块树莓派开始的。别怕犯错,错了才能记住。
公众号:蓝海资料掘金营,微信deep3321