当前位置: 首页 > news >正文

python基于轻量级卷积神经网络模型GhostNet开发构建养殖场景下生猪行为识别系统

养殖业的数字化和智能化是一个综合应用了互联网、物联网、人工智能、大数据、云计算、区块链等数字技术的过程,旨在提高养殖效率、提升产品质量以及促进产业升级。在这个过程中,养殖生猪的数字化智能化可以识别并管理猪的行为。通过数字化智能化系统,可以在猪的不同生长阶段,对其体重、饮食、运动量、繁殖能力、疾病状况等各项指标进行数据分析和监测,进而实现科学喂养和疾病预防。智能化养殖不仅提高了养殖效率,也有利于提高生猪的健康水平,对疾病的预防和治疗都有积极作用,最终能提升畜禽产品的品质和农户企业的实际收益。

国内很多厂商在养猪行业里其实很早就开始布局了,基于人工智能数字化技术手段来为传统养猪行业赋能,来提升养殖效率是比较有应用前景的赛道。本文的核心思想其实是借鉴了前面课堂行为识别模型的想法,想要基于生猪养殖数据来开发构建生猪行为识别模型,基于自动化的智能化的识别计算服务可以基于识别计算结果来做出响应,这些是可以考虑后期落地应用的点不是本文的内容。

首先来看下实例效果图:

接下来我们来看下具体的数据集:

共包含猪15种主要行为,以及其他类型的行为,共有16种行为类型。

简单看下实例数据:

【打架】

【睡觉】

【玩玩具】

【进食】

GhostNet主要从深度神经网络中特征图的冗余性角度出发,以低成本高效益的方式模拟传统卷积操作的效果。GhostNet模型中的Ghost模块是传统卷积层的一个替代方案。该模块通过使用少量的传统卷积来生成部分特征图,然后对这些特征图进行简单的线性变化(作者称这种操作为廉价的线性变换),从而得到所需数量的特征图。这种操作增加了特征图的冗余性,从而在保证对输入数据全面理解的同时降低了模型的计算成本。

优点:

效率高:通过使用少量的传统卷积操作以及廉价的线性变换操作,GhostNet在保证较高识别性能的同时降低了模型的计算成本,提高了模型的运行效率。
扩展性强:由于GhostNet模型中的Ghost模块可以灵活地调整生成特征图的数量,因此该模型可以方便地扩展到其他深度神经网络结构中,具有很强的适应性。
缺点:

理论基础尚不完备:虽然GhostNet模型在基准测试中表现出色,但其理论基础尚不完备,对于其有效性以及适用范围的深入研究仍有待进一步开展。
缺乏足够的可视化支持:对于模型内部的运行机制以及特征图的具体生成过程,目前还没有详细的可视化支持,这使得模型的理解仍有待进一步加深。

在前面很多项目开发中我们使用到的轻量级的CNN模型大都是MobileNet系列的,这里我们使用的是GhostNet模型,同样是一款性能出众的模型,核心实现如下所示:

