This commit is contained in:
we0091234
2023-02-28 17:04:35 +08:00
parent bf91e70107
commit a1fefac249
4 changed files with 17 additions and 5 deletions

2
.gitignore vendored
View File

@@ -16,6 +16,8 @@ wan/
label_imgs/
pretrained_model/
cfg1/
test_imgs/
weixian/
# 不忽略下面指定的文件类型
!*.cpp
!*.h

View File

@@ -133,7 +133,7 @@ def draw_result(orgimg,dict_list):
result = result['plate_no']
result_str+=result+" "
cv2.rectangle(orgimg,(rect_area[0],rect_area[1]),(rect_area[2],rect_area[3]),(0,0,255),2) #画框
if len(result)>6:
if len(result)>1:
for i in range(4): #关键点
cv2.circle(orgimg, (int(landmarks[i][0]), int(landmarks[i][1])), 5, clors[i], -1)
@@ -146,7 +146,7 @@ if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--detect_model', nargs='+', type=str, default='weights/yolov7-lite-s.pt', help='model.pt path(s)')
parser.add_argument('--rec_model', type=str, default='weights/plate_rec.pth', help='model.pt path(s)')
parser.add_argument('--source', type=str, default='wan', help='source') # file/folder, 0 for webcam
parser.add_argument('--source', type=str, default='imgs', help='source') # file/folder, 0 for webcam
# parser.add_argument('--img-size', nargs= '+', type=int, default=640, help='inference size (pixels)')
parser.add_argument('--img_size', type=int, default=640, help='inference size (pixels)')
parser.add_argument('--output', type=str, default='result', help='source')

View File

@@ -140,6 +140,14 @@ def restore_box(boxes,r,left,top): #返回原图上面的坐标
boxes[:,[1,3,6,8,10,12]]/=r
return boxes
def restore_box_2(boxes,r,left,top): #返回原图上面的坐标
boxes[:,[0,2,5,7]]-=left
boxes[:,[1,3,6,8]]-=top
boxes[:,[0,2,5,7]]/=r
boxes[:,[1,3,6,8]]/=r
return boxes
def detect_pre_precessing(img,img_size): #检测前处理
img,r,left,top=my_letter_box(img,img_size)
# cv2.imwrite("1.jpg",img)
@@ -159,10 +167,12 @@ def post_precessing(dets,r,left,top,conf_thresh=0.3,iou_thresh=0.45):#检测后
index = np.argmax(dets[:,5:5+num_cls],axis=-1).reshape(-1,1)
kpt_b=5+num_cls
landmarks=dets[:,[kpt_b,kpt_b+1,kpt_b+3,kpt_b+4,kpt_b+6,kpt_b+7,kpt_b+9,kpt_b+10]] #yolov7关键有三个数x,y,score这里我们只需要x,y
# landmarks=dets[:,[kpt_b,kpt_b+1,kpt_b+3,kpt_b+4]]
output = np.concatenate((boxes,score,landmarks,index),axis=1)
reserve_=my_nms(output,iou_thresh)
output=output[reserve_]
output = restore_box(output,r,left,top)
# output = restore_box_2(output,r,left,top)
return output
def rec_plate(outputs,img0,session_rec): #识别车牌
@@ -214,7 +224,7 @@ def draw_result(orgimg,dict_list):
for i in range(4): #关键点
cv2.circle(orgimg, (int(landmarks[i][0]), int(landmarks[i][1])), 5, clors[i], -1)
cv2.rectangle(orgimg,(rect_area[0],rect_area[1]),(rect_area[2],rect_area[3]),(0,0,255),2) #画框
if len(result)<0:
if len(result)>6:
orgimg=cv2ImgAddText(orgimg,result,rect_area[0]-height_area,rect_area[1]-height_area-10,(255,0,0),height_area)
print(result_str)
return orgimg

View File

@@ -213,9 +213,9 @@ class ComputeLoss:
na, nt = self.na, targets.shape[0] # number of anchors, targets
tcls, tbox, tkpt, indices, anch = [], [], [], [], []
if self.kpt_label:
gain = torch.ones(self.kpt_label*2+7, device=targets.device) # normalized to gridspace gain
gain = torch.ones(self.kpt_label*2+7, device=targets.device).long() # normalized to gridspace gain
else:
gain = torch.ones(7, device=targets.device) # normalized to gridspace gain
gain = torch.ones(7, device=targets.device).long() # normalized to gridspace gain
ai = torch.arange(na, device=targets.device).float().view(na, 1).repeat(1, nt) # same as .repeat_interleave(nt)
targets = torch.cat((targets.repeat(na, 1, 1), ai[:, :, None]), 2) # append anchor indices