基于tensorflow的ResNet50V2网络识别动物

开源的AI算法可以进行物体识别,动物识别 其中最常用的算法是深度学习中的卷积神经网络(Convolutional Neural Network,CNN),如Google开源的Inception和ResNet模型,以及Facebook开源的Detectron2框架等。可以通过学习相关的机器学习和深度学习课程,掌握这些算法的基本原理和实现方法,从而进行物体和动物识别等应用。需要注意的是,以上代码只是一个示例,实际使用时需要根据自己的数据集和任务进行调整和修改。需要注意的是,以上代码只是一个示例,实际使用时需要根据自己的数据集和任务进行调整和修改。 阅读详情

前言

之前很多人在,如何进行XXX的识别,对应的神经网络如何搭建。对应神经网络怎么搭建,我也是照本宣科,只能说看得懂而已,没有对这块进行深入的研究,但是现在tensorflow,paddle这些工具,都提供了非常成熟的神经网络进行直接使用。
本文对过往的一些文章进行改造,使用已经集成的神经网络,简单的实现多个种类的动物识别。

环境

tensorflow:2.9.1
keras:2.9.0
os:windows10
gpu:RTX3070
cuda:cuda_11.4.r11.4
如何安装tensorflow就不在做赘述,要重点说明 tensorflow与keras版本的不同会引起不同工具类的使用。

数据准备

链接: https://pan.baidu.com/s/1J7yRsTS2o0LcVkbKKJD-Bw 提取码: 6666
解压之后,结构如下
在这里插入图片描述

代码

一、模型训练代码(animalv2_model_train.py)

导入
import os

import plotly.express as px
import matplotlib.pyplot as plt
from IPython.display import clear_output as cls
import numpy as np
from glob import glob
import pandas as pd

# Model
import keras
from keras.models import Sequential, load_model
from keras.layers import GlobalAvgPool2D as GAP, Dense, Dropout
from keras.preprocessing.image import ImageDataGenerator

# Callbacks
from keras.callbacks import EarlyStopping, ModelCheckpoint

# 模型与处理工具
import tensorflow as tf
from tensorflow.keras.applications import ResNet50V2
from tensorflow.keras.utils import load_img, img_to_array
数据集合处理
root_path = './animal/Animals_Classification/Animal-Data-V2/Data-V2/Training Data/'
valid_path = './animal/Animals_Classification/Animal-Data-V2/Data-V2/Validation Data/'
test_path = './animal/Animals_Classification/Animal-Data-V2/Data-V2/Testing Data/'
# 动物种类
class_names = sorted(os.listdir(root_path))
n_classes = len(class_names)

print(f"Total Number of Classes : {n_classes} \nClass Names : {class_names}")


class_dis = [len(os.listdir(root_path+name)) for name in class_names]

fig = px.pie(names=class_names, values=class_dis, title="Training Class Distribution", hole=0.4)
fig.update_layout({'title':{'x':0.48}})
fig.show()

fig = px.bar(x=class_names, y=class_dis, title="Training Class Distribution", color=class_names)
fig.update_layout({'title':{'x':0.48}})
fig.show()

# 归一化
train_gen = ImageDataGenerator(rescale=1/255., rotation_range=10, horizontal_flip=True)
valid_gen = ImageDataGenerator(rescale=1/255.)
test_gen = ImageDataGenerator(rescale=1/255)

# Load Data
train_ds = train_gen.flow_from_directory(root_path, class_mode='binary', target_size=(256,256), shuffle=True, batch_size=32)
valid_ds = valid_gen.flow_from_directory(valid_path, class_mode='binary', target_size=(256,256), shuffle=True, batch_size=32)
test_ds = test_gen.flow_from_directory(test_path, class_mode='binary', target_size=(256,256), shuffle=True, batch_size=32)

结果如下:

