first commit

This commit is contained in:
2026-03-02 21:26:32 +08:00
commit e68bb3ac42
8 changed files with 3076 additions and 0 deletions

View File

@@ -0,0 +1,450 @@
# AISee Flutter 开发环境搭建指南
## 系统要求
- **操作系统**Windows 10/1164位
- **内存**:至少 8GB RAM推荐 16GB
- **硬盘**:至少 10GB 可用空间
- **处理器**Intel/AMD 处理器
## 一、安装 Flutter SDK
### 1. 下载 Flutter SDK
```bash
# 官网下载(可能较慢)
https://flutter.dev/docs/get-started/install/windows
# 推荐:使用国内镜像
https://flutter.cn/docs/get-started/install/windows
# 下载稳定版
flutter_windows_3.16.9-stable.zip
```
### 2. 解压 Flutter SDK
```bash
# 解压到:
C:\src\flutter
# 注意:不要放在需要管理员权限的目录(如 Program Files
```
### 3. 配置环境变量
```bash
# 1. 右键"此电脑" -> 属性 -> 高级系统设置 -> 环境变量
# 2. 在"用户变量"中新建:
变量名FLUTTER_HOME
变量值C:\src\flutter
# 3. 编辑 Path 变量,添加:
%FLUTTER_HOME%\bin
C:\src\flutter\bin\cache\dart-sdk\bin
# 4. 配置国内镜像(重要!)
变量名PUB_HOSTED_URL
变量值https://pub.flutter-io.cn
变量名FLUTTER_STORAGE_BASE_URL
变量值https://storage.flutter-io.cn
# 5. 验证
flutter --version
dart --version
```
### 4. 运行 Flutter Doctor
```bash
# 检查环境
flutter doctor
# 输出示例:
Doctor summary (to see all details, run flutter doctor -v):
[] Flutter (Channel stable, 3.16.9, on Microsoft Windows)
[!] Android toolchain - develop for Android devices
[!] Chrome - develop for the web
[!] Visual Studio - develop for Windows
[!] Android Studio (not installed)
[] VS Code (version 1.85.0)
[] Connected device (1 available)
```
## 二、安装 Android 开发环境
### 1. 安装 Android Studio
```bash
# 下载地址
https://developer.android.com/studio
# 安装步骤(参考之前的 Android 环境文档)
1. 安装 Android Studio
2. 安装 Android SDK (API 26-34)
3. 配置 ANDROID_HOME 环境变量
```
### 2. 安装 Android SDK 命令行工具
```bash
# 在 Android Studio 中
# Tools -> SDK Manager -> SDK Tools
勾选:
☑ Android SDK Command-line Tools
☑ Android SDK Build-Tools
☑ Android SDK Platform-Tools
☑ Android Emulator
```
### 3. 接受 Android 许可
```bash
flutter doctor --android-licenses
# 输入 y 接受所有许可
```
## 三、安装 Visual Studio Code
### 1. 下载安装 VS Code
```bash
# 官网
https://code.visualstudio.com/
# 下载 Windows 64-bit 版本
VSCodeUserSetup-x64-1.85.0.exe
```
### 2. 安装 Flutter 插件
```bash
# 打开 VS Code
# 按 Ctrl+Shift+X 打开扩展面板
搜索并安装:
1. Flutter自动安装 Dart 插件)
2. Dart
3. Flutter Widget Snippets可选
4. Awesome Flutter Snippets可选
5. Pubspec Assist可选
```
### 3. 配置 VS Code
```bash
# 按 Ctrl+Shift+P 打开命令面板
# 输入Flutter: New Project
# 如果能看到选项,说明配置成功
```
## 四、创建和运行测试项目
### 1. 创建测试项目
```bash
# 打开命令行
cd C:\Users\xdedmi\Desktop\aisee
# 创建 Flutter 项目
flutter create hello_flutter
# 进入项目目录
cd hello_flutter
# 查看项目结构
dir
```
### 2. 启动 Android 模拟器
```bash
# 查看可用设备
flutter devices
# 如果没有设备,创建模拟器
# 打开 Android Studio -> Device Manager -> Create Device
# 或使用命令行创建
flutter emulators
flutter emulators --launch <emulator_id>
```
### 3. 运行项目
```bash
# 确保模拟器已启动
flutter devices
# 运行项目
flutter run
# 或在 VS Code 中按 F5
```
### 4. 热重载测试
```bash
# 修改 lib/main.dart 中的文本
# 保存文件Ctrl+S
# 应该看到模拟器自动更新
# 或在终端按:
r - 热重载
R - 热重启
q - 退出
```
## 五、安装必要的工具
### 1. Git如果还没安装
```bash
# 下载
https://git-scm.com/download/win
# 安装并配置
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
```
### 2. Chrome用于 Web 调试)
```bash
# Flutter 支持 Web 开发
# 安装 Chrome 浏览器用于调试
# 启用 Web 支持
flutter config --enable-web
# 运行 Web 版本
flutter run -d chrome
```
## 六、Flutter 常用命令
### 项目管理
```bash
# 创建新项目
flutter create project_name
# 创建指定平台项目
flutter create --platforms=android,ios project_name
# 获取依赖
flutter pub get
# 更新依赖
flutter pub upgrade
# 清理项目
flutter clean
```
### 运行和调试
```bash
# 运行项目
flutter run
# 指定设备运行
flutter run -d <device_id>
# Release 模式运行
flutter run --release
# 查看日志
flutter logs
```
### 构建
```bash
# 构建 APK
flutter build apk
# 构建 App Bundle
flutter build appbundle
# 构建 iOS需要 macOS
flutter build ios
```
### 分析和测试
```bash
# 分析代码
flutter analyze
# 运行测试
flutter test
# 查看设备
flutter devices
# 检查环境
flutter doctor -v
```
## 七、配置国内镜像加速
### 永久配置(推荐)
```bash
# 在环境变量中添加:
PUB_HOSTED_URL=https://pub.flutter-io.cn
FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
```
### 临时配置
```bash
# Windows PowerShell
$env:PUB_HOSTED_URL="https://pub.flutter-io.cn"
$env:FLUTTER_STORAGE_BASE_URL="https://storage.flutter-io.cn"
# CMD
set PUB_HOSTED_URL=https://pub.flutter-io.cn
set FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
```
## 八、常见问题解决
### 1. Flutter Doctor 问题
#### Android toolchain 问题
```bash
# 问题Android license status unknown
# 解决:
flutter doctor --android-licenses
# 问题cmdline-tools component is missing
# 解决:在 Android Studio SDK Manager 中安装 Command-line Tools
```
#### Visual Studio 问题Windows 桌面开发)
```bash
# 如果需要开发 Windows 桌面应用
# 下载安装 Visual Studio 2022 Community
# 选择"使用 C++ 的桌面开发"工作负载
```
### 2. 网络问题
```bash
# 问题:下载依赖超时
# 解决:
1. 配置国内镜像(见上文)
2. 使用代理
3. 手动下载依赖包
```
### 3. 模拟器问题
```bash
# 问题:模拟器启动失败
# 解决:
1. 检查 BIOS 虚拟化是否开启
2. 关闭 Hyper-V
3. 使用真机调试
# 问题:模拟器很慢
# 解决:
1. 使用 x86_64 镜像
2. 增加模拟器 RAM
3. 使用真机调试
```
### 4. 真机调试
```bash
# Android 真机调试步骤:
1. 手机开启开发者选项
2. 开启 USB 调试
3. 连接手机到电脑
4. 允许 USB 调试授权
5. 运行flutter devices
6. 运行flutter run
```
## 九、VS Code 快捷键
### Flutter 开发常用快捷键
```bash
F5 - 启动调试
Shift+F5 - 停止调试
Ctrl+F5 - 运行(不调试)
Ctrl+Shift+F5 - 重启调试
Ctrl+S - 保存并热重载
Ctrl+Shift+P - 命令面板
Ctrl+Space - 代码补全
F12 - 跳转到定义
Alt+F12 - 查看定义
Shift+F12 - 查看引用
Ctrl+/ - 注释/取消注释
Ctrl+Shift+K - 删除行
Alt+Up/Down - 移动行
Ctrl+D - 选择下一个相同内容
```
### Flutter 特定命令
```bash
# Ctrl+Shift+P 打开命令面板,输入:
Flutter: New Project - 创建新项目
Flutter: Hot Reload - 热重载
Flutter: Hot Restart - 热重启
Flutter: Open DevTools - 打开开发者工具
Flutter: Run Flutter Doctor - 运行环境检查
Flutter: Clean Project - 清理项目
```
## 十、开发环境检查清单
```bash
✅ Flutter SDK 安装并配置环境变量
✅ 国内镜像配置完成
✅ Android Studio 安装
✅ Android SDK 安装API 26-34
✅ Android 许可接受
✅ VS Code 安装
✅ Flutter 和 Dart 插件安装
✅ Git 安装并配置
✅ 测试项目创建并运行成功
✅ 热重载功能正常
✅ flutter doctor 无严重错误
```
## 十一、验证环境
### 运行完整检查
```bash
# 详细检查
flutter doctor -v
# 期望输出(至少这些项目正常):
[] Flutter (Channel stable, 3.16.9)
[] Android toolchain - develop for Android devices
[] VS Code (version 1.85.0)
[] Connected device (1 available)
# 如果有 [!] 或 [×],根据提示解决
```
### 创建并运行测试项目
```bash
# 1. 创建项目
flutter create test_app
cd test_app
# 2. 启动模拟器或连接真机
flutter devices
# 3. 运行项目
flutter run
# 4. 看到计数器应用说明环境正常
```
## 十二、下一步
环境搭建完成后:
1. ✅ 学习 Dart 语言基础
2. ✅ 学习 Flutter Widget
3. ✅ 创建 AISee 项目
4. ✅ 开始功能开发
---
**预计时间**
- 下载安装30-60 分钟
- 配置调试15-30 分钟
- 总计1-2 小时
**提示**
- 首次运行 `flutter doctor` 会下载必要组件,需要时间
- 首次运行项目会下载 Gradle 依赖,需要耐心等待
- 建议使用真机调试,速度更快

