深度学习实战:python动物识别分类检测系统 计算机视觉 Django框架 CNN算法 深度学习 卷积神经网络 TensorFlow 毕业设计(建议收藏)✅

博主介绍:✌全网粉丝50W+,前互联网大厂软件研发、集结硕博英豪成立软件开发工作室,专注于计算机相关专业项目实战6年之久,累计开发项目作品上万套。凭借丰富的经验与专业实力,已帮助成千上万的学生顺利毕业,选择我们,就是选择放心、选择安心毕业✌
> 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与我联系了。🍅

1、2026年计算机专业毕业设计选题大全(建议收藏)✅

2、大数据、计算机专业选题(Python/Java/大数据/深度学习/机器学习)(建议收藏)✅

1、项目介绍

技术栈:

python语言、django框架、TensorFlow、CNN卷积神经网络模型、Echarts可视化

深度学习实战:python动物识别分类检测系统 计算机视觉 Django框架 CNN算法 深度学习 卷积神经网络 TensorFlow 毕业设计(建议收藏)✅

2、项目界面

(1)首页

(2)上传图片检测识别

(3)识别结果

(4)词云图分析

(5)个人中心

(6)动物信息

(7)动物大全

(8)后台管理

(9)注册登录

3、项目说明

一、卷积神经网络模型

这段代码使用了 TensorFlow 和 Keras 库来构建和训练一个卷积神经网络(CNN)模型,用于图像分类任务。模型的流程如下:

  1. 设置 Django 环境:

    代码首先设置了 Django 项目的环境变量,以便在脚本中使用 Django 的设置。

  2. 数据路径和参数设置:

    定义了训练数据和测试数据的路径,以及批量大小(batch_size)和训练周期(epochs)。

  3. 数据预处理:

    使用 ImageDataGenerator 类来生成图像数据的增强版本,包括缩放、旋转、平移、剪切、缩放和水平翻转。

  4. 加载数据集:

    使用 flow_from_directory 方法从指定目录加载训练集和测试集,并将图像大小调整为 224x224 像素,模式设置为分类(categorical)。

  5. 获取批量图像和标签:

    从训练生成器和测试生成器中获取一批图像和对应的标签。

  6. 模型训练函数 train_model

    定义了一个函数 train_model,用于构建、编译、训练和保存模型。

  7. 构建模型:

    • 如果模型文件已经存在,则加载已存在的模型。
    • 如果模型文件不存在,则创建一个新的顺序模型(Sequential),并添加多个卷积层(Conv2D)和最大池化层(MaxPooling2D)。
    • 添加一个展平层(Flatten),将多维输入一维化。
    • 添加全连接层(Dense),其中包含一个 128 个单元的隐藏层和一个 10 个单元的输出层(因为类别数量为 10)。
  8. 编译模型:

    使用 Adam 优化器和分类交叉熵损失函数(categorical_crossentropy)来编译模型,并设置准确率(accuracy)作为性能指标。

  9. 训练模型:

    使用训练生成器的数据训练模型,指定周期数和批量大小。

  10. 模型预测和评估:

    • 使用训练好的模型对测试集进行预测。
    • 计算准确率和精确率(precision),精确率使用 precision_score 函数计算,这里使用了加权平均(weighted)。
    • 打印出准确率和精确率。
  11. 保存模型:

    将训练好的模型保存到指定的文件路径。

  12. 执行训练函数:

    如果这是主程序,则调用 train_model 函数开始训练模型。

总结来说,这段代码展示了使用 TensorFlow 和 Keras 构建和训练一个简单的 CNN 模型的完整流程,包括数据预处理、模型构建、编译、训练、评估和保存。

4、核心代码

python 复制代码
import os
import django
import numpy as np
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras import layers, models
from tensorflow.keras.models import Sequential
from sklearn.metrics import precision_score
from tensorflow.keras.models import load_model
from pathlib import Path

# 设置 Django 环境
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "animalProject.settings")
django.setup()

# 数据路径
data_path = '动物十大分类/train'
test_data_path = '动物十大分类/valid'

# 参数
batch_size = 16
epochs = 10

# 数据预处理
train_datagen = ImageDataGenerator(
    rescale=1. / 255,
    rotation_range=20,
    width_shift_range=0.2,
    height_shift_range=0.2,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True,
    fill_mode='nearest'
)

# 加载训练集和测试集
train_generator = train_datagen.flow_from_directory(
    data_path,
    target_size=(224, 224),
    batch_size=batch_size,
    class_mode='categorical',
    shuffle=True
)

test_generator = train_datagen.flow_from_directory(
    test_data_path,
    target_size=(224, 224),
    class_mode='categorical',
    shuffle=True
)

# 获取一个批量的图像和标签
images, labels = train_generator.next()
test_images, test_labels = test_generator.next()


