在过去的几个月,我做了一些实践,通过整理、讨论和分析项目上的Defects情况,来探索质量管理中的待改进点。最终发现,Defects实际上给质量管理带来了很多的启示。 当然,要讨论Defects,首先要使团队对Defects有一致的理解。我查了很多资料,也没有找到对”Defects”一词的明确定义,大部分人将”Defects”等同于“Bug”。 分析迭代Defects情况,讨论改进措施 除了分析线上问题,我还对从2017年10月-2018年7月QA提交的Defects情况做了一个统计,观察每个月提交的Defects和修复的Defects情况。 从统计结果来看,2018年7月发现和修复的Defects数量均呈明显的上升趋势,达到历史最高点。因此,有必要对7月份的Defects情况做一个详细的分析,看看究竟是什么原因导致了这些Defects。 实际上,Defects还给了我们很多启示,比如,为什么项目老是加班?为什么有些模块的Defects数量比较多?如何根据团队成员花在Defects上的efforts,制定提升计划?
这些缺陷会影响到晶圆制作,继而影响到集成电路与元件制作的质量。晶体缺陷常遇到的有:
RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) cnt = contours[0] hull = cv2.convexHull(cnt,returnPoints = False) defects = cv2.convexityDefects(cnt,hull) for i in range(defects.shape[0]): s,e,f,d = defects[i,0] start RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) cnt = contours[0] hull = cv2.convexHull(cnt,returnPoints = False) defects = cv2.convexityDefects(cnt,hull) for i in range(defects.shape[0]): s,e,f,d = defects[i,0] start
本文链接:https://blog.csdn.net/lichengyu/article/details/38392473 一 概念: Convexity hull, Convexity defects 如上图所示,黑色的轮廓线为convexity hull, 而convexity hull与手掌之间的部分为convexity defects. vector<vector<Vec4i>> defects( contours.size() ); for( size_t i = 0; i < contours.size(); i++ ) Convexity defects图,蓝色点是convexity defects的起始点和结束点,红色点是最远点。(为什么有的起始点和结束点中间没有最远点呢? 因为只画出了depth范围在20到80之间的convexity defects的起始点、结束点和最远点) 五.参考 [1] Gary Bradski, Adrian Kaehler.
: self.stats["defects"] += 1 for d in defects: if d["type"] in self.stats ": 0} self.stats["daily"][today]["total"] += 1 if defects: self.stats["daily ": defects, "count": len(defects), "image_path": output_path } def ']}件不良率:{(daily['defects']/daily['total']*100):.2f}%缺陷类型分布:""" for defect_type, count ": 0}) if daily["total"] > 0: defect_rate = daily["defects"] / daily["total
'] = train['defects'].map({False: 0, True: 1}) sns.pairplot(data = pca_10, hue = 'defects', corner = 有些样本("defects = True")很难预测。 例如,如果我们仔细观察 PCA_1 和 PCA_2 图,在左下角,有一些蓝色样本("defects = True"),而该区域的大多数样本都是红色的("defects = False")。 接下来,我们探讨每个聚类中的 "defects" 比例。 群组 2 是 "defects" 数量最多的第二个群组。 群组 0 是 "defects" 数量最少的群组。 接下来,我们简要探讨几个二元关系,如下所示。
CHAIN_APPROX_NONE) for cnt in contours: hull = cv2.convexHull(cnt,returnPoints=False)#默认returnPoints=True defects = cv2.convexityDefects(cnt,hull) #print defects pt_list = [] if defects is not None: flag = False for i in range(0,defects.shape[0]): s,e,f,d = defects[i,0]
0]),tuple(hull[(i+1)%length][0]),(0,0,255),2)#绘制凸包 hull=cv2.convexHull(cnt,returnPoints=False)#计算凸包 defects =cv2.convexityDefects(cnt,hull)#计算凸缺陷 for j in range(defects.shape[0]):#构造凸缺陷 s,e,f,d=defects[j,0
函数调用如下 hull = cv2.convexHull(cnt,returnPoints = False) defects = cv2.convexityDefects(cnt,hull) 注意:如果要查找凸缺陷 hierarchy = cv2.findContours(thresh,2,1) cnt = contours[0] hull = cv2.convexHull(cnt,returnPoints = False) defects = cv2.convexityDefects(cnt,hull) for i in range(defects.shape[0]): s,e,f,d = defects[i,0]
//github.com/LeeWise9/Segmentation-Based-Surface-Defect-Detection https://github.com/CristinaMa0917/Defects_Detection_MaskRCNN /Johncheng1/Fabric-defect-detection https://github.com/luissen/SSDT-A-single-shot-detector-for-PCB--defects mynameiswangshiyi/AE-BP-fabric-defect-detection 6)水果和蔬菜缺陷检测 https://github.com/shyamsuresh14/Detection-of-defects-in-fruits-and-vegetables
图片数量(jpg文件个数):2186 标注数量(xml文件个数):2186 标注数量(txt文件个数):2186 标注类别数:4 标注类别名称:["bypassdiode","cellfault","defects ","hotspot"] 每个类别标注的框数: bypassdiode 框数 = 1472 cellfault 框数 = 3060 defects 框数 = 5 hotspot 框数 = 3207 总框数
缺陷(Defects)这指的是在一个操作中或在一件产品上的缺陷或差异的数量,其中可以发现不止一个缺陷(瑕疵)。例如,一辆汽车是一个过程中的一个成品单元。 所以,当你的产品质量特性是以测量缺陷(Defects)为主的,还是以测量不良(Defectives)为主的,就会影响你使用哪一个指标了,具体可以参照下图。 DPU(每单位缺陷) DPU(Defects Per Unit)是衡量每一个产品单位的平均缺陷数量。它是通过将发现的缺陷总数除以单位数而得出的。 这里的"D"指的是Defectives而不是指Defects,第一个"P"指的是Parts。这就是DPPM和DPMO的关键区别了!
0, (0, 0, 255), 2) # 计算凸包缺陷 hull = cv2.convexHull(cnt, returnPoints=False) defects = cv2.convexityDefects(cnt, hull) if defects is not None: count_defects = 0 for i in range(defects.shape[0]): s, e, f, d = defects[i, 0] start = 2 - a ** 2) / (2 * b * c)) * 180 / np.pi if angle <= 90: count_defects frame, "Closed Fist", (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) elif count_defects
一个基本的函数调用如下: hull = cv.convexHull(cnt,returnPoints = False) defects = cv.convexityDefects(cnt,hull) hierarchy = cv.findContours(thresh,2,1) cnt = contours[0] hull = cv.convexHull(cnt,returnPoints = False) defects = cv.convexityDefects(cnt,hull) for i in range(defects.shape[0]): s,e,f,d = defects[i,0] start
hull = cv.convexHull(contours, returnPoints=False) defects = cv.convexityDefects(contours, hull) ? if defects is not None: cnt = 0 for i in range(defects.shape[0]): # calculate the angle s, e, f, d = defects[i][0] start = tuple(contours[s][0]) end = tuple(contours[e][0]) far = tuple(contours[f][0]) a
hull = cv.convexHull(cnt,returnPoints = False) defects = cv.convexityDefects(cnt,hull) 注意:请记住,我们在寻找凸面体时必须传递 hierarchy = cv.findContours(thresh,2,1) cnt = contours[0] hull = cv.convexHull(cnt,returnPoints = False) defects = cv.convexityDefects(cnt,hull) for i in range(defects.shape[0]): s,e,f,d = defects[i,0] start
Categories 直译:分类 通俗理解:测试用例结果的分类 默认情况下,有两类缺陷: Product defects 产品缺陷(测试结果:failed) Test defects 测试缺陷(测试结果 *FileNotFoundException.*" }, { "name": "Product defects", "matchedStatuses": ["failed"] }, { "name": "Test defects", "matchedStatuses": ["broken"] } ] 讲下参数的含义 name:分类名称 matchedStatuses
The objective of this testing is to identify all possible issues or defects before releasing it into The objective of this testing is to find the defects and break the application by executing any flow Ad-hoc Testing is an informal way of finding defects and can be performed by anyone in the project. It is difficult to identify defects without a test case but sometimes it is possible that defects found Boundary Value Testing is performed for checking if defects exist at boundary values.
凸包缺陷 如图所示,黑色的轮廓线为convexity hull(凸包),而convexity hull(凸包)与手掌之间的部分为convexity defects(凸包缺陷). Imgproc.CHAIN_APPROX_SIMPLE ) for (contour in contours) { val hull = MatOfInt() val defects 0 ) } Imgproc.convexityDefects(contour, hull, defects ) val defectsList = defects.toList() for (i in 0 until defectsList.size step
【2】查找轮廓凸包缺陷,确定圆弧起点和终点坐标 hull = cv2.convexHull(contours[0],returnPoints=False)#默认returnPoints=True defects = cv2.convexityDefects(contours[0],hull) start = end = (0,0) for i in range(0,defects.shape[0]): s ,e,f,d = defects[i,0] start = tuple(contours[0][s][0]) end = tuple(contours[0][e][0]) far = tuple (img,end,5,[0,0,255],-1)#凸包缺陷点 cv2.circle(img,start,5,[0,0,255],-1)#凸包缺陷点 break cv2.imshow('defects