View File

@@ -0,0 +1,836 @@
# AISee Flutter 项目初始化指南
## 1. 创建项目
```bash
cd C:\Users\xdedmi\Desktop\aisee
# 创建 Flutter 项目
flutter create --org com.aisee --project-name aisee_app --platforms android,ios aisee_app
cd aisee_app
```
## 2. 项目目录结构
```
aisee_app/
├── lib/
│ ├── main.dart # 入口文件
│ ├── app.dart # App 根组件
│ │
│ ├── config/ # 配置
│ │ ├── app_config.dart # 应用配置
│ │ ├── routes.dart # 路由配置
│ │ └── theme.dart # 主题配置
│ │
│ ├── models/ # 数据模型
│ │ ├── detection.dart # 检测结果
│ │ ├── text_region.dart # 文字区域
│ │ ├── scene_description.dart # 场景描述
│ │ └── analysis_result.dart # 分析结果
│ │
│ ├── services/ # 服务层
│ │ ├── api/
│ │ │ ├── api_client.dart # HTTP 客户端
│ │ │ ├── image_api.dart # 图像 API
│ │ │ └── analysis_api.dart # 分析 API
│ │ ├── bluetooth/
│ │ │ ├── bluetooth_service.dart # 蓝牙服务
│ │ │ └── glasses_protocol.dart # 眼镜通信协议
│ │ ├── camera/
│ │ │ └── camera_service.dart # 相机服务
│ │ ├── websocket/
│ │ │ └── ws_service.dart # WebSocket 服务
│ │ └── tts/
│ │ └── tts_service.dart # 语音合成服务
│ │
│ ├── providers/ # 状态管理
│ │ ├── camera_provider.dart
│ │ ├── analysis_provider.dart
│ │ ├── bluetooth_provider.dart
│ │ └── settings_provider.dart
│ │
│ ├── screens/ # 页面
│ │ ├── home/
│ │ │ └── home_screen.dart
│ │ ├── camera/
│ │ │ └── camera_screen.dart
│ │ ├── analysis/
│ │ │ └── analysis_screen.dart
│ │ ├── history/
│ │ │ └── history_screen.dart
│ │ ├── settings/
│ │ │ └── settings_screen.dart
│ │ └── bluetooth/
│ │ └── bluetooth_screen.dart
│ │
│ ├── widgets/ # 通用组件
│ │ ├── detection_overlay.dart # 检测结果叠加层
│ │ ├── loading_indicator.dart
│ │ └── error_widget.dart
│ │
│ └── utils/ # 工具类
│ ├── constants.dart
│ ├── image_utils.dart
│ └── permission_utils.dart
├── assets/ # 静态资源
│ ├── images/
│ ├── icons/
│ └── fonts/
├── test/ # 测试
│ ├── services/
│ ├── providers/
│ └── widgets/
├── android/ # Android 原生代码
├── ios/ # iOS 原生代码
├── pubspec.yaml # 依赖配置
└── analysis_options.yaml # 代码分析配置
```
## 3. 依赖配置 pubspec.yaml
```yaml
name: aisee_app
description: AISee - AI 视觉辅助眼镜系统
publish_to: 'none'
version: 0.1.0+1
environment:
sdk: '>=3.2.0 <4.0.0'
dependencies:
flutter:
sdk: flutter
# UI
cupertino_icons: ^1.0.6
google_fonts: ^6.1.0
flutter_svg: ^2.0.9
cached_network_image: ^3.3.0
shimmer: ^3.0.0
# 状态管理
riverpod: ^2.4.9
flutter_riverpod: ^2.4.9
# 路由
go_router: ^13.0.0
# 网络
dio: ^5.4.0
web_socket_channel: ^2.4.0
# 相机
camera: ^0.10.5+7
image: ^4.1.4
# 蓝牙
flutter_blue_plus: ^1.28.5
# 本地存储
sqflite: ^2.3.0
shared_preferences: ^2.2.2
path_provider: ^2.1.1
hive: ^2.2.3
hive_flutter: ^1.1.0
# 权限
permission_handler: ^11.1.0
# 语音
flutter_tts: ^3.8.5
# 图像处理
image_picker: ^1.0.5
# JSON 序列化
json_annotation: ^4.8.1
freezed_annotation: ^2.4.1
# 工具
logger: ^2.0.2+1
intl: ^0.19.0
uuid: ^4.2.1
connectivity_plus: ^5.0.2
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^3.0.1
# 代码生成
build_runner: ^2.4.7
json_serializable: ^6.7.1
freezed: ^2.4.5
hive_generator: ^2.0.1
# 测试
mockito: ^5.4.3
mocktail: ^1.0.1
flutter:
uses-material-design: true
assets:
- assets/images/
- assets/icons/
fonts:
- family: AISee
fonts:
- asset: assets/fonts/AISee-Regular.ttf
- asset: assets/fonts/AISee-Bold.ttf
weight: 700
```
## 4. 核心代码
### main.dart
```dart
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:hive_flutter/hive_flutter.dart';
import 'app.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 强制竖屏
await SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
]);
// 初始化 Hive 本地存储
await Hive.initFlutter();
runApp(
const ProviderScope(
child: AISeeApp(),
),
);
}
```
### app.dart
```dart
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'config/routes.dart';
import 'config/theme.dart';
class AISeeApp extends ConsumerWidget {
const AISeeApp({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final router = ref.watch(routerProvider);
return MaterialApp.router(
title: 'AISee',
theme: AISeeTheme.lightTheme,
darkTheme: AISeeTheme.darkTheme,
themeMode: ThemeMode.system,
routerConfig: router,
debugShowCheckedModeBanner: false,
);
}
}
```
### config/theme.dart
```dart
import 'package:flutter/material.dart';
class AISeeTheme {
static const _primaryColor = Color(0xFF2196F3);
static const _secondaryColor = Color(0xFF00BCD4);
static ThemeData get lightTheme {
return ThemeData(
useMaterial3: true,
colorScheme: ColorScheme.fromSeed(
seedColor: _primaryColor,
secondary: _secondaryColor,
brightness: Brightness.light,
),
appBarTheme: const AppBarTheme(
centerTitle: true,
elevation: 0,
),
);
}
static ThemeData get darkTheme {
return ThemeData(
useMaterial3: true,
colorScheme: ColorScheme.fromSeed(
seedColor: _primaryColor,
secondary: _secondaryColor,
brightness: Brightness.dark,
),
appBarTheme: const AppBarTheme(
centerTitle: true,
elevation: 0,
),
);
}
}
```
### config/routes.dart
```dart
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import '../screens/home/home_screen.dart';
import '../screens/camera/camera_screen.dart';
import '../screens/analysis/analysis_screen.dart';
import '../screens/history/history_screen.dart';
import '../screens/settings/settings_screen.dart';
import '../screens/bluetooth/bluetooth_screen.dart';
final routerProvider = Provider<GoRouter>((ref) {
return GoRouter(
initialLocation: '/',
routes: [
GoRoute(
path: '/',
builder: (context, state) => const HomeScreen(),
),
GoRoute(
path: '/camera',
builder: (context, state) => const CameraScreen(),
),
GoRoute(
path: '/analysis',
builder: (context, state) => const AnalysisScreen(),
),
GoRoute(
path: '/history',
builder: (context, state) => const HistoryScreen(),
),
GoRoute(
path: '/settings',
builder: (context, state) => const SettingsScreen(),
),
GoRoute(
path: '/bluetooth',
builder: (context, state) => const BluetoothScreen(),
),
],
);
});
```
### config/app_config.dart
```dart
class AppConfig {
// API 配置
static const String apiBaseUrl = 'https://api.aisee.com';
static const String wsBaseUrl = 'wss://api.aisee.com/ws';
// 开发环境
static const String devApiBaseUrl = 'http://10.0.2.2:8000';
static const String devWsBaseUrl = 'ws://10.0.2.2:8000/ws';
// 图像配置
static const int imageMaxWidth = 1280;
static const int imageMaxHeight = 720;
static const int imageQuality = 85;
// 蓝牙配置
static const String glassesServiceUuid = '0000ffe0-0000-1000-8000-00805f9b34fb';
static const String glassesCharUuid = '0000ffe1-0000-1000-8000-00805f9b34fb';
// 超时配置
static const Duration apiTimeout = Duration(seconds: 30);
static const Duration wsReconnectDelay = Duration(seconds: 5);
}
```
### services/api/api_client.dart
```dart
import 'package:dio/dio.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../config/app_config.dart';
final apiClientProvider = Provider<ApiClient>((ref) {
return ApiClient();
});
class ApiClient {
late final Dio _dio;
ApiClient() {
_dio = Dio(BaseOptions(
baseUrl: AppConfig.devApiBaseUrl,
connectTimeout: AppConfig.apiTimeout,
receiveTimeout: AppConfig.apiTimeout,
headers: {
'Content-Type': 'application/json',
},
));
_dio.interceptors.add(LogInterceptor(
requestBody: true,
responseBody: true,
));
}
// 上传图像
Future<Map<String, dynamic>> uploadImage(List<int> imageBytes, String filename) async {
final formData = FormData.fromMap({
'file': MultipartFile.fromBytes(imageBytes, filename: filename),
});
final response = await _dio.post('/api/v1/images/upload', data: formData);
return response.data;
}
// 请求 AI 分析
Future<Map<String, dynamic>> analyzeImage(String imageUrl) async {
final response = await _dio.post('/api/v1/analysis/analyze', data: {
'image_url': imageUrl,
});
return response.data;
}
}
```
### services/camera/camera_service.dart
```dart
import 'package:camera/camera.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:logger/logger.dart';
final cameraServiceProvider = Provider<CameraService>((ref) {
return CameraService();
});
class CameraService {
final _logger = Logger();
CameraController? _controller;
List<CameraDescription> _cameras = [];
CameraController? get controller => _controller;
bool get isInitialized => _controller?.value.isInitialized ?? false;
Future<void> initialize() async {
_cameras = await availableCameras();
if (_cameras.isEmpty) {
_logger.e('No cameras available');
return;
}
_controller = CameraController(
_cameras.first,
ResolutionPreset.medium,
enableAudio: false,
imageFormatGroup: ImageFormatGroup.jpeg,
);
await _controller!.initialize();
_logger.i('Camera initialized');
}
Future<XFile?> takePicture() async {
if (!isInitialized) return null;
return await _controller!.takePicture();
}
void dispose() {
_controller?.dispose();
}
}
```
### services/bluetooth/bluetooth_service.dart
```dart
import 'dart:async';
import 'dart:convert';
import 'package:flutter_blue_plus/flutter_blue_plus.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:logger/logger.dart';
import '../../config/app_config.dart';
final bluetoothServiceProvider = Provider<BluetoothService>((ref) {
return BluetoothService();
});
class BluetoothService {
final _logger = Logger();
BluetoothDevice? _connectedDevice;
BluetoothCharacteristic? _writeCharacteristic;
final _dataController = StreamController<List<int>>.broadcast();
Stream<List<int>> get dataStream => _dataController.stream;
bool get isConnected => _connectedDevice != null;
// 扫描设备
Future<List<ScanResult>> scanDevices({Duration timeout = const Duration(seconds: 5)}) async {
final results = <ScanResult>[];
await FlutterBluePlus.startScan(timeout: timeout);
FlutterBluePlus.scanResults.listen((scanResults) {
results.addAll(scanResults);
});
await Future.delayed(timeout);
await FlutterBluePlus.stopScan();
return results;
}
// 连接设备
Future<bool> connect(BluetoothDevice device) async {
try {
await device.connect(timeout: const Duration(seconds: 10));
_connectedDevice = device;
// 发现服务
final services = await device.discoverServices();
for (var service in services) {
if (service.uuid.toString() == AppConfig.glassesServiceUuid) {
for (var char in service.characteristics) {
if (char.uuid.toString() == AppConfig.glassesCharUuid) {
_writeCharacteristic = char;
// 监听数据
await char.setNotifyValue(true);
char.onValueReceived.listen((data) {
_dataController.add(data);
});
}
}
}
}
_logger.i('Connected to ${device.platformName}');
return true;
} catch (e) {
_logger.e('Connection failed: $e');
return false;
}
}
// 发送数据到眼镜
Future<void> sendToGlasses(Map<String, dynamic> data) async {
if (_writeCharacteristic == null) return;
final jsonStr = jsonEncode(data);
final bytes = utf8.encode(jsonStr);
await _writeCharacteristic!.write(bytes);
}
// 断开连接
Future<void> disconnect() async {
await _connectedDevice?.disconnect();
_connectedDevice = null;
_writeCharacteristic = null;
}
void dispose() {
_dataController.close();
disconnect();
}
}
```
### screens/home/home_screen.dart
```dart
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
class HomeScreen extends ConsumerWidget {
const HomeScreen({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
return Scaffold(
appBar: AppBar(
title: const Text('AISee'),
actions: [
IconButton(
icon: const Icon(Icons.bluetooth),
onPressed: () => context.push('/bluetooth'),
),
IconButton(
icon: const Icon(Icons.settings),
onPressed: () => context.push('/settings'),
),
],
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
// 状态卡片
Card(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: [
const Icon(Icons.visibility, size: 48, color: Colors.blue),
const SizedBox(height: 8),
Text(
'AISee 视觉辅助',
style: Theme.of(context).textTheme.headlineSmall,
),
const SizedBox(height: 4),
const Text('眼镜未连接', style: TextStyle(color: Colors.grey)),
],
),
),
),
const SizedBox(height: 24),
// 功能按钮
Expanded(
child: GridView.count(
crossAxisCount: 2,
mainAxisSpacing: 12,
crossAxisSpacing: 12,
children: [
_FeatureCard(
icon: Icons.camera_alt,
label: '拍照识别',
color: Colors.blue,
onTap: () => context.push('/camera'),
),
_FeatureCard(
icon: Icons.text_fields,
label: '文字识别',
color: Colors.green,
onTap: () => context.push('/camera'),
),
_FeatureCard(
icon: Icons.landscape,
label: '场景理解',
color: Colors.orange,
onTap: () => context.push('/camera'),
),
_FeatureCard(
icon: Icons.history,
label: '历史记录',
color: Colors.purple,
onTap: () => context.push('/history'),
),
],
),
),
],
),
),
);
}
}
class _FeatureCard extends StatelessWidget {
final IconData icon;
final String label;
final Color color;
final VoidCallback onTap;
const _FeatureCard({
required this.icon,
required this.label,
required this.color,
required this.onTap,
});
@override
Widget build(BuildContext context) {
return Card(
elevation: 2,
child: InkWell(
onTap: onTap,
borderRadius: BorderRadius.circular(12),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(icon, size: 48, color: color),
const SizedBox(height: 8),
Text(label, style: Theme.of(context).textTheme.titleMedium),
],
),
),
);
}
}
```
### 其他页面占位
```dart
// screens/camera/camera_screen.dart
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
class CameraScreen extends ConsumerWidget {
const CameraScreen({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
return Scaffold(
appBar: AppBar(title: const Text('拍照识别')),
body: const Center(child: Text('相机页面 - 待开发')),
);
}
}
// screens/analysis/analysis_screen.dart
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
class AnalysisScreen extends ConsumerWidget {
const AnalysisScreen({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
return Scaffold(
appBar: AppBar(title: const Text('分析结果')),
body: const Center(child: Text('分析结果页面 - 待开发')),
);
}
}
// screens/history/history_screen.dart
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
class HistoryScreen extends ConsumerWidget {
const HistoryScreen({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
return Scaffold(
appBar: AppBar(title: const Text('历史记录')),
body: const Center(child: Text('历史记录页面 - 待开发')),
);
}
}
// screens/settings/settings_screen.dart
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
class SettingsScreen extends ConsumerWidget {
const SettingsScreen({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
return Scaffold(
appBar: AppBar(title: const Text('设置')),
body: const Center(child: Text('设置页面 - 待开发')),
);
}
}
// screens/bluetooth/bluetooth_screen.dart
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
class BluetoothScreen extends ConsumerWidget {
const BluetoothScreen({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
return Scaffold(
appBar: AppBar(title: const Text('蓝牙连接')),
body: const Center(child: Text('蓝牙连接页面 - 待开发')),
);
}
}
```
## 5. Android 权限配置
### android/app/src/main/AndroidManifest.xml 添加权限
```xml
<!-- 在 <manifest> 标签内添加 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />
```
### android/app/build.gradle 修改最低 SDK
```groovy
android {
defaultConfig {
minSdkVersion 21 // 改为 21
}
}
```
## 6. 初始化项目命令
```bash
# 1. 创建项目
cd C:\Users\xdedmi\Desktop\aisee
flutter create --org com.aisee --project-name aisee_app --platforms android,ios aisee_app
cd aisee_app
# 2. 获取依赖
flutter pub get
# 3. 运行代码生成freezed、json_serializable
dart run build_runner build --delete-conflicting-outputs
# 4. 运行项目
flutter run
# 5. 运行测试
flutter test
```
## 7. Git 初始化
```bash
cd C:\Users\xdedmi\Desktop\aisee\aisee_app
git init
git add .
git commit -m "feat: 初始化 AISee Flutter 项目"
```
## 8. 开发顺序建议
```
第 1 周:项目搭建 + 首页 UI
第 2 周:相机模块 + 拍照功能
第 3 周API 对接 + 图像上传
第 4 周AI 分析结果展示
第 5 周:蓝牙通信模块
第 6 周:语音播报 + 历史记录
第 7 周:设置页面 + 优化
第 8 周:测试 + Bug 修复
```
---
**提示**:先运行 `flutter pub get` 安装依赖,然后按照目录结构创建文件,逐步填充代码。

