像鹰一样锐利,如AI般智能
一款革命性的计算机视觉系统,采用尖端人工智能技术,将图像分析提升至新高度。基于谷歌高效轻量级 MobileNetV2 架构,实现快速精准的视觉智能化。
鹰眼AI是新一代智能视觉平台,融合深度学习与迁移学习技术,打造高性能视觉分析引擎。系统继承 MobileNetV2 预训练模型的优秀特性,实现快速部署、高效推理、精准识别的完美统一。
YiShouAI/
├── src/ # 源代码目录
│ ├── YingYanAI.py # 核心AI模型实现
│ ├── app.py # FastAPI 服务实现
│ ├── download_data.py # 数据采集工具
│ └── logger_config.py # 日志配置
├── tools/ # 实用工具目录
│ └── predict_test.py # 预测功能测试工具
├── models/ # 模型存储目录
│ ├── yingyan_model.h5 # 训练后的模型文件
│ └── class_names.txt # 类别名称映射文件
├── images/ # 图像数据目录
│ ├── train/ # 训练数据集
│ │ ├── {关键词1}/ # 根据搜索关键词自动创建的类别目录
│ │ └── {关键词2}/ # 根据搜索关键词自动创建的类别目录
│ ├── validation/ # 验证数据集
│ └── test/ # 测试数据集
├── log/ # 日志文件目录
│ └── *.log # 运行日志文件
└── README.md # 项目说明文档
# 安装依赖
pip install tensorflow fastapi uvicorn python-multipart pillow icrawler
# 创建必要的目录
mkdir -p images/train images/validation models log
创建必要的数据目录:
mkdir -p images/{train,validation,test}
使用数据采集工具:
python src/download_data.py
关键词格式说明:
elon_musk # 人物类别
cute_cat # 动物类别
red_apple # 物品类别
sport_car # 交通工具
modern_building # 建筑类别
m*a_kh*lifa # 模糊匹配
mark_zuckerberg # 人物类别
示例操作:
请输入搜索关键词: porn_nude # 限制级内容
# 或
请输入搜索关键词: apple # 普通内容
是否为训练集?(y/n): y
需要下载多少张图片?(默认: 5): 10
注意:请确保在 images 目录下创建以下子目录:
完成数据采集后,可以直接运行模型训练:
python src/YingYanAI.py
训练过程输出示例:
[鹰眼 AI]: 2025-02-04 12:44:24,490 - **main** - INFO - TensorFlow 版本: 2.13.0
Found 15 images belonging to 3 classes.
Found 15 images belonging to 3 classes.
[鹰眼 AI]: 2025-02-04 12:44:26,852 - **main** - INFO - 开始训练模型...
Epoch 1/10
1/1 [==============================] - 6s 6s/step - loss: 1.2042 - accuracy: 0.4000 - val_loss: 1.2801 - val_accuracy: 0.4667
Epoch 2/10
1/1 [==============================] - 2s 2s/step - loss: 1.3403 - accuracy: 0.4000 - val_loss: 1.1074 - val_accuracy: 0.5333
Epoch 3/10
1/1 [==============================] - 1s 1s/step - loss: 1.6560 - accuracy: 0.2667 - val_loss: 0.9599 - val_accuracy: 0.5333
Epoch 4/10
1/1 [==============================] - 2s 2s/step - loss: 1.5020 - accuracy: 0.4667 - val_loss: 0.8382 - val_accuracy: 0.7333
Epoch 5/10
1/1 [==============================] - 1s 1s/step - loss: 1.0760 - accuracy: 0.4667 - val_loss: 0.7422 - val_accuracy: 0.7333
Epoch 6/10
1/1 [==============================] - 1s 1s/step - loss: 1.0561 - accuracy: 0.6000 - val_loss: 0.6698 - val_accuracy: 0.8667
Epoch 7/10
1/1 [==============================] - 1s 1s/step - loss: 1.0602 - accuracy: 0.3333 - val_loss: 0.6113 - val_accuracy: 0.8667
Epoch 8/10
1/1 [==============================] - 1s 1s/step - loss: 0.6969 - accuracy: 0.8000 - val_loss: 0.5660 - val_accuracy: 0.8667
Epoch 9/10
1/1 [==============================] - 1s 1s/step - loss: 0.8998 - accuracy: 0.6000 - val_loss: 0.5307 - val_accuracy: 0.8667
Epoch 10/10
1/1 [==============================] - 2s 2s/step - loss: 0.9569 - accuracy: 0.7333 - val_loss: 0.5009 - val_accuracy: 0.8667
[鹰眼 AI]: 2025-02-04 12:44:47,790 - **main** - INFO - 模型训练完成!
[鹰眼 AI]: 2025-02-04 12:44:48,118 - **main** - INFO - 模型已保存至: models/yingyan_model.h5
训练过程监控:
python run.py
控制台应用程序提供以下功能:
启动 API 服务
启动实时监控
训练模型
系统状态
╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ │
│ 鹰眼 AI 系统控制台 │
│ ================= │
│ │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭──────┬──────────────╮
│ 选项 │ 描述 │
├──────┼──────────────┤
│ 1 │ 启动 API 服务 │
│ 2 │ 启动实时监控 │
│ 3 │ 训练模型 │
│ 4 │ 系统状态 │
│ q │ 退出系统 │
╰──────┴──────────────╯
请选择操作 [1/2/3/4/q]:
cd src && uvicorn app:app --host 0.0.0.0 --port 8000 --reload
cd src && uvicorn src.app:app --host 0.0.0.0 --port 8000 --workers 4
服务将在 http://localhost:8000 启动,可通过 http://localhost:8000/docs 访问交互式 API 文档。
POST /predict
curl -X POST "http://localhost:8000/predict" \
-H "accept: application/json" \
-H "Content-Type: multipart/form-data" \
-F "file=@/path/to/your/image.jpg"
位于 tools/predict_test.py ,用于快速测试模型的预测功能。
使用方法:
确保 API 服务已启动
python tools/predict_test.py
输出示例:
[鹰眼 AI]: 2025-02-04 03:46:15,189 - **main** - INFO - 鹰眼 AI 图像预测测试工具启动
[鹰眼 AI]: 2025-02-04 03:46:15,189 - **main** - INFO - ==============================
[鹰眼 AI] 请拖拽图片到此处: '/path/to/images/train/porn_nude/000001.jpg'
[鹰眼 AI]: 2025-02-04 03:46:19,696 - **main** - INFO - 正在处理图片: 000001.jpg
[鹰眼 AI]: 2025-02-04 03:46:20,477 - **main** - INFO - 预测结果:
[鹰眼 AI]: 2025-02-04 03:46:20,477 - **main** - INFO - 类别: 1
[鹰眼 AI]: 2025-02-04 03:46:20,477 - **main** - INFO - 置信度: 98.90%
[鹰眼 AI]: 2025-02-04 03:46:20,477 - **main** - INFO - 是否包含限制级内容: 【是】
功能特点:
示例输出:
[鹰眼 AI] 2024-02-04 15:30:45 - INFO - 鹰眼 AI 图像预测测试工具启动
[鹰眼 AI] ==============================
[鹰眼 AI] 请拖拽图片到此处: /path/to/image.jpg
[鹰眼 AI] 正在处理图片: image.jpg
[鹰眼 AI] 预测结果:
[鹰眼 AI] 类别: 1
[鹰眼 AI] 置信度: 95.23%
响应格式:
{
"success": true,
"predicted_class": 0,
"confidence": 0.95
}
使用实时监控工具可以通过摄像头进行即时内容识别:
python tools/live.py
功能特点:
📹 自动录制视频 操作说明:
按 ‘s’ 键保存当前画面截图 显示信息:
识别置信度 存储位置:
images/train
目录下按类别分类images/validation
目录下log
目录下在 src/YingYanAI.py
中添加以下代码来评估模型性能:
from sklearn.metrics import classification_report
# 加载测试数据
test_generator = val_datagen.flow_from_directory(
"images/test",
target_size=img_size,
batch_size=batch_size,
class_mode="categorical",
shuffle=False
)
# 评估模型
predictions = yyi.model.predict(test_generator)
y_pred = tf.argmax(predictions, axis=1).numpy()
y_true = test_generator.classes
print(classification_report(y_true, y_pred))
使用保存的模型对新图像进行预测:
from tensorflow.keras.models import load_model
model = load_model("models/yingyan_model.h5")
image_path = "path_to_image.jpg"
img = tf.keras.preprocessing.image.load_img(image_path, target_size=(224, 224))
img_array = tf.keras.preprocessing.image.img_to_array(img)
img_array = tf.expand_dims(img_array, 0) # 添加批次维度
predictions = model.predict(img_array)
print(f"预测结果: {predictions}")
参数名 | 说明 | 默认值 |
---|---|---|
train_dir | 训练数据目录路径 | "images/train" |
img_size | 图像处理的目标尺寸 | (224, 224) |
batch_size | 批处理大小 | 32 |
epochs | 训练周期数 | 10 |
注:
- img_size 必须为 (224, 224),这是 MobileNetV2 的要求
- batch_size 可根据可用内存大小调整
- epochs 可根据训练效果调整
类别 | Precision | Recall | F1-Score | Support |
---|---|---|---|---|
0 | 0.95 | 0.94 | 0.95 | 34 |
1 | 0.96 | 0.97 | 0.96 | 36 |
准确率 | - | - | 0.95 | 70 |
宏平均 | 0.95 | 0.95 | 0.95 | 70 |
加权平均 | 0.95 | 0.95 | 0.95 | 70 |
注:
- Precision: 精确率
- Recall: 召回率
- F1-Score: F1 分数
- Support: 样本数量
本项目采用 木兰宽松许可证 (Mulan PSL) 进行许可。
有关详细信息,请参阅 LICENSE 文件。
感谢您使用本项目!您的支持是开源持续发展的核心动力。
每一份捐赠都将直接用于:
✅ 服务器与基础设施维护
✅ 新功能开发与版本迭代
✅ 文档优化与社区建设
点滴支持皆能汇聚成海,让我们共同打造更强大的开源工具!
![]() 🔵 支付宝 |
🟢 微信支付 |
🙌 感谢您成为开源社区的重要一员!
💬 捐赠后欢迎通过社交平台与我联系,您的名字将出现在项目致谢列表!