# 模型训练
def train_model():
    # 获取当前工作目录
    current_dir = os.getcwd()

    # 定义模型文件的路径,保存在当前目录下
    model_path = Path(current_dir) / "imgPreAnim.h5"

    # 检查模型文件是否存在
    if model_path.exists():
        print("加载已存在的模型...")
        model = load_model(model_path)
    else:
        print("创建新的模型...")
        model = models.Sequential()
        model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 3)))
        model.add(layers.MaxPooling2D(pool_size=(2, 2)))
        model.add(layers.Conv2D(64, (3, 3), activation='relu'))
        model.add(layers.MaxPooling2D((2, 2)))
        # 增加其他层可以按照需求解注释
        # model.add(layers.Conv2D(128,(3,3),activation='relu'))
        # model.add(layers.MaxPooling2D((2,2)))
        # model.add(layers.Conv2D(256,(3,3),activation='relu'))
        # model.add(layers.MaxPooling2D((2,2)))
        # model.add(layers.Conv2D(512,(3,3),activation='relu'))
        # model.add(layers.MaxPooling2D((2,2)))

        model.add(layers.Flatten())

        # 增加更多层也可以解注释
        # model.add(layers.Dense(512,activation='relu'))
        # model.add(layers.Dense(256,activation='relu'))

        model.add(layers.Dense(128, activation='relu'))
        model.add(layers.Dense(10, activation='softmax'))  # 10是类别数量

    # 编译模型
    model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

    # 训练模型
    model.fit(train_generator, epochs=epochs, batch_size=batch_size)

    # 使用模型进行预测
    predictions = model.predict(test_images)
    correct_predictions = np.argmax(predictions, axis=1) == np.argmax(test_labels, axis=1)
    accuracy = np.mean(correct_predictions)
    print(f'准确率:{accuracy}')

    # 计算精确率
    prediction = precision_score(np.argmax(test_labels, axis=1), np.argmax(predictions, axis=1), average='weighted')
    print(f'精确率:{prediction}')

    # 保存模型
    model.save(model_path)


if __name__ == '__main__':
    train_model()

import os
from tensorflow.keras.preprocessing import image
from tensorflow import keras
import numpy as np

def predAni(img_path):
    labelNames = [
        '狗','羊','马','猴','牛','猪','兔','鸡','蛇','虎'
    ]

    # 获取当前脚本所在目录路径,并拼接模型文件路径
    model_path = os.path.join(os.path.dirname(__file__), 'imgPreAnim.h5')

    # 加载模型
    model = keras.models.load_model(model_path)

    # 处理图片
    img = image.load_img(img_path, target_size=(224, 224))
    img_array = image.img_to_array(img)
    img_array = np.expand_dims(img_array, axis=0)
    img_array = img_array / 255  # 归一化

    # 预测
    predictions = model.predict(img_array)
    predicted_class = np.argmax(predictions, axis=1)

    print('预测结果:')
    print(labelNames[predicted_class[0]])
    return labelNames[predicted_class[0]]

if __name__ == '__main__':
    predAni('./00000004.jpg')  # 确保这个路径是正确的

🍅✌**感兴趣的可以先收藏起来,点赞关注不迷路,想学习更多项目可以查看主页,大家在毕设选题,项目编程以及论文编写等相关问题都可以给我留言咨询,希望可以帮助同学们顺利毕业!**🍅✌

5、源码获取方式

🍅**由于篇幅限制,获取完整文章或源码、代做项目的,拉到文章底部即可看到个人联系方式。**🍅

点赞、收藏、关注,不迷路,下方查看 👇🏻获取联系方式👇🏻

相关推荐
稚辉君.MCA_P8_Java11 分钟前
Gemini永久会员 Java实现的暴力递归版本
java·数据结构·算法
冯诺依曼的锦鲤22 分钟前
算法练习:差分
c++·学习·算法
rgb2gray38 分钟前
增强城市数据分析:多密度区域的自适应分区框架
大数据·python·机器学习·语言模型·数据挖掘·数据分析·llm
有意义1 小时前
栈数据结构全解析:从实现原理到 LeetCode 实战
javascript·算法·编程语言
鹿鹿鹿鹿isNotDefined1 小时前
逐步手写,实现符合 Promise A+ 规范的 Promise
前端·javascript·算法
氵文大师1 小时前
A机通过 python -m http.server 下载B机的文件
linux·开发语言·python·http
程序员爱钓鱼1 小时前
用 Python 批量生成炫酷扫光 GIF 动效
后端·python·trae
封奚泽优1 小时前
下降算法(Python实现)
开发语言·python·算法
java1234_小锋1 小时前
基于Python深度学习的车辆车牌识别系统(PyTorch2卷积神经网络CNN+OpenCV4实现)视频教程 - 自定义字符图片数据集
python·深度学习·cnn·车牌识别
im_AMBER1 小时前
算法笔记 16 二分搜索算法
c++·笔记·学习·算法