107
技术文档/README.md Normal file
View File

@@ -0,0 +1,107 @@
# AISee 项目文档索引
欢迎来到 AISeeAI 视觉辅助眼镜)项目!
## 项目简介
AISee 是一个基于 AI 视觉识别的智能眼镜系统,通过 AR 眼镜采集实时图像,利用人工智能进行场景理解和内容识别,并将分析结果以增强现实的方式呈现给用户。主要服务于视障人士、老年人及专业工作场景。
## 核心特性
- 🔍 **实时物体识别**:识别日常物品并语音播报
- 📖 **智能文字识别**OCR 识别并朗读各类文字
- 🌍 **场景理解**:理解环境并提供上下文信息
- 👤 **人脸识别**:识别熟人并辅助社交
- 🧭 **导航辅助**AR 导航和障碍物预警
- 🤖 **智能助手**:基于大模型的对话式 AI
## 文档导航
### 📋 项目规划类
- **[项目概述](./项目概述.md)** - 项目背景、目标、价值主张和系统架构
- **[项目规划](./项目规划.md)** - 详细的实施计划、团队组织、时间表和预算
### 🛠️ 技术类
- **[技术选型](./技术选型.md)** - 硬件、软件、AI 模型、云服务等技术栈选择
- **[技术方案](./技术方案.md)** - 系统架构设计、核心模块实现、性能优化方案
### 📱 产品类
- **[产品方案](./产品方案.md)** - 产品定位、功能设计、用户体验、商业模式
## 快速开始
### 了解项目
1. 先阅读 [项目概述](./项目概述.md) 了解项目背景和目标
2. 查看 [产品方案](./产品方案.md) 理解产品功能和用户体验
3. 参考 [技术选型](./技术选型.md) 了解技术栈
### 技术实现
1. 阅读 [技术方案](./技术方案.md) 了解系统架构
2. 查看 [项目规划](./项目规划.md) 了解开发计划
3. 开始编码实现
### 项目管理
1. 参考 [项目规划](./项目规划.md) 中的团队组织和时间表
2. 按照里程碑推进项目
3. 定期回顾和调整
## 技术栈概览
### 硬件
- AR 眼镜Rokid Air / Xreal Air
- 移动设备Android / iOS 手机
### 移动端
- AndroidKotlin + Jetpack Compose + MVVM
- iOSSwift + SwiftUI + Combine
### 后端
- 框架Python + FastAPI
- 数据库PostgreSQL + Redis
- 存储MinIO / 阿里云 OSS
### AI 模型
- 物体检测YOLO v8
- 文字识别PaddleOCR
- 场景理解CLIP、BLIP-2
- 大语言模型GPT-4 Vision / Qwen-VL
### 云服务
- 推荐阿里云ECS、OSS、RDS
- 备选AWSEC2、S3、RDS
## 项目阶段
```
第一阶段2个月 :需求调研与设计
第二阶段3个月 MVP 开发
第三阶段2个月 :测试与迭代
第四阶段4个月 v1.0 开发
第五阶段2个月 :公测与上线
第六阶段6+个月) :持续迭代
```
## 联系方式
- 项目负责人:[待定]
- 技术负责人:[待定]
- 产品负责人:[待定]
## 贡献指南
欢迎团队成员贡献代码和文档!
1. Fork 项目仓库
2. 创建功能分支
3. 提交代码并编写测试
4. 发起 Pull Request
5. 等待代码审查
## 许可证
[待定]
---
**最后更新**2026-03-02
**文档版本**v1.0