class GhostNet(nn.Module):def __init__(self, cfgs, num_classes=1000, width_mult=1.0):super(GhostNet, self).__init__()self.cfgs = cfgsoutput_channel = _make_divisible(16 * width_mult, 4)layers = [nn.Sequential(nn.Conv2d(3, output_channel, 3, 2, 1, bias=False),nn.BatchNorm2d(output_channel),nn.ReLU(inplace=True),)]input_channel = output_channelblock = GhostBottleneckfor k, exp_size, c, use_se, s in self.cfgs:output_channel = _make_divisible(c * width_mult, 4)hidden_channel = _make_divisible(exp_size * width_mult, 4)layers.append(block(input_channel, hidden_channel, output_channel, k, s, use_se))input_channel = output_channelself.features = nn.Sequential(*layers)output_channel = _make_divisible(exp_size * width_mult, 4)self.squeeze = nn.Sequential(nn.Conv2d(input_channel, output_channel, 1, 1, 0, bias=False),nn.BatchNorm2d(output_channel),nn.ReLU(inplace=True),nn.AdaptiveAvgPool2d((1, 1)),)input_channel = output_channeloutput_channel = 1280self.classifier = nn.Sequential(nn.Linear(input_channel, output_channel, bias=False),nn.BatchNorm1d(output_channel),nn.ReLU(inplace=True),nn.Dropout(0.2),nn.Linear(output_channel, num_classes),)self._initialize_weights()def forward(self, x, need_fea=False):if need_fea:features, features_fc = self.forward_features(x, need_fea)x = self.classifier(features_fc)return features, features_fc, xelse:x = self.forward_features(x)x = self.classifier(x)return xdef forward_features(self, x, need_fea=False):if need_fea:input_size = x.size(2)scale = [4, 8, 16, 32]features = [None, None, None, None]for idx, layer in enumerate(self.features):x = layer(x)if input_size // x.size(2) in scale:features[scale.index(input_size // x.size(2))] = xx = self.squeeze(x)return features, x.view(x.size(0), -1)else:x = self.features(x)x = self.squeeze(x)return x.view(x.size(0), -1)def _initialize_weights(self):for m in self.modules():if isinstance(m, nn.Conv2d):nn.init.kaiming_normal_(m.weight, mode="fan_out", nonlinearity="relu")elif isinstance(m, nn.BatchNorm2d):m.weight.data.fill_(1)m.bias.data.zero_()def cam_layer(self):return self.features[-1]

这是华为研究员提出来的非常能打的模型 ,感兴趣的话可以自行去了解官方的研究工作,地址在这里。如下所示:

当然了开源社区里面也有很多对应的项目,可以选择适合自己的就行了。

默认8:2的数据划分比例设置,默认200次epoch的迭代计算,结果详情如下所示:

【准确率曲线】
 

【loss曲线】 

【混淆矩阵】

当然了整体项目的开发也可以直接使用或者参考前文《眼疾识别》的方式。

相关文章:

python基于轻量级卷积神经网络模型GhostNet开发构建养殖场景下生猪行为识别系统

养殖业的数字化和智能化是一个综合应用了互联网、物联网、人工智能、大数据、云计算、区块链等数字技术的过程,旨在提高养殖效率、提升产品质量以及促进产业升级。在这个过程中,养殖生猪的数字化智能化可以识别并管理猪的行为。通过数字化智能化系统&…...

Selenium自动化测试 —— 通过cookie绕过验证码的操作!

验证码的处理 对于web应用,很多地方比如登录、发帖都需要输入验证码,类型也多种多样;登录/核心操作过程中,系统会产生随机的验证码图片,进行验证才能进行后续操作 解决验证码的方法如下: 1、开发做个万能…...

链表(单链表、双链表)

前言:链表是算法中比较难理解的部分,本博客记录单链表、双链表学习,理解节点和指针的使用,主要内容包括:使用python创建链表、实现链表常见的操作。 目录 单链表 双链表 单链表 引入链表的背景: 先来看…...

面试题08.05.递归算法

递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。 示例1: 输入:A 1, B 10输出:10示例2: 输入:A 3, B 4输出:12提示: 保证乘法…...

分布式IT监控系统

公司的IT系统越来越复杂,对运维和维护服务的需求也越来越高。在这种环境下,分布式IT监控系统应运而生。它逐渐成为公司提高运营效率、保证业务高效运营的关键工具,功能强大,性能优良。 分布式IT监控系统是什么? 分布…...

Redis 是什么?

Redis是一种基于内存的数据库,数据的读写都是在内存中完成的,因此读写速度非常的快,常用于缓存,消息队列,分布式锁等场景。 Redis 在高并发项目中,担任着非常重要的作用,扛高并发的,…...

本地源制作

