钢筋是建筑业的重要材料,庞大的数量、工地现场环境复杂以及人工点验错漏等现实因素为钢筋点验工作制造了难度,那么如何才能快速且准确地完成对于整个建筑施工过程极为重要的钢筋点验工作环节呢? 今天就带大家了解一下“AI数钢筋”——通过人工智能技术实现钢筋数量统计。 1 问题背景 钢筋数量统计是钢材生产、销售过程及建筑施工过程中的重要环节。 目前,工地现场是采用人工计数的方式对进场的车辆装载的钢筋进行计数,验收人员需要对车上的钢筋进行现场人工点根,在对钢筋进行打捆后,通过不同颜色的标记来区分钢筋是否计数,在确认数量后钢筋车才能完成进场卸货, 所谓“AI数钢筋”就是,通过多目标检测机器视觉方法以实现钢筋数量智能统计,达到提高劳动效率和钢筋数量统计精确性的效果。 钢筋车辆进库时,使用手机拍摄成捆钢筋的截面(一般保证较小倾角,尽量垂直于钢筋截面拍摄)。数据会包含直径从12mm-32mm等不同规格的钢筋图片。
现代建筑中,钢筋的质量、规格和布局设计直接关系到工程的可靠性和使用寿命。1.传统钢筋点数方式传统钢筋点数方式是建筑施工中对钢筋数量进行核算和控制的一种方法,主要用于确保工程用钢量准确,避免浪费或短缺。 其核心思想是通过“点数”来统计钢筋数量,而不是直接按重量或长度计量。 具体做法通常是:首先对施工图纸中的钢筋进行分段标注,每一根钢筋或同规格、同长度的钢筋以“点”来表示;然后施工现场按照图纸进行点数核对,即每安装一根钢筋就在记录表上打一个点;最后根据点数统计总根数,再结合钢筋规格和理论单根重量计算总用量 2.本系统相对传统钢筋点数的优势基于PyQt5+YOLOv8+DeepSeek的钢筋点数系统相比传统人工点数方式具有显著优势。 2.预制构件生产线质量控制在工厂预制钢筋构件过程中,系统可对生产出的钢筋网片或构件进行自动点数和规格核查,确保每批产品符合设计要求。
基于YOLO的钢筋目标检测系统 | 钢筋计数识别与检测【完整源码+部署】源码包含:完整YOLOv8训练代码+数据集(带标注)+权重文件+直接可允许检测的yolo检测程序+直接部署教程/训练教程源码在文末哔哩哔哩视频简介处获取 项目摘要本项目基于 YOLOv8 深度学习模型,针对建筑工地常见的钢筋识别与计数任务进行优化,实现了高精度的目标检测系统。 前言在建筑工程中,钢筋的使用数量和位置至关重要。传统的人工统计方式存在效率低、误差高等问题。 为此,我们构建了一个基于YOLOv8模型的钢筋目标检测系统,具备如下优点: 检测速度快:可实时处理高清视频流 识别精度高:适应不同光照、遮挡条件下的钢筋目标 源码开放:完整训练+部署流程透明 界面交互友好 描述说明 图片检测 支持单张图片或批量文件夹检测 视频流检测 可直接加载本地视频文件进行检测摄像头检测 自动调用系统摄像头进行实时推理钢筋目标识别
赛题名称 https://www.datafountain.cn/competitions/332 智能盘点—钢筋数量AI识别 赛题背景 在工地现场,对于进场的钢筋车,验收人员需要对车上的钢筋进行现场人工点根 ,确认数量后钢筋车才能完成进场卸货。 目前现场采用人工计数的方式,如图1-1中所示: 上述过程繁琐、消耗人力且速度很慢(一般一车钢筋需要半小时,一次进场盘点需数个小时)。 针对上述问题,希望通过手机拍照->目标检测计数->人工修改少量误检的方式(如图1-2)智能、高效的完成此任务: 赛题任务 本赛题基于广联达公司提供的钢筋进场现场的图片和标注,希望参赛者综合运用计算机视觉和机器学习 /深度学习等技术,实现拍照即可完成钢筋点根任务,大幅度提升建筑行业关键物料的进场效率和盘点准确性,将建筑工人从这项极其枯燥繁重的工作中解脱出来。
这种材料上的不兼容性导致钢筋和混凝土间发生粘结破坏、钢筋滑移及局部变形等。 下图展示了几种重要的钢筋和混凝土相互作用的机理,分别为拔出效应、受拉刚化相应、销栓效应。 1.拔出效应 “拔出”通常发生在构件支座处,由于钢筋的锚固长度不足而导致粘结破坏,钢筋被拔出。可以用沿钢筋表面分布的一系列弹簧模拟钢筋和混凝土间的接触力,进而模拟拔出效应。 这种效应对于研究钢筋混凝土构件在混凝土开裂后的荷载-变形特性是重要的。 、钢筋布置及数量等因素,方法三相对简单易用。 受拉刚化效应的大小与配筋率、钢筋与混凝土间的粘结力的大小等因素有关。在重复和反复荷载作用下,钢筋和混凝土的粘结状况会逐渐退化,受拉刚化效应也会因此减弱。
所谓定点数和浮点数,是指在计算机中一个数的小数点的位置是固定的还是浮动的:如果一个数中小数点的位置是固定的,则为定点数;如果一个数中小数点的位置是浮动的,则为浮点数。 采用定点数表示法的计算机称为定点计算机,采用浮点数表示法的计算机称为浮点计算机。定点机在使用上不够方便,但其构造简单,造价低,一般微型机和单片机大多采用定点数的表示方法。 通常将定点数据表示成纯小数或纯整数。为了将数表示成纯小数,通常把小数点固定在数值部分的最高位之前;而为了把数表示成纯整数,则把小数点固定在数值部分的最后面,如图2-1所示。 假设用一个n位字来表示一个定点数x= x0 x1 x2 … xn-1,其中一位x0用来表示数的符号位,其余位数代表它的量值。 目前计算机中大多采用定点纯整数表示,因此将定点数表示的运算简称为整数运算。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。
在MySQL中float和double用来表示浮点数。 ? 定点数不同于浮点数,定点数实际上是以字符串形式存放,所以定点数可以更精确地保存数据。 在MySQL中,decimal(或numberic)用来表示定点数。 ? ---- 浮点数与定点数的区别,看一个例子 ? ? ? f列的值由1310.72.32变成了131.072.31,这里上面的数值在使用单精度浮点数表示时,产生了误差。这是浮点数特有的问题。 因此在精度要求比较高的应用中(比如货币)要使用定点数而不是浮点数来保存数据 在今后关于浮点数和定点数的应用中,需要考虑到以下几个原则 浮点数存在误差问题 对货币等,对精度敏感的数据,应该用定点数表示或存储 在编程中,如果用到浮点数,要特别注意误差问题,并尽量避免做浮点数比较 要注意浮点数中一些特殊值的处理
定点数与浮点数据表示 <1> 定点数据表示 可表示定点小数和整数 表现形式:X0.X1X2X3 ... :数据表示范围受限 <2> 浮点数据表示 把数的范围和精度分别表示的一种数据表示方法浮点数的使用场合 当数的表示范围超出了定点数能表示的范围时 1. ,便于浮点数的比较和排序 IEEE754 尾数形式为 1.XXXXXX, 其中M 部分保存的是XXXXXX(1被隐藏),从而可保留更多的有效位,提高数据表示的精确度 与上述IEEE754格式相对应的32 位浮点数的真值可表示为: N = (-1)s × 2E-127 × 1.M 随E和M的取值不同,IEEE754浮点数据表示具有不同的意义 - E = 0, M = 0 : 表示机器零 - E = 0,M $\not=$ 0 : 则N = (-1)s × 2-126 × 0.M, 非规格化的浮点数 - 1 $\
我们前面谁说过浮点数据存储时是指数和小数分开存储的。 tub << endl << "mint = " << mint << endl; //因为cout在这里输出的是六位 float可以保证六位浮<em>点数</em>的准确度
2、浮点数二进制表示 基数为2,只保留符号位(s)、尾数(m)、指数(e): ? 3、浮点数格式: 单精度、双精度和扩展精度。 双精度浮点数为64位: 对应于C语言中的double。 4、规格化 当指数位E表示的二进制序列不全0也不全1时,该浮点数为规格化形式。 对于规格化浮点数,IEEE—754标准规定尾数位小数点左侧的隐含位为1,此时m的计算公式为: m=| 1.M | M=“1001000….0”,1.M=1.1001000…0,带入上式得到: m=1+ )、尾数m的最小值为1,对应的M全为0,最大值为2-2^(-23) (3)、规格化浮点数能表示的数绝对值最大值为(2-2^(-23))x 2^(127)。 单精度规格化浮点数计算公式为: ? 6、非规格化 当E的二进制位全部为0时,该浮点数为非规格化形式。指数位e和m为: ?
阶码(exp):对浮点数加权,即 中的 。 浮点数数值分类 以单精度为例: image.png 2.1 规格化的值 阶码的位模式(二进制码)既不全为 0 也不全为 1 。 阶码的值 。 浮点数数值舍入 IEEE 浮点格式定义了四种不同格式的舍入方式,默认的方法是向偶数舍入。 3.1 向上舍入 。 3.2 向下舍入 。 24 位,双精度浮点数有效位数为 53 位(隐含尾数未显示的首位 1 )。 对于非规格化数:单精度浮点数有效位数为 23 位, 双精度浮点数有效位数为 52 位。
本文由量化、数据类型、上溢和下溢衍生,将浮点数看作是实数域的一种量化方式,分析浮点数,尤其是非规则浮点数和规则浮点数之间的差异。 0. 已有多位博主撰写过关于非规则浮点数(Denormalized Number)和规则浮点数之间的区别,这里首推卢钧轶的你应该知道的浮点数基础知识。 浮点数的大部分知识可以从维基百科获取,包括 Denormal number 非规则浮点数(不知道翻译是否合适) Floating point 浮点数相关内容 IEEE floating point 对应浮点数取值可表示为(十进制) ? 其中对于规则浮点数而言,指数项范围为01-FE(1到254)。大于0的浮点数依次为 ? ,然而大于1的浮点数依次为 ? ,即量化间隔是不同的。 非规则浮点数的问题 非规则浮点数的表示能力依旧是有限的,同时由于其与规则浮点数不相同的定义方式,会导致计算速率方面的问题,即 非规则浮点数的计算速度慢于规则浮点数(一般而言)
int本质是小数点位于末尾的32位定点数而已; 有了这个认识,后面的讨论就可以开始了。 2. 浮点数的表示法 浮点数以float为例讨论。 2.1 IEEE 754标准 规定浮点数格式为: ? 2.2 浮点数的“浮”字体现在哪里? 我们说浮点数的小数点不是固定的,是浮动的,那么如何理解?通过例子可直观体验。 这个浮点数表示十进制的1.125 ? 浮点数 & 定点数 4.1 为何要把浮点数转换为定点数呢? 这来源于项目中神经网络的需求,网络中大量的参数,如果全部用F32表示,一是占用空间大,二是读取效率不高。 那么读一个浮点数,可以同时读4个定点数,且计算效率可以提高。 4.2 如何将浮点数转换为定点数?
浮点数基础 浮点数,是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。 具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。 1 浮点数基础知识 ? s、m、e分别为符号数、尾数和指数,n为相应的浮点数值。 ? IEEE-754规定了三种浮点数:单精度(float)、双精度(double)和扩展精度。 M为0110表示:二进制.0110 E: 规格化(normalized) 非规格化(denormalized) 2 规格化浮点数 E表示的二进制不全为0也不全为1时该浮点数为规格化浮点数。 ? s=0 m = 1.5625 e =9 n =55.5112 单精度浮点数的公式可表示为: ? 3非规格化浮点数 E的二进制位全为0时该浮点数为非规格化浮点数。 bias=127 ?
1.概念 关于浮点数,很多人只是知道浮点数就是小数,简单来说,因为所有的小数都可以用科学计数法来表示,而小数点可能也会随之发生“浮动”,故称之为浮点数。 举个例子,有这样一个数字:1999.99,如果用科学计数法表示则为1.99999*10^3,在这个过程中我们很明显地看到了小数点发生了“浮动”,浮点数的名字也由此得来。 2.表示方式 在计算机中,数据都是通过二进制的方式存储的,浮点数也不例外,而任意一个二进制浮点数V可以表示为V=((-1)^S)*M*2^E,其中(-1)^S表示符号位,当S=0时,V为正数 ,我们先来看一张图: 在上图中,我们知道了float类型的浮点数就是32位浮点数,double类型的浮点数就是64位浮点数,其中float类型的最高的一位符号位S接着的8位是指数位E,剩下的 例如2^10,它的E是10,所以保存成32位浮点数时必须保存成10+127=137,即10001001。 指数E从内存取出也分三种情况 E不全为0或不全为12.
MySQL中的浮点数类型和定点数类型用于存储小数值。浮点数类型可以用于存储非常大或非常小的小数,而定点数类型可以用于存储较精确的小数。 FLOAT类型FLOAT类型用于存储单精度浮点数,即范围在-3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38之间的小数值 DOUBLE类型DOUBLE类型用于存储双精度浮点数,即范围在-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E DECIMAL类型DECIMAL类型用于存储定点数,即具有固定小数位数的小数。它可以用于存储较为精确的小数值,例如货币金额。DECIMAL类型的存储空间和精度由用户指定。
相信大家在平常的 JavaScript 开发中,都有遇到过浮点数运算精度误差的问题,比如 console.log(0.1+0.2===0.3)// false。 本文通过介绍 Number 的二进制存储标准来理解浮点数运算精度问题,和理解 Number 对象的 MAX_VALUE 等属性值是如何取值的,最后介绍了一些常用的浮点数精度运算解决方案。 Number.EPSILON : 表示 1 与 Number 可表示的大于 1 的最小的浮点数之间的差值。值为 ? 关于 js 浮点数运算精度丢失的问题,不同场景可以有不同的解决方案。 1、如果只是用来展示一个浮点数的结果,则可以借用 Number 对象的 toFixed 和 parseFloat 方法。下面代码片段中,fixed 参数表示要保留几位小数,可以根据实际场景调整精度。
6骰子之和的概率 小伙伴前阵子面试被问到一个问题: 同时掷出六个骰子,求可能出现的点数之和的概率。 思索 6个骰子,点数都是1~6,可能出现的点数和是6~36,那么各个点数和的概率呢? 从独立概率入手可能可以更好地解决问题,因为不需要单独考虑每个点数和的概率。 然后我们对这 6^6 种情况遍历,然后根据其点数之和丢进其点数和对应的桶里(需要6~36的31个桶)。最后,每个桶里的情况个数/6^6即其出现的概率。 这是一种不错的思路,如果从点数之和入手那很可能陷入很复杂的计算,因为点数6只有1种,点数7则可能有6种,点数8点数9呢?其复杂度会随着点数往中间挪而骤增。而且如果骰子不是6颗而是100颗呢?
浮点数表达 IEEE754标准是用于规范浮点数运算的IEEE标准,用于解决浮点数标准混乱的问题。其被认证后不久,几乎所有的处理器生产商都采用这一标准,极大的推动了软件的发展。 浮点数存储的格式如下: ? float.png 浮点数由符号位,指数位和尾数三个部分组成,表达公式如下式: ? 该标准内还定义了几个特殊值: 特殊值 说明 0 指数部分和尾数部分均为1 无穷大 指数部分为(指数最大值),尾数部分为0 NaN 指数部分为(指数最大值),尾数部分不为0 浮点数计算 浮点数乘法 浮点数的乘法分为以下几个步骤 浮点数加法 浮点数的加法分为以下几个步骤: 对阶:将指数较小的浮点数进行尾数向右移位,指数同步增大,直到两个操作数的指数等 求和:对尾数进行求和 规格化:对指数和尾数做规格化,并对尾数进行舍入 ? ,操作方式与乘法相同,即完成浮点数的加法。
一、引言 上期我们讲到数据的存储,那很多同学就对单精度浮点数与双精度浮点数有疑问了,正负号用最前头的二进制位充当符号位,那单精度浮点数和双精度浮点数又是哪一位二进制位充当充当小数点位又是如何通过二进制存储小数以及为什么单精度浮点数和双精度浮点数存储时内存数据会发生部分丢失 二、单精度浮点数与双进度浮点数在通过二进制表示 同学们可以自己结合自己编译器调试功能的内存来查看。同学们肯定都使用过科学计数法使数据的表达更加简洁明了。 单精度浮点数和双精度浮点数就是以科学计数法方式存储单精度浮点数和双精度浮点数。我们用科学计数法表示十进制数字时,表示形式为:a X 10^n(0<a<10)。 那我们推而广之,单精度浮点数和双精度浮点数的二进制表示形式为:a X 2^n (0<a<2)。 三、单精度浮点数与双精度浮点数在内存中的存储方式 单精度浮点数与双精度浮点数在内存中二进制中存储: 存储形式:V=(-1)^S X 2^E X M(为了方便大家看得懂所以John将2^E与M调换) 为了方便保存