View File

@@ -0,0 +1,479 @@
# AISee 产品方案
## 产品定位
AISee 是一款面向视觉辅助场景的智能 AR 眼镜系统,通过 AI 技术为用户提供实时的视觉信息解读和增强现实体验。
### 目标用户
1. **视障人群**(核心用户)
- 全盲或低视力人士
- 需要日常生活辅助
- 年龄18-65 岁
2. **老年人群**
- 视力退化
- 需要阅读辅助
- 年龄60+ 岁
3. **专业人士**
- 工业检测人员
- 医疗工作者
- 物流仓储人员
4. **普通消费者**
- 旅游爱好者
- 学习者
- 科技爱好者
## 核心功能
### 1. 物体识别
#### 功能描述
实时识别用户视野中的物体,并通过语音或 AR 标注告知用户。
#### 使用场景
- **日常生活**"前方是一把椅子,距离约 2 米"
- **购物场景**"这是一瓶可口可乐500ml价格 3.5 元"
- **厨房场景**"这是番茄酱,保质期至 2026 年 12 月"
#### 交互方式
```
用户动作:注视物体 2 秒
系统反馈:
- 视觉:绿色边框标注物体
- 听觉:语音播报"这是一个水杯"
- 触觉:轻微震动确认
```
#### 识别类别
- 日常用品100+ 类)
- 食品饮料200+ 类)
- 交通工具50+ 类)
- 动植物500+ 类)
- 自定义物体(用户训练)
### 2. 文字识别OCR
#### 功能描述
识别并朗读各类文字内容,支持中英文及多种语言。
#### 使用场景
- **阅读书籍**:实时朗读书本内容
- **查看标识**:识别路牌、门牌号、商店名称
- **读取文档**:身份证、银行卡、账单等
- **产品信息**:食品标签、药品说明书
#### 交互方式
```
触发方式:
1. 语音指令:"读一下这个"
2. 手势:双击眼镜侧边
3. 自动:检测到文字区域自动识别
输出方式:
- 语音朗读(可调速度)
- AR 文字高亮
- 翻译功能(多语言)
```
#### 特色功能
- **智能断句**:自然语音朗读
- **重点标注**:价格、日期、重要信息高亮
- **实时翻译**:外语即时翻译
- **文字搜索**:查找特定关键词
### 3. 场景理解
#### 功能描述
理解当前环境的整体情况,提供上下文相关的信息和建议。
#### 使用场景
- **环境感知**"您现在在一个咖啡厅,前方有空座位"
- **安全提示**"前方有台阶,请小心"
- **导航辅助**"出口在您的右前方,约 10 米"
- **社交场景**"对面有 3 个人正在交谈"
#### 智能分析
```
场景:用户进入餐厅
系统分析:
1. 环境类型:餐厅
2. 人员情况:约 20 人,较拥挤
3. 空间布局:前方有空桌,右侧是收银台
4. 建议行动:"建议向前走 5 米,左侧有空位"
```
### 4. 人脸识别
#### 功能描述
识别熟人并提供身份信息,辅助社交互动。
#### 使用场景
- **熟人识别**"前方是您的朋友张三"
- **陌生人提示**"前方有一位陌生人正在接近"
- **表情识别**"对方正在微笑"
- **人数统计**"当前视野内有 5 个人"
#### 隐私保护
- 仅识别已授权的联系人
- 本地存储人脸特征
- 不上传原始人脸图像
- 用户可随时删除数据
### 5. 导航辅助
#### 功能描述
结合 GPS 和视觉信息,提供精准的室内外导航。
#### 功能特点
- **AR 箭头指引**:实时显示行走方向
- **障碍物预警**:提前提示障碍物
- **路径规划**:无障碍路线优先
- **语音导航**:详细的转向指令
#### 交互示例
```
用户:"导航到最近的地铁站"
系统:
1. 规划路线800 米,预计 10 分钟)
2. AR 显示:蓝色箭头指向前方
3. 语音:"直行 50 米后右转"
4. 实时更新:距离目的地还有 750 米
```
### 6. 智能助手
#### 功能描述
基于大语言模型的对话式 AI 助手,回答用户问题。
#### 使用场景
- **信息查询**"这个水果叫什么名字?"
- **使用指导**"这个药怎么吃?"
- **知识问答**"这是什么建筑?"
- **生活建议**"这件衣服适合什么场合穿?"
#### 对话示例
```
用户:"这是什么花?"
助手:"这是向日葵,属于菊科植物。向日葵的花朵会随着太阳转动,
因此得名。它的种子可以食用,也可以榨油。"
用户:"怎么养护?"
助手:"向日葵喜欢阳光充足的环境,需要每天浇水,保持土壤湿润。
生长期需要施肥,大约 2-3 个月就能开花。"
```
## 产品功能架构
```
┌─────────────────────────────────────────────────────────┐
│ AISee 产品功能 │
├─────────────────────────────────────────────────────────┤
│ 核心功能层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │物体识别 │ │文字识别 │ │场景理解 │ │人脸识别 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
├─────────────────────────────────────────────────────────┤
│ 辅助功能层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │导航辅助 │ │智能助手 │ │语音交互 │ │历史记录 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
├─────────────────────────────────────────────────────────┤
│ 个性化层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │用户设置 │ │自定义训练│ │场景模式 │ │数据管理 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────┘
```
## 用户体验设计
### 1. 交互方式
#### 语音交互(主要)
```
唤醒词:"小 AI" / "AISee"
常用指令:
- "这是什么?"
- "读一下"
- "导航到..."
- "识别人脸"
- "切换到阅读模式"
```
#### 手势交互
```
- 单击侧边按钮:拍照识别
- 双击侧边按钮OCR 识别
- 长按侧边按钮:语音助手
- 滑动触控板:调整音量
```
#### 头部动作
```
- 点头:确认
- 摇头:取消
- 注视 2 秒:选择/识别
```
### 2. 反馈机制
#### 多模态反馈
```
视觉反馈:
- AR 标注(边框、文字、箭头)
- 颜色编码(绿色=安全,红色=警告,蓝色=信息)
- 动画效果(淡入淡出、闪烁)
听觉反馈:
- 语音播报(自然语音合成)
- 提示音(成功、失败、警告)
- 空间音频(方向提示)
触觉反馈:
- 震动模式(不同强度和节奏)
- 确认震动、警告震动
```
### 3. 场景模式
#### 预设模式
```
1. 日常模式(默认)
- 平衡识别速度和准确度
- 所有功能开启
- 适合日常使用
2. 阅读模式
- OCR 优先
- 自动朗读
- 减少其他提示
3. 导航模式
- 障碍物检测优先
- 路径指引
- 简化其他信息
4. 社交模式
- 人脸识别优先
- 表情分析
- 社交场景理解
5. 省电模式
- 降低识别频率
- 减少 AR 显示
- 延长续航时间
```
### 4. 界面设计原则
#### AR 显示原则
- **简洁优先**:避免信息过载
- **对比度高**:确保可见性
- **动态调整**:根据环境光自动调整
- **分层显示**:重要信息优先
#### 无障碍设计
- **大字体**:最小 24pt
- **高对比度**4.5:1 以上
- **语音优先**:所有功能支持语音
- **简化操作**:减少复杂手势
## 产品路线图
### MVP 版本v0.1 - 3 个月)
#### 核心功能
- ✅ 基础物体识别50 类常见物品)
- ✅ 简单 OCR中英文
- ✅ 语音播报
- ✅ 手机 APPAndroid
- ✅ 基础 AR 标注
#### 目标
- 验证技术可行性
- 收集用户反馈
- 完成 100 次测试
### v1.0 版本6 个月)
#### 新增功能
- 场景理解
- 人脸识别(熟人)
- 导航辅助(基础)
- 智能助手(对话)
- iOS APP
#### 优化
- 识别准确率 > 90%
- 响应时间 < 2 秒
- 续航时间 > 4 小时
#### 目标
- 公测 1000 用户
- 收集 10000+ 使用数据
- 准备商业化
### v2.0 版本12 个月)
#### 高级功能
- 自定义物体训练
- 室内精准导航
- 多语言支持10+ 语言)
- 离线模式
- 云端同步
#### 商业化
- 订阅服务
- 企业定制
- 开发者平台
### v3.0 版本18 个月)
#### 生态建设
- 第三方应用市场
- API 开放平台
- 社区共建
- 硬件升级
## 商业模式
### 1. 硬件销售
#### 产品定价
```
基础版1999 元
- 标准 AR 眼镜
- 基础功能
- 1 年免费服务
专业版3999 元
- 高端 AR 眼镜
- 全部功能
- 3 年免费服务
- 优先技术支持
企业版:定制报价
- 批量采购优惠
- 定制化开发
- 专属技术支持
```
### 2. 订阅服务
#### 服务套餐
```
免费版:
- 基础物体识别
- 简单 OCR
- 每日 100 次识别
标准版29 元/月
- 所有识别功能
- 无限次使用
- 云端存储 10GB
- 历史记录
高级版99 元/月
- 标准版所有功能
- 自定义训练
- 云端存储 100GB
- 优先处理
- 离线模式
企业版999 元/月起
- 高级版所有功能
- 私有化部署
- 定制化开发
- 专属客服
- SLA 保障
```
### 3. 增值服务
- **数据标注服务**:为企业提供数据标注
- **模型训练服务**:定制化 AI 模型
- **技术咨询**AI 视觉解决方案咨询
- **广告合作**:场景化广告推荐
## 竞争分析
### 竞品对比
| 产品 | AISee | Envision Glasses | OrCam MyEye | Seeing AI |
|------|-------|------------------|-------------|-----------|
| 价格 | 1999-3999 元 | $3500 | $4500 | 免费(仅软件)|
| 形态 | AR 眼镜 | 智能眼镜 | 夹扣式 | 手机 APP |
| 物体识别 | ✅ | ✅ | ✅ | ✅ |
| OCR | ✅ | ✅ | ✅ | ✅ |
| 人脸识别 | ✅ | ✅ | ✅ | ✅ |
| AR 显示 | ✅ | ❌ | ❌ | ❌ |
| 导航 | ✅ | 基础 | ❌ | 基础 |
| 中文支持 | ✅ | 有限 | 有限 | ✅ |
| 离线模式 | v2.0 | ✅ | ✅ | 部分 |
### 竞争优势
1. **价格优势**:比国外产品便宜 50%
2. **AR 体验**:独特的增强现实显示
3. **本地化**:更好的中文支持
4. **生态开放**:支持第三方开发
5. **持续更新**:基于云端的 AI 能力持续提升
## 市场策略
### 目标市场
#### 一期市场(国内)
- 中国视障人群1700 万
- 目标用户50 万3%
- 市场规模10 亿元
#### 二期市场(海外)
- 全球视障人群2.85 亿
- 目标用户100 万
- 市场规模50 亿元
### 推广策略
1. **公益合作**
- 与残联合作
- 公益捐赠计划
- 免费试用活动
2. **渠道建设**
- 线上:官网、电商平台
- 线下:医疗器械店、眼镜店
- 合作:医院、康复中心
3. **品牌建设**
- 用户故事传播
- 科技媒体报道
- 行业展会参展
4. **社区运营**
- 用户社区
- 开发者社区
- 志愿者网络
## 成功指标
### 产品指标
- 识别准确率 > 95%
- 响应时间 < 1.5 秒
- 用户满意度 > 4.5/5
- 日活跃用户 > 10000
### 商业指标
- 第一年销售 10000 台
- 付费用户转化率 > 30%
- 用户留存率(月)> 80%
- NPS 评分 > 50
### 社会影响
- 帮助 50000+ 视障人士
- 媒体报道 100+ 次
- 获得行业奖项
- 推动无障碍标准制定

