深度学习实战: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、源码获取方式

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

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

相关推荐
程序猿小D4 小时前
【完整源码+数据集+部署教程】 【运输&加载码头】仓库新卸物料检测系统源码&数据集全套:改进yolo11-DRBNCSPELAN
python·yolo·计算机视觉·目标跟踪·数据集·yolo11·仓库新卸物料检测系统
And_Ii4 小时前
LeetCode 3350. 检测相邻递增子数组 II
数据结构·算法·leetcode
想唱rap4 小时前
C++ string类的使用
开发语言·c++·笔记·算法·新浪微博
JAVA学习通4 小时前
Replication(下):事务,一致性与共识
大数据·分布式·算法
胖咕噜的稞达鸭4 小时前
C++中的父继子承(2)多继承菱形继承问题,多继承指针偏移,继承组合分析+高质量习题扫尾继承多态
c语言·开发语言·数据结构·c++·算法·链表·c#
SiYuanFeng4 小时前
《Synthetic Visual Genome》论文数据集的预处理
python·场景图
MUTA️4 小时前
python中进程和线程
python
蓝色汪洋4 小时前
Completed String easy
算法
铭哥的编程日记4 小时前
贪心算法精选30道编程题 (附有图解和源码)
算法·贪心算法