Total Number of Classes : 10 
Class Names : ['Cat', 'Cow', 'Dog', 'Elephant', 'Gorilla', 'Hippo', 'Monkey', 'Panda', 'Tiger', 'Zebra']
Found 20000 images belonging to 10 classes.
Found 1000 images belonging to 10 classes.
Found 1907 images belonging to 10 classes.
图片展示
def show_images(GRID=[5, 5], model=None, size=(20, 20), data=train_ds):
    n_rows = GRID[0]
    n_cols = GRID[1]
    n_images = n_cols * n_rows

    i = 1
    plt.figure(figsize=size)
    for images, labels in data:
        id = np.random.randint(len(images))
        image, label = images[id], class_names[int(labels[id])]

        plt.subplot(n_rows, n_cols, i)
        plt.imshow(image)

        if model is None:
            title = f"Class : {label}"
        else:
            pred = class_names[int(np.argmax(model.predict(image[np.newaxis, ...])))]
            title = f"Org : {label}, Pred : {pred}"
            cls()

        plt.title(title)
        plt.axis('off')

        i += 1
        if i >= (n_images + 1):
            break

    plt.tight_layout()
    plt.show()

def load_image(path):
    image = tf.cast(tf.image.resize(img_to_array(load_img(path))/255., (256,256)), tf.float32)
    return image
def show_image(image, title=None):
    plt.imshow(image)
    plt.axis('off')
    plt.title(title)

show_images(data=train_ds)
show_images(data=valid_ds)
show_images(data=test_ds)

path = './animal/Animals_Classification/Animal-Data-V2/Data-V2/Interesting Data/'
interesting_images = [glob(path + name + "/*") for name in class_names]

# Interesting Cat Images
for name in class_names:
    plt.figure(figsize=(25, 8))
    cat_interesting = interesting_images[class_names.index(name)]
    for i, i_path in enumerate(cat_interesting):
        name = i_path.split("/")[-1].split(".")[0]
        image = load_image(i_path)
        plt.subplot(1,len(cat_interesting),i+1)
        show_image(image, title=name.title())
    plt.show()

在这里插入图片描述

模型训练
with tf.device("/GPU:0"):
    ## 定义网络
    base_model = ResNet50V2(input_shape=(256,256,3), include_top=False)
    base_model.trainable = False
    cls()

    # 设计参数
    name = "ResNet50V2"
    model = Sequential([
        base_model,
        GAP(),
        Dense(256, activation='relu', kernel_initializer='he_normal'),
        Dropout(0.2),
        Dense(n_classes, activation='softmax')
    ], name=name)

    # Callbacks
    # 容忍度为3,在容忍度之内就结束训练
    cbs = [EarlyStopping(patience=3, restore_best_weights=True), ModelCheckpoint(name + "_V2.h5", save_best_only=True)]

    # Model
    opt = tf.keras.optimizers.Adam(learning_rate=2e-3)
    model.compile(loss='sparse_categorical_crossentropy', optimizer=opt, metrics=['accuracy'])

    # Model Training
    history = model.fit(train_ds, validation_data=valid_ds, callbacks=cbs, epochs=50)

data = pd.DataFrame(history.history)
模型训练

运行上面代码,我电脑的配置差不多需要1700+s(PS:可以换一下内存大一些的显卡比如 RTX40XX )
执行结果为如下:

2022-11-29 17:43:01.082836: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX AVX2
To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.
2022-11-29 17:43:01.449655: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1532] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 5472 MB memory:  -> device: 0, name: NVIDIA GeForce RTX 3070, pci bus id: 0000:01:00.0, compute capability: 8.6
Epoch 1/50
2022-11-29 17:43:18.284528: I tensorflow/stream_executor/cuda/cuda_dnn.cc:384] Loaded cuDNN version 8204
2022-11-29 17:43:21.378441: I tensorflow/stream_executor/cuda/cuda_blas.cc:1786] TensorFloat-32 will be used for the matrix multiplication. This will only be logged once.
625/625 [==============================] - 292s 457ms/step - loss: 0.2227 - accuracy: 0.9361 - val_loss: 0.1201 - val_accuracy: 0.9630
Epoch 2/50
625/625 [==============================] - 217s 348ms/step - loss: 0.1348 - accuracy: 0.9596 - val_loss: 0.1394 - val_accuracy: 0.9610
Epoch 3/50
625/625 [==============================] - 218s 349ms/step - loss: 0.1193 - accuracy: 0.9641 - val_loss: 0.1452 - val_accuracy: 0.9620
Epoch 4/50
625/625 [==============================] - 219s 350ms/step - loss: 0.1035 - accuracy: 0.9690 - val_loss: 0.1147 - val_accuracy: 0.9690
Epoch 5/50
625/625 [==============================] - 221s 354ms/step - loss: 0.0897 - accuracy: 0.9736 - val_loss: 0.1117 - val_accuracy: 0.9730
Epoch 6/50
625/625 [==============================] - 219s 351ms/step - loss: 0.0817 - accuracy: 0.9747 - val_loss: 0.1347 - val_accuracy: 0.9640
Epoch 7/50
625/625 [==============================] - 219s 351ms/step - loss: 0.0818 - accuracy: 0.9740 - val_loss: 0.1126 - val_accuracy: 0.9700
Epoch 8/50
625/625 [==============================] - 219s 350ms/step - loss: 0.0731 - accuracy: 0.9785 - val_loss: 0.1366 - val_accuracy: 0.9680

验证模型

验证模型代码(animalv2_model_evaluate.py)
from keras.models import load_model
import tensorflow as tf
from tensorflow.keras.utils import load_img, img_to_array
import numpy as np
import os

import matplotlib.pyplot as plt

root_path = './animal/Animals_Classification/Animal-Data-V2/Data-V2/Training Data/'

class_names = sorted(os.listdir(root_path))

model = load_model('./ResNet50V2_V2.h5')
model.summary()

def load_image(path):
    image = tf.cast(tf.image.resize(img_to_array(load_img(path))/255., (256,256)), tf.float32)
    return image

i_path = './animal/Animals_Classification/Animal-Data-V2/Data-V2/Validation Data/Gorilla/Gorilla (3).jpeg'
image = load_image(i_path)

preds = model.predict(image[np.newaxis, ...])[0]

print(preds)

pred_class = class_names[np.argmax(preds)]

confidence_score = np.round(preds[np.argmax(preds)], 2)

# Configure Title
title = f"Pred : {pred_class}\nConfidence : {confidence_score:.2}"
print(title)

plt.figure(figsize=(25, 8))
plt.title(title)
plt.imshow(image)
plt.show()

while True:
    path =  input("input:")
    if (path == "q!"):
        exit()
    image = load_image(path)

    preds = model.predict(image[np.newaxis, ...])[0]
    print(preds)

    pred_class = class_names[np.argmax(preds)]

    confidence_score = np.round(preds[np.argmax(preds)], 2)

    # Configure Title
    title = f"Pred : {pred_class}\nConfidence : {confidence_score:.2}"
    print(title)

    plt.figure(figsize=(25, 8))
    plt.title(title)
    plt.imshow(image)
    plt.show()
验证结果
Model: "ResNet50V2"
_________________________________________________________________
 Layer (type)                Output Shape              Param #   
=================================================================
 resnet50v2 (Functional)     (None, 8, 8, 2048)        23564800  
                                                                 
 global_average_pooling2d (G  (None, 2048)             0         
 lobalAveragePooling2D)                                          
                                                                 
 dense (Dense)               (None, 256)               524544    
                                                                 
 dropout (Dropout)           (None, 256)               0         
                                                                 
 dense_1 (Dense)             (None, 10)                2570      
                                                                 