View File

@@ -0,0 +1,543 @@
# AISee 技术实现方案
## 系统架构设计
### 整体架构图
```
┌─────────────────────────────────────────────────────────────┐
│ 用户层 │
│ AR 智能眼镜 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 摄像头模块 │ │ 显示模块 │ │ 传感器模块 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
↕ (蓝牙/WiFi)
┌─────────────────────────────────────────────────────────────┐
│ 移动端层 │
│ 手机 APP │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ UI 层:用户界面、设置、历史记录 │ │
│ ├──────────────────────────────────────────────────────┤ │
│ │ 业务层:图像处理、数据管理、设备通信 │ │
│ ├──────────────────────────────────────────────────────┤ │
│ │ 数据层:本地缓存、数据库、网络请求 │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
↕ (HTTPS/WebSocket)
┌─────────────────────────────────────────────────────────────┐
│ 云端层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ API 网关 │ │ 负载均衡 │ │ CDN │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 应用服务层 │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │ 图像服务 │ │ AI 服务 │ │ 用户服务 │ │ │
│ │ └────────────┘ └────────────┘ └────────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ AI 推理层 │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │ 物体识别 │ │ OCR 识别 │ │ 场景理解 │ │ │
│ │ └────────────┘ └────────────┘ └────────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ 数据层 │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │ PostgreSQL │ │ Redis │ │ OSS │ │ │
│ │ └────────────┘ └────────────┘ └────────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
## 核心模块设计
### 1. 图像采集与传输模块
#### 眼镜端
```python
# 伪代码示例
class CameraModule:
def __init__(self):
self.camera = Camera(resolution="1920x1080", fps=30)
self.encoder = H264Encoder()
def capture_frame(self):
"""采集单帧图像"""
frame = self.camera.read()
return self.preprocess(frame)
def preprocess(self, frame):
"""图像预处理"""
# 1. 调整分辨率(降低到 640x480 以减少传输)
frame = resize(frame, (640, 480))
# 2. 压缩质量优化
frame = compress(frame, quality=85)
return frame
def stream_to_phone(self):
"""实时流传输"""
while True:
frame = self.capture_frame()
self.bluetooth.send(frame)
time.sleep(0.033) # 30fps
```
#### 手机端接收
```kotlin
// Android 示例
class ImageReceiver(private val bluetoothSocket: BluetoothSocket) {
private val imageQueue = LinkedBlockingQueue<ByteArray>(10)
fun startReceiving() {
CoroutineScope(Dispatchers.IO).launch {
val inputStream = bluetoothSocket.inputStream
while (isActive) {
val imageData = readImageData(inputStream)
imageQueue.offer(imageData)
}
}
}
fun getNextImage(): ByteArray? {
return imageQueue.poll(100, TimeUnit.MILLISECONDS)
}
}
```
### 2. 手机 APP 架构
#### 目录结构
```
app/
├── data/
│ ├── local/ # 本地数据源
│ │ ├── database/ # Room 数据库
│ │ └── cache/ # 图像缓存
│ ├── remote/ # 远程数据源
│ │ ├── api/ # API 接口
│ │ └── websocket/ # WebSocket 连接
│ └── repository/ # 数据仓库
├── domain/
│ ├── model/ # 领域模型
│ ├── usecase/ # 业务用例
│ └── repository/ # 仓库接口
├── presentation/
│ ├── main/ # 主界面
│ ├── settings/ # 设置界面
│ ├── history/ # 历史记录
│ └── viewmodel/ # ViewModel
└── device/
├── bluetooth/ # 蓝牙通信
└── camera/ # 相机处理
```
#### 核心业务流程
```kotlin
class ImageProcessingViewModel @Inject constructor(
private val imageRepository: ImageRepository,
private val aiService: AIService
) : ViewModel() {
private val _aiResult = MutableStateFlow<AIResult?>(null)
val aiResult: StateFlow<AIResult?> = _aiResult.asStateFlow()
fun processImage(imageData: ByteArray) {
viewModelScope.launch {
try {
// 1. 保存到本地缓存
val imageId = imageRepository.saveImage(imageData)
// 2. 上传到服务器
val uploadResult = imageRepository.uploadImage(imageId, imageData)
// 3. 请求 AI 分析
val result = aiService.analyzeImage(uploadResult.url)
// 4. 更新 UI
_aiResult.value = result
// 5. 发送结果到眼镜
sendToGlasses(result)
} catch (e: Exception) {
handleError(e)
}
}
}
private suspend fun sendToGlasses(result: AIResult) {
val displayData = formatForAR(result)
bluetoothManager.send(displayData)
}
}
```
### 3. 后端 API 设计
#### 项目结构
```
backend/
├── app/
│ ├── api/
│ │ ├── v1/
│ │ │ ├── endpoints/
│ │ │ │ ├── images.py # 图像上传
│ │ │ │ ├── analysis.py # AI 分析
│ │ │ │ └── users.py # 用户管理
│ │ │ └── router.py
│ │ └── deps.py # 依赖注入
│ ├── core/
│ │ ├── config.py # 配置
│ │ ├── security.py # 安全
│ │ └── celery_app.py # 异步任务
│ ├── models/
│ │ ├── user.py
│ │ ├── image.py
│ │ └── analysis.py
│ ├── schemas/
│ │ ├── image.py # Pydantic 模型
│ │ └── analysis.py
│ ├── services/
│ │ ├── ai/
│ │ │ ├── object_detection.py
│ │ │ ├── ocr.py
│ │ │ ├── scene_understanding.py
│ │ │ └── model_manager.py
│ │ ├── storage.py # 对象存储
│ │ └── cache.py # 缓存服务
│ └── main.py
├── tests/
├── requirements.txt
└── Dockerfile
```
#### API 端点设计
```python
from fastapi import FastAPI, UploadFile, File, BackgroundTasks
from app.services.ai import AIService
from app.schemas import AnalysisRequest, AnalysisResponse
app = FastAPI(title="AISee API")
@app.post("/api/v1/images/upload")
async def upload_image(
file: UploadFile = File(...),
user_id: str = Depends(get_current_user)
):
"""上传图像"""
# 1. 验证图像格式
validate_image(file)
# 2. 保存到 OSS
image_url = await storage_service.upload(file)
# 3. 保存元数据到数据库
image_record = await db.images.create({
"user_id": user_id,
"url": image_url,
"uploaded_at": datetime.now()
})
return {"image_id": image_record.id, "url": image_url}
@app.post("/api/v1/analysis/analyze", response_model=AnalysisResponse)
async def analyze_image(
request: AnalysisRequest,
background_tasks: BackgroundTasks
):
"""AI 图像分析"""
# 1. 获取图像
image = await storage_service.download(request.image_url)
# 2. 并行执行多个 AI 任务
results = await asyncio.gather(
ai_service.detect_objects(image),
ai_service.recognize_text(image),
ai_service.understand_scene(image)
)
# 3. 合并结果
analysis_result = merge_results(results)
# 4. 异步保存到数据库
background_tasks.add_task(save_analysis, analysis_result)
return analysis_result
@app.websocket("/ws/realtime")
async def websocket_endpoint(websocket: WebSocket):
"""实时分析 WebSocket"""
await websocket.accept()
try:
while True:
# 接收图像数据
data = await websocket.receive_bytes()
# 快速分析
result = await ai_service.quick_analyze(data)
# 返回结果
await websocket.send_json(result)
except WebSocketDisconnect:
pass
```
### 4. AI 推理服务设计
#### 模型管理器
```python
class ModelManager:
def __init__(self):
self.models = {}
self.device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
def load_models(self):
"""加载所有模型"""
# 物体检测模型
self.models['yolo'] = YOLO('yolov8n.pt').to(self.device)
# OCR 模型
self.models['ocr'] = PaddleOCR(use_angle_cls=True, lang='ch')
# 场景理解模型
self.models['clip'] = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
# 多模态大模型
self.models['llm'] = load_qwen_vl_model()
def get_model(self, model_name: str):
return self.models.get(model_name)
class AIService:
def __init__(self):
self.model_manager = ModelManager()
self.model_manager.load_models()
async def detect_objects(self, image: np.ndarray) -> List[Detection]:
"""物体检测"""
model = self.model_manager.get_model('yolo')
results = model(image)
detections = []
for r in results:
boxes = r.boxes
for box in boxes:
detections.append({
"class": box.cls,
"confidence": box.conf,
"bbox": box.xyxy.tolist(),
"label": model.names[int(box.cls)]
})
return detections
async def recognize_text(self, image: np.ndarray) -> List[TextRegion]:
"""文字识别"""
ocr = self.model_manager.get_model('ocr')
result = ocr.ocr(image, cls=True)
text_regions = []
for line in result[0]:
text_regions.append({
"text": line[1][0],
"confidence": line[1][1],
"bbox": line[0]
})
return text_regions
async def understand_scene(self, image: np.ndarray) -> SceneDescription:
"""场景理解"""
# 使用多模态大模型生成场景描述
llm = self.model_manager.get_model('llm')
prompt = "请详细描述这张图片中的场景、物体和可能的上下文信息。"
description = llm.generate(image, prompt)
return {
"description": description,
"tags": extract_tags(description),
"sentiment": analyze_sentiment(description)
}
```
### 5. AR 显示模块
#### 数据格式设计
```json
{
"type": "ar_overlay",
"timestamp": 1234567890,
"elements": [
{
"id": "obj_001",
"type": "bounding_box",
"position": {"x": 100, "y": 150, "width": 200, "height": 300},
"label": "水杯",
"confidence": 0.95,
"color": "#00FF00"
},
{
"id": "text_001",
"type": "text_overlay",
"position": {"x": 50, "y": 50},
"content": "前方有台阶,请小心",
"font_size": 24,
"color": "#FF0000",
"duration": 3000
},
{
"id": "arrow_001",
"type": "direction_arrow",
"start": {"x": 320, "y": 240},
"end": {"x": 400, "y": 240},
"label": "出口方向"
}
]
}
```
#### 眼镜端渲染
```python
class ARRenderer:
def __init__(self, display):
self.display = display
self.overlay_queue = queue.Queue()
def render_frame(self, camera_frame, ar_data):
"""渲染 AR 叠加层"""
# 1. 绘制原始相机画面
frame = camera_frame.copy()
# 2. 绘制 AR 元素
for element in ar_data['elements']:
if element['type'] == 'bounding_box':
self.draw_bbox(frame, element)
elif element['type'] == 'text_overlay':
self.draw_text(frame, element)
elif element['type'] == 'direction_arrow':
self.draw_arrow(frame, element)
# 3. 显示到眼镜屏幕
self.display.show(frame)
def draw_bbox(self, frame, element):
"""绘制边界框"""
pos = element['position']
cv2.rectangle(
frame,
(pos['x'], pos['y']),
(pos['x'] + pos['width'], pos['y'] + pos['height']),
self.hex_to_rgb(element['color']),
2
)
# 绘制标签
cv2.putText(
frame,
f"{element['label']} {element['confidence']:.2f}",
(pos['x'], pos['y'] - 10),
cv2.FONT_HERSHEY_SIMPLEX,
0.5,
self.hex_to_rgb(element['color']),
2
)
```
## 性能优化方案
### 1. 图像传输优化
- 使用 H.264 硬件编码
- 动态调整分辨率和帧率
- 实现智能跳帧机制
- 使用 WiFi Direct 替代蓝牙(高带宽场景)
### 2. AI 推理优化
- 模型量化INT8
- 批处理推理
- 模型缓存和预热
- GPU 并行计算
- 使用 TensorRT 加速
### 3. 网络优化
- CDN 加速静态资源
- 图像压缩和格式优化WebP
- HTTP/2 多路复用
- 请求合并和批处理
- 智能重试机制
### 4. 缓存策略
```python
# 多级缓存
class CacheStrategy:
def __init__(self):
self.l1_cache = LRUCache(maxsize=100) # 内存缓存
self.l2_cache = RedisCache() # Redis 缓存
self.l3_cache = DatabaseCache() # 数据库
async def get(self, key):
# L1 缓存
if key in self.l1_cache:
return self.l1_cache[key]
# L2 缓存
value = await self.l2_cache.get(key)
if value:
self.l1_cache[key] = value
return value
# L3 缓存
value = await self.l3_cache.get(key)
if value:
await self.l2_cache.set(key, value, ttl=3600)
self.l1_cache[key] = value
return value
```
## 安全方案
### 1. 数据传输安全
- TLS 1.3 加密
- 证书固定Certificate Pinning
- 请求签名验证
### 2. 隐私保护
- 图像本地处理优先
- 敏感信息脱敏
- 用户数据加密存储
- 定期数据清理
### 3. 访问控制
- JWT 认证
- OAuth 2.0 授权
- API 限流
- IP 白名单
## 监控与运维
### 1. 性能监控
```python
# 关键指标
metrics = {
"image_upload_latency": Histogram(),
"ai_inference_time": Histogram(),
"api_response_time": Histogram(),
"error_rate": Counter(),
"active_users": Gauge()
}
```
### 2. 日志系统
- 结构化日志JSON 格式)
- 分级日志DEBUG/INFO/WARN/ERROR
- 日志聚合和分析
- 告警机制
### 3. 容灾方案
- 服务降级
- 熔断机制
- 限流保护
- 数据备份

View File

@@ -0,0 +1,175 @@
# AISee 技术选型方案
## 1. AR 眼镜硬件选型
### 推荐方案
**Rokid Air / Xreal Air**
- 轻量化设计(约 80g
- 支持蓝牙和 USB-C 连接
- 1080p 显示分辨率
- 内置摄像头(部分型号)
- 价格适中2000-3000元
### 备选方案
- **RealWear HMT-1**:工业级,更耐用但较重
- **Vuzix Blade**:集成度高但价格较贵
- **自研方案**:基于树莓派 + 微型显示器(成本可控但开发周期长)
## 2. 移动端技术栈Flutter 跨平台)
### 选型理由
- 一套代码同时支持 Android 和 iOS快速验证产品
- Dart 语言性能接近原生,热重载提升开发效率
- 丰富的插件生态,蓝牙、相机等硬件访问成熟
- 社区活跃,问题解决快
### 核心框架
```
语言Dart 3.2+
框架Flutter 3.16+
状态管理Riverpod 2.x
路由GoRouter
网络请求Dio
WebSocketweb_socket_channel
本地存储Hive + sqflite
JSON 序列化freezed + json_serializable
```
### 硬件交互
```
相机camera 插件
蓝牙flutter_blue_plus
权限管理permission_handler
语音合成flutter_tts
图片处理image
```
### UI 相关
```
设计规范Material Design 3
图片加载cached_network_image
字体google_fonts
图标cupertino_icons + flutter_svg
```
### 开发工具
```
IDEVS Code + Flutter/Dart 插件
代码生成build_runner
代码规范flutter_lints
测试mockito + mocktail
```
## 3. 后端技术栈
### 核心框架
```
语言Python 3.11+
Web 框架FastAPI
异步处理asyncio + uvicorn
任务队列Celery + Redis
数据库PostgreSQL 15
缓存Redis 7
对象存储MinIO / 阿里云 OSS
```
### AI 推理服务
```
深度学习框架PyTorch 2.0+
模型服务TorchServe / TensorRT
GPU 加速CUDA 12.0+
模型管理MLflow
```
## 4. AI 模型选型
### 视觉识别模型
#### 物体检测
- **YOLO v8**:实时性好,精度高
- **EfficientDet**:移动端友好
- **Faster R-CNN**:高精度场景
#### 文字识别OCR
- **PaddleOCR**:中文支持好,开源免费
- **EasyOCR**:多语言支持
- **Tesseract**:传统方案,稳定可靠
#### 场景理解
- **CLIP**OpenAI图文匹配零样本学习
- **BLIP-2**:图像描述生成
- **SAM**Segment Anything通用分割
#### 人脸识别
- **InsightFace**:高精度,商用友好
- **FaceNet**:经典方案
- **RetinaFace**:人脸检测
### 大语言模型LLM
- **GPT-4 Vision**最强理解能力API 调用)
- **Claude 3**:视觉理解能力强
- **Qwen-VL**:国产开源,可私有化部署
- **LLaVA**:开源多模态模型
## 5. 云服务选型
### 推荐:阿里云
```
计算ECSGPU 实例 - GN7i
存储OSS
数据库RDS PostgreSQL
缓存Redis 企业版
CDN阿里云 CDN
负载均衡SLB
```
### 备选AWS
```
计算EC2g4dn 实例)
存储S3
数据库RDS
缓存ElastiCache
CDNCloudFront
负载均衡ALB
```
## 6. 通信协议
### 眼镜 ↔ 手机
- **蓝牙 BLE**:低功耗,适合控制指令
- **WiFi Direct**:高带宽,适合图像传输
- **USB-C**:有线连接,最稳定
### 手机 ↔ 后端
- **HTTP/2 + gRPC**API 调用
- **WebSocket**:实时双向通信
- **MQTT**:轻量级消息推送
## 7. 开发工具链
### 版本控制
- Git + GitHub / GitLab
### CI/CD
- GitHub Actions / GitLab CI
- Docker + Kubernetes
### 监控运维
- Prometheus + Grafana监控
- ELK Stack日志
- Sentry错误追踪
### 协作工具
- Jira项目管理
- Confluence文档
- Figma设计
- PostmanAPI 测试)
## 8. 技术选型原则
1. **优先开源**:降低成本,避免供应商锁定
2. **成熟稳定**:选择经过验证的技术栈
3. **性能优先**:实时性是核心需求
4. **可扩展性**:支持未来功能扩展
5. **团队熟悉度**:考虑团队技术背景
6. **社区活跃**:便于问题解决和学习

View File

@@ -0,0 +1,49 @@
# AISee - AI 视觉辅助眼镜项目
## 项目简介
AISee 是一个基于 AI 视觉识别的智能眼镜系统,通过 AR 眼镜采集实时图像,利用人工智能进行场景理解和内容识别,并将分析结果以增强现实的方式呈现给用户。
## 核心价值
- **实时视觉辅助**:为视障人士、老年人或特定工作场景提供实时的视觉信息解读
- **智能场景理解**:识别物体、文字、人脸、场景等多维度信息
- **AR 交互体验**:通过 AR 显示技术,将 AI 分析结果直观呈现在用户视野中
- **移动化部署**:基于手机作为计算中枢,降低硬件成本和复杂度
## 应用场景
1. **视障辅助**:帮助视障人士识别物体、阅读文字、导航环境
2. **工业检测**:辅助工人进行设备检查、质量控制
3. **医疗辅助**:手术过程中的信息提示、病历查看
4. **教育培训**:实时翻译、知识标注、学习辅助
5. **旅游导览**:景点识别、历史信息展示、路线导航
## 系统架构概览
```
AR 眼镜 <--蓝牙/WiFi--> 手机 APP <--网络--> 云端 AI 服务
↓ ↓ ↓
图像采集 数据中转 AI 分析
AR 显示 本地处理 模型推理
```
## 项目目标
### 第一阶段MVP - 3个月
- 完成基础图像采集和传输
- 实现基本的物体识别和文字识别
- 开发简单的 AR 显示功能
- 完成手机 APP 和后端 API
### 第二阶段(功能完善 - 6个月
- 增强 AI 识别能力(场景理解、人脸识别)
- 优化 AR 显示效果和交互体验
- 提升系统响应速度和稳定性
- 支持离线模式和边缘计算
### 第三阶段(商业化 - 12个月
- 多场景适配和定制化
- 大规模部署和性能优化
- 建立生态系统和开发者平台
- 数据安全和隐私保护增强

View File

@@ -0,0 +1,437 @@
# AISee 项目实施计划
## 项目概览
**项目名称**AISee - AI 视觉辅助眼镜系统
**项目周期**18 个月
**团队规模**15-20 人
**预算范围**500-800 万元
## 团队组织架构
### 核心团队
```
项目负责人1人
├── 产品团队3人
│ ├── 产品经理1人
│ ├── UI/UX 设计师1人
│ └── 产品运营1人
├── 技术团队10人
│ ├── 移动端3人
│ │ ├── Android 开发2人
│ │ └── iOS 开发1人
│ │
│ ├── 后端3人
│ │ ├── 后端架构师1人
│ │ └── 后端开发2人
│ │
│ ├── AI 团队3人
│ │ ├── AI 算法工程师2人
│ │ └── 模型训练工程师1人
│ │
│ └── 硬件/嵌入式1人
├── 测试团队2人
│ ├── 测试工程师1人
│ └── 质量保证1人
└── 运维团队1人
└── DevOps 工程师1人
```
### 外部协作
- **硬件供应商**AR 眼镜制造商
- **云服务商**:阿里云/AWS
- **数据标注**:外包团队
- **法律顾问**:知识产权、隐私合规
- **用户测试**:残联、志愿者组织
## 项目阶段规划
### 第一阶段需求调研与设计1-2 个月)
#### 第 1-2 周:市场调研
- [ ] 竞品分析5 款主要产品)
- [ ] 用户访谈50+ 目标用户)
- [ ] 需求收集和优先级排序
- [ ] 可行性分析报告
#### 第 3-4 周:产品设计
- [ ] 产品功能规格书PRD
- [ ] 用户体验流程图
- [ ] UI/UX 设计稿
- [ ] 交互原型Figma
#### 第 5-6 周:技术设计
- [ ] 系统架构设计
- [ ] 技术选型确认
- [ ] 数据库设计
- [ ] API 接口设计
- [ ] 安全方案设计
#### 第 7-8 周:项目准备
- [ ] 开发环境搭建
- [ ] 代码仓库初始化
- [ ] CI/CD 流程建立
- [ ] 项目管理工具配置
- [ ] 团队培训
**交付物**
- 产品需求文档PRD
- 技术架构文档
- UI/UX 设计稿
- 项目计划书
### 第二阶段MVP 开发3-5 个月)
#### 第 9-12 周:基础框架搭建
**移动端**
- [ ] Android APP 框架搭建
- [ ] 蓝牙通信模块
- [ ] 图像采集和预处理
- [ ] 基础 UI 界面
**后端**
- [ ] FastAPI 项目初始化
- [ ] 数据库表结构创建
- [ ] 用户认证系统
- [ ] 图像上传 API
- [ ] 对象存储集成
**AI 服务**
- [ ] 模型选型和测试
- [ ] YOLO 物体检测集成
- [ ] PaddleOCR 集成
- [ ] 推理服务搭建
**硬件**
- [ ] AR 眼镜选型和采购
- [ ] 硬件通信协议确认
- [ ] 固件开发(如需要)
#### 第 13-16 周:核心功能开发
**物体识别**
- [ ] 50 类常见物品识别
- [ ] 边界框标注
- [ ] 语音播报
- [ ] 置信度显示
**文字识别**
- [ ] 中英文 OCR
- [ ] 文字区域检测
- [ ] 文字朗读
- [ ] 结果缓存
**AR 显示**
- [ ] 基础 AR 渲染引擎
- [ ] 边界框绘制
- [ ] 文字叠加
- [ ] 颜色和样式
**系统集成**
- [ ] 端到端流程打通
- [ ] 数据流测试
- [ ] 性能初步优化
#### 第 17-20 周:功能完善与优化
- [ ] 用户设置功能
- [ ] 历史记录
- [ ] 错误处理
- [ ] 日志系统
- [ ] 性能优化
- [ ] 内存优化
- [ ] 网络优化
**交付物**
- MVP 版本v0.1
- 技术文档
- 测试报告
- 演示视频
### 第三阶段测试与迭代2 个月)
#### 第 21-24 周:内部测试
- [ ] 单元测试(覆盖率 > 80%
- [ ] 集成测试
- [ ] 性能测试
- [ ] 压力测试
- [ ] 安全测试
- [ ] Bug 修复
#### 第 25-28 周:用户测试
- [ ] 招募测试用户50 人)
- [ ] 用户培训
- [ ] 实地测试
- [ ] 收集反馈
- [ ] 问题分析
- [ ] 功能迭代
**测试指标**
- 识别准确率 > 85%
- 响应时间 < 3 秒
- 崩溃率 < 1%
- 用户满意度 > 4.0/5
**交付物**
- 测试报告
- 用户反馈报告
- 优化方案
### 第四阶段v1.0 开发3-4 个月)
#### 第 29-32 周:高级功能开发
**场景理解**
- [ ] 集成多模态大模型
- [ ] 场景描述生成
- [ ] 上下文分析
- [ ] 智能建议
**人脸识别**
- [ ] InsightFace 集成
- [ ] 人脸数据库
- [ ] 熟人识别
- [ ] 隐私保护
**导航辅助**
- [ ] GPS 集成
- [ ] 路径规划
- [ ] AR 导航箭头
- [ ] 障碍物检测
**智能助手**
- [ ] LLM 集成GPT-4V/Claude
- [ ] 对话管理
- [ ] 上下文记忆
- [ ] 多轮对话
#### 第 33-36 周iOS 开发
- [ ] iOS APP 开发
- [ ] 功能对齐
- [ ] 平台适配
- [ ] 测试验证
#### 第 37-40 周:优化与完善
- [ ] 性能深度优化
- [ ] UI/UX 优化
- [ ] 多语言支持
- [ ] 无障碍优化
- [ ] 文档完善
**交付物**
- v1.0 正式版
- 用户手册
- 开发者文档
- 运营手册
### 第五阶段公测与上线2 个月)
#### 第 41-44 周:公测准备
- [ ] 服务器扩容
- [ ] 监控系统完善
- [ ] 客服系统搭建
- [ ] 用户社区建设
- [ ] 营销物料准备
#### 第 45-48 周:公测
- [ ] 招募 1000 名测试用户
- [ ] 灰度发布
- [ ] 问题快速响应
- [ ] 数据分析
- [ ] 持续优化
#### 第 49-52 周:正式上线
- [ ] 全量发布
- [ ] 市场推广
- [ ] 媒体宣传
- [ ] 渠道合作
- [ ] 用户运营
**交付物**
- 正式产品
- 运营数据报告
- 市场反馈报告
### 第六阶段持续迭代6+ 个月)
#### v2.0 规划
- 自定义物体训练
- 离线模式
- 室内精准导航
- 更多语言支持
- 企业定制功能
#### 生态建设
- 开发者平台
- API 开放
- 第三方应用
- 社区运营
## 里程碑与关键节点
| 时间 | 里程碑 | 关键交付 |
|------|--------|----------|
| M12个月 | 需求与设计完成 | PRD、架构设计、UI 设计 |
| M25个月 | MVP 开发完成 | v0.1 版本、技术验证 |
| M37个月 | 测试完成 | 测试报告、用户反馈 |
| M411个月 | v1.0 开发完成 | 完整功能版本 |
| M513个月 | 公测完成 | 1000 用户验证 |
| M614个月 | 正式上线 | 商业化运营 |
| M718个月 | v2.0 规划 | 生态建设启动 |
## 风险管理
### 技术风险
| 风险 | 影响 | 概率 | 应对措施 |
|------|------|------|----------|
| AI 识别准确率不达标 | 高 | 中 | 多模型对比、数据增强、持续训练 |
| 实时性能不足 | 高 | 中 | 模型优化、边缘计算、硬件加速 |
| 硬件兼容性问题 | 中 | 高 | 多设备测试、抽象硬件层 |
| 网络延迟影响体验 | 中 | 中 | 本地缓存、离线模式、CDN 加速 |
### 产品风险
| 风险 | 影响 | 概率 | 应对措施 |
|------|------|------|----------|
| 用户需求理解偏差 | 高 | 中 | 持续用户访谈、快速迭代 |
| 竞品快速跟进 | 中 | 中 | 建立技术壁垒、专利保护 |
| 市场接受度低 | 高 | 低 | 公益合作、免费试用、口碑营销 |
### 商业风险
| 风险 | 影响 | 概率 | 应对措施 |
|------|------|------|----------|
| 成本超支 | 中 | 中 | 严格预算控制、分阶段投入 |
| 融资困难 | 高 | 低 | 多渠道融资、政府补贴申请 |
| 法律合规问题 | 高 | 低 | 法律顾问、隐私合规审查 |
### 团队风险
| 风险 | 影响 | 概率 | 应对措施 |
|------|------|------|----------|
| 核心人员流失 | 高 | 低 | 股权激励、团队文化建设 |
| 技能不匹配 | 中 | 中 | 培训、外部专家支持 |
| 沟通协作问题 | 中 | 中 | 敏捷开发、定期会议 |
## 预算规划
### 总预算500-800 万元
#### 人力成本60%300-480 万元
```
项目负责人50 万/年
产品团队30 万/年 × 3 = 90 万
技术团队35 万/年 × 10 = 350 万
测试团队25 万/年 × 2 = 50 万
运维团队30 万/年 × 1 = 30 万
18 个月总计570 万 × 1.5 年 = 855 万
按 15 人计算:约 640 万18 个月)
```
#### 硬件成本15%75-120 万元
```
AR 眼镜采购3000 元 × 50 台 = 15 万
测试设备20 万
服务器GPU40 万
办公设备20 万
```
#### 云服务成本10%50-80 万元
```
计算资源GPU 实例3 万/月 × 18 = 54 万
存储OSS5000 元/月 × 18 = 9 万
数据库、缓存等1 万/月 × 18 = 18 万
```
#### 第三方服务5%25-40 万元
```
AI API 调用GPT-4V2 万/月 × 12 = 24 万
数据标注10 万
其他 API 服务6 万
```
#### 营销推广5%25-40 万元
```
市场调研5 万
公测推广15 万
媒体宣传10 万
活动费用10 万
```
#### 其他费用5%25-40 万元
```
法律咨询5 万
专利申请10 万
办公场地5 万/月 × 18 = 90 万(另计)
差旅费用10 万
```
## 质量保证
### 代码质量
- 代码审查Code Review
- 单元测试覆盖率 > 80%
- 静态代码分析
- 持续集成CI
### 产品质量
- 功能测试
- 性能测试
- 兼容性测试
- 用户验收测试UAT
### 文档质量
- 技术文档
- API 文档
- 用户手册
- 运维手册
## 项目管理工具
### 开发管理
- **代码管理**GitHub / GitLab
- **项目管理**Jira
- **文档协作**Confluence / 飞书文档
- **设计协作**Figma
### 沟通协作
- **即时通讯**Slack / 飞书
- **视频会议**Zoom / 腾讯会议
- **邮件**:企业邮箱
### 监控运维
- **监控**Prometheus + Grafana
- **日志**ELK Stack
- **错误追踪**Sentry
- **性能分析**New Relic
## 成功标准
### 技术指标
- ✅ 物体识别准确率 > 90%
- ✅ OCR 识别准确率 > 95%
- ✅ 端到端响应时间 < 2 秒
- ✅ 系统可用性 > 99.5%
- ✅ 崩溃率 < 0.5%
### 产品指标
- ✅ 用户满意度 > 4.5/5
- ✅ 日活跃用户 > 5000
- ✅ 用户留存率(月)> 70%
- ✅ NPS 评分 > 40
### 商业指标
- ✅ 第一年销售 5000 台
- ✅ 付费转化率 > 20%
- ✅ 获得 A 轮融资
- ✅ 建立 3+ 渠道合作
### 社会影响
- ✅ 帮助 10000+ 视障人士
- ✅ 获得 50+ 媒体报道
- ✅ 获得行业奖项
- ✅ 推动无障碍技术发展