title: 本地源制作 createTime: 2020-10-29 18:05:52 updateTime: 2020-10-29 18:05:52 categories: linuxyum tags: 制作本地源 通过 createrepo 制作本地源 前提 : 前提制作本地源的机器可以安装 这个软件例如 下载nginx的时候 自己加上 nginx的yum的数据源 (rp…...

树莓派(Linux系统通用)交叉编译(环境搭建、简单使用)

概念 交叉编译是指在一台计算机上编译运行在另一台计算机上的程序。(编译是指,在一个平台上生成在该平台上的可执行程序)通常情况下,编译器和目标平台的架构是不同的,例如,在一台x86平台上编译运行在ARM平…...

uniapp - 微信小程序实现腾讯地图位置标点展示,将指定地点进行标记选点并以一个图片图标展示出来(详细示例源码,一键复制开箱即用)

效果图 在uniapp微信小程序平台端开发,简单快速的实现在地图上进行位置标点功能,使用腾讯地图并进行标点创建和设置(可以自定义标记点的图片)。 你只需要复制代码,改个标记图标和位置即可。...

网络安全--IDS--入侵检测

1. 什么是IDS? IDS---入侵检测是防火墙的一个有力补充,形成防御闭环,可以及时、准确、全面的发现入侵弥补防火墙对应用层检查的缺失。对系统的运行状态进行监视,发现各种攻击企图、过程、结果,来保证系统资源的安全&a…...

js实现数组去重方式(12种方法)

目录 1、filter indexOf2、for object3、for includes4、for splice5、filter indexOf6、Map7、Set8、set Array.from9、sort 排序10、for findIndex11、双重for循环12、reduce 1、filter indexOf 数组去重:利用 filter 过滤 配合 indexOf 查找元素 var a…...

AI智能语音机器人的优势

1.高效自动拨号功能。 导入客户数据,外呼机器人自动拨号,无需看守,真人录音话术,定制场景问答和1秒内的问答响应,为客户带来真实准确的咨询体验。同时,每次通话结束后,外呼系统根据通话时间和关…...

BERT: 面向语言理解的深度双向Transformer预训练

参考视频: BERT 论文逐段精读【论文精读】_哔哩哔哩_bilibili 背景 BERT算是NLP里程碑式工作!让语言模型预训练出圈! 使用预训练模型做特征表示的时候一般有两类策略: 1. 基于特征 feature based (Elmo)…...

5-1.(OOP)初步分析MCV架构模式

组成:模型(model)、视图(view)、控制器(controller) view:界面、显示数据 model:数据管理、负责在数据库中存取数据以及数据合法性验证 controller:负责转…...

如何利用React和Flutter构建跨平台移动应用

如何利用React和Flutter构建跨平台移动应用 移动应用已经成为现代生活的一部分,每天都有大量的手机用户在使用各种各样的应用程序。对于开发者来说,构建一个适用于多个平台的移动应用是一个挑战。幸运的是,有一些工具可以帮助我们轻松地实现…...

npm install / webdriver-manager update报错 unable to get local issuer certificate

我这边遇到的问题,用的是angular,跑npm install的时候报错,一开始在.npmrc添加strict-sslfalse但是还是报错,搜索下记录。 参考解决: selenium - webdriver-manager update, Error: unable to get local issuer certi…...

电商项目高级篇-02 elasticsearch-下

电商项目高级篇-02 elasticsearch-下 4.2、QueryDSL返回指定字段 4.2、QueryDSL 返回指定字段 返回单个字段 GET bank/_search {"query": {"match_all": {}}, "sort": [{"balance": {"order": "desc"}}], &quo…...

计算机竞赛 深度学习人体跌倒检测 -yolo 机器视觉 opencv python

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习的人体跌倒检测算法研究与实现 ** 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满…...

CloseableHttpClient详解

实现项目中的HttpUtil用到CloseableHttpClient,httpUtil源码:https://download.csdn.net/download/imwucx/88378340 于是学习CloseableHttpClient并记录一下。 一、CloseableHttpClient是什么? CloseableHttpClient实现了AutoCloseable接口和…...

从mysql 5.7 升级到 8.0 的一些注意事项

最近 mysql 5.7 版本将会终止安全更新,越来越多的朋友考虑升级 mysql 8.0,以下是一些刚开始使用时可能存在差异问题的地方,有一些其实在 mysql 5.7 版本里已经开始使用,这里整理一下方便查阅。 1、关于端口,该版本 My…...

2026年主流抓娃娃App大对比,哪个才是你的“抓宝神器”?

在当今快节奏的生活中,年轻人面临着来自学业、工作、社交等多方面的压力。为了缓解这些压力,寻找适合的解压方式成为了大家的共同需求。抓娃娃App作为一种新兴的娱乐方式,正逐渐受到年轻人的喜爱。下面我们就从潮流趋势、科技前沿、行业洞察等…...

LangGraph 并发执行不是开 Goroutine 那么简单:状态竞争与事务处理

LangGraph 并发执行不是开 Goroutine 那么简单:状态竞争与事务处理深度解析 元数据 关键词:LangGraph, 大语言模型工作流, 有状态并发, 状态一致性, 事务处理, 多Agent系统, 分布式状态管理 摘要:很多开发者初次接触LangGraph的并发特性时,会下意识将其等同于传统协程/线程…...

别再点‘忽略’了!开机弹出Visual C++ Runtime Library错误的终极排查指南(附Adobe软件关联排查)

Visual C Runtime Library错误:从崩溃到根治的全链路解决方案 每次开机时那个刺眼的Visual C Runtime Library错误弹窗,就像一位不请自来的访客,固执地打断你的工作节奏。对于依赖Adobe Creative Cloud或达芬奇等创意工具的专业人士来说&…...

解密VideoDownloadHelper:开源浏览器插件的智能视频提取技术

解密VideoDownloadHelper:开源浏览器插件的智能视频提取技术 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 当你在浏览微博、秒拍…...

PCL2启动器离线登录按钮消失?5分钟快速修复指南

PCL2启动器离线登录按钮消失?5分钟快速修复指南 【免费下载链接】PCL Minecraft 启动器 Plain Craft Launcher(PCL)。 项目地址: https://gitcode.com/gh_mirrors/pc/PCL 你是否遇到过PCL2启动器离线登录按钮突然消失的困扰&#xff1…...

基于Rust与Candle的AI推理引擎cria:简化大模型本地部署与优化

1. 项目概述:从“左移”到“创造”的AI推理引擎 最近在折腾AI模型本地部署和推理优化的朋友,可能都绕不开一个名字: cria 。这个由 leftmove 开源的项目,全称是“Cria: The AI Inference Engine”,直译过来就是“创…...

NeoPixel光剑制作全攻略:从WS2812B原理到实战装配

1. 项目概述:从零件到光剑的旅程如果你和我一样,是个对《星球大战》里的光剑毫无抵抗力,同时又喜欢动手折腾电子玩意儿的人,那么用NeoPixel灯带自制一把会发光、能变色的光剑,绝对是件充满成就感的事。这不仅仅是把灯塞…...

告别命令行恐惧:用Docker Compose一键部署EMQX集群(附Web控制台和端口映射配置)

告别命令行恐惧:用Docker Compose一键部署EMQX集群(附Web控制台和端口映射配置) 在物联网和分布式系统开发中,EMQX作为高性能的MQTT消息服务器,已经成为连接海量设备与后端服务的核心枢纽。然而,传统安装方…...

移动端Shell集成AI助手:ShellGPTMobile部署与实战指南

1. 项目概述:当ShellGPT遇见移动端如果你是一个重度命令行用户,同时又对AI助手(比如ChatGPT)的便利性爱不释手,那么你很可能面临一个尴尬的境地:在终端里敲命令时,突然需要AI帮忙解释一段日志、…...

MIMO-OFDM在ISAC系统中的同步技术与性能优化

1. MIMO-OFDM技术在ISAC系统中的核心价值 毫米波频段下的集成感知与通信(ISAC)系统正成为6G网络的关键使能技术。作为其物理层核心,MIMO-OFDM架构通过正交子载波和空间复用技术,同时实现了高速数据传输与高精度环境感知。这种双功能集成并非简单叠加&…...