=================================================================
Total params: 24,091,914
Trainable params: 527,114
Non-trainable params: 23,564,800
_________________________________________________________________
2022-11-29 20:33:15.981925: I tensorflow/stream_executor/cuda/cuda_dnn.cc:384] Loaded cuDNN version 8204
2022-11-29 20:33:18.070138: I tensorflow/stream_executor/cuda/cuda_blas.cc:1786] TensorFloat-32 will be used for the matrix multiplication. This will only be logged once.
1/1 [==============================] - 3s 3s/step
[1.2199847e-09 1.0668253e-12 6.8980124e-13 1.0352933e-08 9.9999988e-01
 4.1255888e-09 7.1100374e-08 3.0439090e-10 3.1216061e-11 2.8051938e-12]
Pred : Gorilla
Confidence : 1.0

做了一个input的能力,可以通过本地的图片地址进行验证

在这里插入图片描述

input:./animal/Animals_Classification/Animal-Data-V2/Data-V2/Validation Data/Zebra/Zebra-Valid (276).jpeg
1/1 [==============================] - 0s 21ms/step
[1.5658158e-12 1.6018555e-10 9.6812911e-13 6.2212702e-10 5.4042397e-09
 5.8055113e-05 4.7865592e-12 3.4024495e-12 3.0037000e-08 9.9994195e-01]
Pred : Zebra
Confidence : 1.0
ResNet革命:如何通过残差连接解决深度神经网络训练难题 本文深入探讨了ResNet如何通过残差连接解决深度神经网络训练中的梯度消失与爆炸难题。从理论分析到TensorFlow实践,详细解析了残差块的工程实现及其在图像识别、语音识别等领域的泛化应用,并提供了实战中的调参技巧与常见陷阱。 阅读详情

相关推荐

TensorFlow 2.x目标检测实战:Monk Toolkit加速TFRecord生成与TensorRT INT8量化部署

目标检测是计算机视觉的核心任务之一,其工程落地常面临数据格式转换、模型配置复杂、推理性能瓶颈等共性挑战。TensorFlow 2.x Object Detection API虽提供标准化流程,但TFRecord构建易出错、pipeline.config强耦合、SavedModel到边缘设备部署链路断裂等问题显著抬高工程门槛。本文聚焦于实际项目中高频出现的VOC数据解析、SSD模型选型、INT8量化精度控制等关键技术环节,结合Monk AI Toolkit对TensorFlow生态的低代码封装能力,系统阐述如

anque1234的博客 347

经典CNN(二):ResNet50V2算法实战与解析

根据说明可知,右图的实线表示测试误差,对应右边y轴的Test Error,虚线表示训练损失,对应左边y轴的Train Loss,x轴表示迭代次数Iterations。+(Conv2D+BN+ReLU)+ZeroPad+(Conv2D+BN+ReLU)+Conv2D,右边分支有所差异,因此在编写代码的时候,可以共用一个函数,根据传入参数的不同而产生相应的Residual block。使用不同的激活函数进行尝试,由此可见,最好的结果是full pre-activation,其次是original。

ali1174的专栏 1720

TensorFlow 2.0实战DeepDream:从特征可视化到模型诊断

DeepDream是一种基于梯度上升的神经网络特征可视化技术,其核心原理是通过反向优化输入图像,最大化特定卷积层的激活响应,从而揭示模型内部的层级语义表征。该技术不仅具备直观的视觉解释能力,更在模型可解释性、偏差检测与工业级诊断中展现出独特价值——例如识别缺陷检测模型对阴影的过拟合,或发现医学影像模型中的年龄偏差。实现的关键在于精准匹配预训练模型(如VGG16)的预处理逻辑、动态图下的梯度追踪机制,以及多层协同损失设计。本文聚焦TensorFlow 2.0生态,系统解析DeepDream在Eager Exe

a5199519的博客 373

深度学习 Day22——J2ResNet50V2算法实战与解析

关键字:ResnetV2, pytorch实现Resnet50V2算法

LittleRuby的博客 1582

第44步 深度学习图像识别:ResNet50建模(Tensorflow)

第44步 深度学习图像识别:ResNet50建模(Tensorflow)

Jet4505的博客 9146

ResNetV2模型复现--CVPR2016

  图中的 Iterations 表示迭代次数;Test Error 表示测试集错误率。  (a)original 表示原始的 ResNet 的残差结构,(b)proposed 表示新的 ResNet 的残差结构。主要差别就是(a)结构先卷积后进行 BN 和激活函数计算,最后执行 addition 后再进行ReLU 计算; (b)结构先进行 BN 和激活函数计算后卷积,把 addition 后的 ReLU 计算放到了残差结构内部。  作者使用这两种不同的结构在 CIFAR-10 数据集上做测试,模型用的是

冲出仁川,走出马德里,故事还会再继续 975

365天深度学习训练营-第J2周:ResNet50V2算法实战与解析

要求:1.根据本文的Tensorflow代码,编写Pytorch代码2.了解ResnetV2和Resnet的区别3.改进地方可以迁移到哪里呢。

m0_58585940的博客 1849

深度学习100例 -卷积神经网络(ResNet-50)鸟类识别 | 第8天

一、前期工作 本文将采用ResNet-50实现鸟类图片的识别分类 我的环境: 语言环境:Python3.6.5 编译器:jupyter notebook 深度学习环境:TensorFlow2 往期精彩内容: 深度学习100例-卷积神经网络(CNN)实现mnist手写数字识别 | 第1天 深度学习100例-卷积神经网络(CNN)彩色图片分类 | 第2天 深度学习100例-卷积神经网络(CNN)服装图像分类 | 第3天 深度学习100例-卷积神经网络(CNN)花朵识别 | 第4天 深度学习100例-卷积神

“365天深度学习训练营”报名进行中~ 1万+

基于keras与tensorflow手工实现ResNet50网络

在文章 基于tensorflow的ResNet50V2网络识别动物,我们使用了keras已经提供的神经网络,完成了图像分类的。这个时候,小明同学就问了,那么我怎么自己去写一个神经网络来进行训练呢? 本文就基于tensorflow,自己定一个神经网络。 从结构上看,与我们之前的的区别在于,输入的格式变成(3,224,224) ResNet50有两个基本的块,分别名为Conv Block和Identity Block 模型训练(resnet50_model_train.py) 将 基于tensorflow的Re

2600

tensorflow学习之二 alexnet vgg resnet目标分类

1、引言 这节我们将介绍图像分类问题,任务是给定一个输入图片,将其指派到一个已知的混合类别中的某一个标签。图像分类是计算机视觉领域的核心问题之一,尽管它很(看上去)很简单,但是却有广泛的实践应用。而且,在之后的我将会使用tensorlfow 实现图像分割,许多其他的看上去不同的计算机视觉任务(例如物体识别,分割),都能够还原成图像分类。 例如,在下图中,一个图像分类模型将一个图片分配给四个类别(c...

xiao__run的博客 1727

从人脸识别到猪脸识别:基于深度学习的养殖个体精准管理实践

卷积神经网络(CNN)作为计算机视觉的核心技术,通过其分层特征提取能力,能够有效处理图像识别任务。其原理在于自动学习从边缘到复杂模式的层次化特征,这一特性使其在细粒度识别场景中具有重要技术价值。在工程实践中,结合数据增强、模型优化等技术,CNN被广泛应用于安防、金融、医疗等多个领域。随着AI技术向产业纵深发展,其应用场景正从通用领域向垂直行业拓展。本文聚焦于养殖业这一具体场景,探讨如何将成熟的深度学习框架迁移至猪脸识别,以解决传统物理标识方式存在的侵入性、易损及信息滞后等痛点,实现非接触式的个体身份绑定与行

weixin_29061465的博客 276

深度解析ResNet-50 v1.5架构:为什么它比原始版本更准确?

ResNet-50 v1.5是微软在HuggingFace平台上提供的深度学习模型,专门用于图像分类任务。这个改进版本的ResNet-50架构在ImageNet-1k数据集上进行了预训练,相比原始ResNet-50版本,它在准确率上有了显著提升,同时保持了高效的性能表现。作为计算机视觉领域的重要里程碑,ResNet-50 v1.5通过巧妙的架构调整实现了更好的特征提取能力,成为众多图像识别项目的首

gitblog_00301的博客 430

ResNet50迁移学习实战:华为垃圾数据集工业级分类系统

图像分类是计算机视觉的基础任务,其核心在于利用预训练模型(如ResNet50)通过迁移学习适配新领域。迁移学习的本质不是简单替换分类头,而是结合数据特性重构特征提取与判别逻辑,在类别不平衡、标注缺失、部署受限等现实约束下实现鲁棒泛化。ResNet50作为经典骨干网络,需针对工业场景调整冻结策略、增强方式与损失设计;而‘华为垃圾数据集’虽非标准基准,却真实反映边缘AI落地中的数据混乱、光照干扰与硬件适配挑战。本文聚焦从数据清洗、模型微调到昇腾芯片部署的全链路实践,覆盖ONNX导出、ATC转换、ACL推理等关键

weixin_33866037的博客 369

python使用卷积神经网络(CNN,VGGNET)识别猫狗

python使用卷积神经网络(CNN,VGGNET)识别猫狗 VGGNet是一个著名的卷积神经网络模型,是牛晶大学和Google公司研究人员共同研发

showswoller的博客 1933

利用Python实现FGO自动战斗脚本

Fate/Grand Order(非的肝不过欧的)作为索尼为了拯救自己不倒闭而开发的面向月厨的骗氪养成抽卡爆肝游戏,居然没有像隔壁《阴阳师》的自动战斗系统(看看别人现在都自带脚本了)。毕竟是懒得肝,就不妨写一个脚本来肝算了,省时省力。 开始 一个战斗脚本,其实可以算是AI的初步了。虽然只是暴力算出造成最大伤害的方案orz。 我们在这里不考虑释放 技能 、 宝具 和 暴击星 这三样非常重要的东西。...

web开发与Python 5485

双向全桥隔离DC-DC变换器(DAB)的调制优化与挑战解析

本文深入解析了双向全桥隔离DC-DC变换器(DAB)的核心调制技术及其面临的挑战。文章从基础的相移调制(SPS)入手,逐步探讨了扩展相移(EPS)、双重相移(DPS)等进阶策略,并重点分析了电流优化与零电压开通(ZVS)等硬核优化技巧。针对DAB在实际应用中存在的建模困难、多模块并联及数字实现等挑战,提供了实用的应对策略与设计思路,旨在帮助工程师在性能、复杂度与成本之间找到最佳平衡。

weixin_29271053的博客 570

深度解析:DeepLabCut动物姿态估计框架的技术架构与性能优化

DeepLabCut作为当前最先进的无标记动物姿态估计开源框架,在神经科学、生态学和行为研究领域展现出了革命性的技术突破。通过深度学习技术实现对用户自定义身体部位的精准跟踪,该框架不仅支持单动物分析,还能高效处理多动物复杂场景,为动物行为研究提供了前所未有的分析能力。本文将深入探讨DeepLabCut的技术架构、性能优化策略以及在实际科研应用中的最佳实践。 ## 技术架构演进:从TensorFl

gitblog_01144的博客 613

大模型和任务型对话系统如何结合

三种方法都是基于prompt1.prompt中定义大量可分类的domain标签,每种标签含有的样例。走对话系统nlu常规步骤,domain分类,意图分类,slot提取等。缺点:需要很复杂的prompt,写的未必完善。需要多次调用llm2.prompt中定义每种query下可以调用的functioncall。3.也是基于prompt,可以管理对话主题,实现更丰富的话题流转。面向某个具体领域,没有细分的domain类别。

qq_29837229的博客 2450

ResNet18性能对比:不同框架下的表现

本镜像基于 PyTorch 官方库构建,集成了经典的ResNet-18深度学习模型,专为通用图像分类任务设计。💡 核心亮点官方原生架构:直接调用 TorchVision 标准库,无“模型不存在/权限不足”等报错风险,极其抗造。精准场景理解:不仅能识别物体(如猫、狗),还能理解场景(如Alp/雪山Ski/滑雪场),游戏截图也能精准识别。极速 CPU 推理:ResNet-18 权重仅 40MB+,启动快,内存占用低,单次推理仅需毫秒级。可视化 WebUI。

weixin_29041443的博客 753

Vivado IP核:AXI Uartlite的使用经验分享

1. IP基本设置 在Vivado中,打开IP Catalog,搜索“uart”: 双击“AXI Uartlite”,进入IP配置界面: 这里可以配置IP的具体参数,设置时钟频率、波特率等,完成后,生成IP即可。 2. IP的时序特点 点击下面的链接可以下载该IP核的官方指导文档: https://china.xilinx.com/support/documentation/ip_docume...

weixin_43265132的博客 1万+

CCS导入工程报错?手把手教你安装C2000编译器(附最新下载链接)

本文详细解析CCS导入工程报错的常见原因,并提供三种安装C2000编译器的解决方案(TI官网离线安装、CCS内置更新和App Center渠道)。通过版本匹配技巧和路径配置要点,帮助开发者快速解决编译器缺失问题,确保项目顺利导入和编译。

weixin_30374009的博客 660

ResNet18性能对比:不同深度学习框架下的表现

通过对 ResNet-18 在精度与稳定性最佳是最接近原始设计的实现,适合科研与高可靠性要求场景。推理性能最优在 CPU 上展现出最低延迟和最小内存占用,是生产环境中首选方案。部署灵活性最高:ONNX 支持跨语言、跨平台运行,非常适合需要多端协同的系统架构。Web服务友好度:结合 Flask 等轻量框架,可快速构建可视化交互界面,提升产品可用性。对于类似“AI万物识别”这类强调稳定性、离线能力、快速响应的通用图像分类服务,推荐采用。

weixin_30476025的博客 852

Deeplabcut实战:从数据标注到行为分析的全流程解析

本文详细解析了Deeplabcut从数据标注到行为分析的全流程实战技巧,包括项目创建、配置文件定制、智能帧提取、高效标注方法、模型训练优化以及多视角融合等高级应用。通过具体案例和实用参数配置,帮助研究者快速掌握这一行为分析工具,提升实验效率和准确性。

weixin_29057163的博客 246

27个视觉模型的终极统一API:Lucid模型动物园完全指南 [特殊字符]

在神经网络可解释性研究中,Lucid模型动物园提供了27个预训练视觉模型的统一API接口,让研究人员能够快速访问和实验各种经典深度学习模型。无论是AlexNet、Inception系列,还是ResNet、MobileNet等现代架构,Lucid都为你准备好了标准化的调用方式。这个强大的工具集专为神经网络可视化、特征分析和模型解释研究而设计,大大简化了研究流程。 ## 📊 Lucid模型动物园的

gitblog_00294的博客 384

CESM笔记——CESM1.0-CESM1.2.2-CESM2.1.3三个版本模式工作流对比

最近测试了CESM1.0,CESM1.2.2和CESM2.1.3三个版本,不同版本在workflow上有一些区别,来做点笔记。 CESM1.0 测试compset:B_2000,F_2000 workflow: 1. create_newcase -case ~/CESM/cesm1_0/script/B_2000 -compset B_2000 -res f19_g16 -mach tianhe 2. cd B_2000 (optional) env_mach_pes.xml ##修改核数,

砍柴姑娘Jourosy的博客 4941

codex出现Reconnecting和stream disconnected before completion:stream closed before response.complete解决方案

本文主要介绍了在使用codex过程中出现Reconnecting和stream disconnected before completion: stream closed before response.completed的解决方案,希望能对使用codex的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 9万+
上一篇: java直接内存的读写操作
下一篇: 基于keras与tensorflow手工实现ResNet50网络
sinom21
博客等级 码龄19年 22粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sinom21

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值