英文:
Pytorch is not working with trained model+pretrained model (Intel Open Vino)
问题
Here is the translated code segment:
def PeopleBox(PeopleNet, frame):
frameHeight = frame.shape[0]
frameWidth = frame.shape[1]
blob = cv2.dnn.blobFromImage(frame, 1.0, (672, 384), swapRB=False, crop=True)
PeopleNet.setInput(blob)
detection = PeopleNet.forward()
bboxs = []
for i in range(detection.shape[2]):
confidence = detection[0, 0, i, 2]
if confidence > 0.7:
x1 = int(detection[0, 0, i, 3] * frameWidth)
y1 = int(detection[0, 0, i, 4] * frameHeight)
x2 = int(detection[0, 0, i, 5] * frameWidth)
y2 = int(detection[0, 0, i, 6] * frameHeight)
bboxs.append([x1, y1, x2, y2])
cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 8)
return frame, bboxs
PeopleBin = (r"C:\Users\dc\T1\pedestrian-detection-adas-0002.bin")
PeopleXml = (r"C:\Users\dc\T1\pedestrian-detection-adas-0002.xml")
RifleBin = (r"C:\Users\dc\StructVGGV1_output\VGG16_V1_40epohc_LR0_00008_batch4_A96_V77.bin")
RifleXml = (r"C:\Users\dc\StructVGGV1_output\VGG16_V1_40epohc_LR0_00008_batch4_A96_V77.xml")
PeopleNet = cv2.dnn.readNet(PeopleXml, PeopleBin)
RifleNet = cv2.dnn.readNet(RifleXml, RifleBin)
List = ['NoPersonHoldingRifle', 'PersonHoldingRifle']
video = cv2.VideoCapture(0)
while True:
ret, frame = video.read()
framee, bboxs = PeopleBox(PeopleNet, frame)
for bbox in bboxs:
########check
blob = cv2.dnn.blobFromImage(framee, 1.0, (224, 224), swapRB=False, crop=True)
RifleNet.setInput(blob)
###########
RiflePred = RifleNet.forward()
Rifle = List[RiflePred[0].argmax()]
# label="{},{}".format(Rifle,RiflePred)
label = "{}".format(Rifle)
if label == "NoPersonHoldingRifle":
cv2.rectangle(framee, (bbox[0], bbox[1]), (bbox[2], bbox[3]), (255, 0, 255), 8)
if label == "PersonHoldingRifle":
cv2.rectangle(framee, (bbox[0], bbox[1]), (bbox[2], bbox[3]), (255, 255, 0), 8)
cv2.putText(framee, label, (bbox[0] - 70, bbox[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 255, 255), 2,
cv2.LINE_AA)
cv2.imshow("Rifle_Vs_NoRifle", framee)
cv2.imshow("Rifle_Vs_NoRifle", framee)
k = cv2.waitKey(1)
if k == ord('q'):
break
video.release()
cv2.destroyAllWindows()
Regarding your issue with the combined model not working correctly, it could be related to various factors, including the integration of the models, input preprocessing, or other aspects of the deployment process. You may need to thoroughly debug and investigate each component to identify the root cause of the problem. If your model's accuracy is high, the issue likely lies in the deployment or inference process rather than the model itself.
英文:
def PeopleBox(PeopleNet,frame):
frameHeight=frame.shape[0]
frameWidth=frame.shape[1]
blob=cv2.dnn.blobFromImage(frame, 1.0, (672,384), swapRB=False, crop=True)
PeopleNet.setInput(blob)
detection=PeopleNet.forward()
bboxs=[]
for i in range(detection.shape[2]):
confidence=detection[0,0,i,2]
if confidence>0.7:
x1=int(detection[0,0,i,3]*frameWidth)
y1=int(detection[0,0,i,4]*frameHeight)
x2=int(detection[0,0,i,5]*frameWidth)
y2=int(detection[0,0,i,6]*frameHeight)
bboxs.append([x1,y1,x2,y2])
cv2.rectangle(frame, (x1,y1),(x2,y2),(0,255,0), 8)
return frame, bboxs
PeopleBin = (r"C:\Users\dc\T1\pedestrian-detection-adas-0002.bin")
PeopleXml = (r"C:\Users\dc\T1\pedestrian-detection-adas-0002.xml")
RifleBin = (r"C:\Users\dc\StructVGGV1_output\VGG16_V1_40epohc_LR0_00008_batch4_A96_V77.bin")
RifleXml = (r"C:\Users\dc\StructVGGV1_output\VGG16_V1_40epohc_LR0_00008_batch4_A96_V77.xml")
PeopleNet=cv2.dnn.readNet(PeopleXml, PeopleBin)
RifleNet=cv2.dnn.readNet(RifleXml,RifleBin)
List = ['NoPersonHoldingRifle', 'PersonHoldingRifle']
video=cv2.VideoCapture(0)
while True:
ret,frame=video.read()
framee,bboxs=PeopleBox(PeopleNet,frame)
for bbox in bboxs:
########check
blob=cv2.dnn.blobFromImage(framee, 1.0, (224,224), swapRB=False, crop = True)
RifleNet.setInput(blob)
###########
RiflePred=RifleNet.forward()
Rifle=List[RiflePred[0].argmax()]
#label="{},{}".format(Rifle,RiflePred)
label="{}".format(Rifle)
if label=="NoPersonHoldingRifle":
cv2.rectangle(framee, (bbox[0], bbox[1]), (bbox[2],bbox[3]), (255,0,255), 8)
if label == "PersonHoldingRifle":
cv2.rectangle(framee, (bbox[0], bbox[1]), (bbox[2],bbox[3]), (255,255,0), 8)
cv2.putText(framee, label, (bbox[0]-70, bbox[1]-10), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255,255,255), 2,cv2.LINE_AA)
cv2.imshow("Rifle_Vs_NoRifle",framee)
cv2.imshow("Rifle_Vs_NoRifle",framee)
k=cv2.waitKey(1)
if k==ord('q'):
break
video.release()
cv2.destroyAllWindows()
I trained my model with Pytorch using google colab. After I trained my model, I converted my model into IR using Intel Open Vino (https://docs.openvino.ai/2022.3/openvino_docs_MO_DG_prepare_model_convert_model_Convert_Model_From_PyTorch.html)
After that, I combined pretrained pedestrian model (https://docs.openvino.ai/2021.4/omz_models_model_pedestrian_detection_adas_0002.html) and my model together (object detection + recognition like license plate recognition/detection).
However, the combined model is not working correctly... I checked my model's accuracy and it was near 96 percent. Therefore, I am not sure what is causing the issue. I have been hard stuck in this for so long time.
I uploaded my colab below I used to train my model
enter link description here
答案1
得分: 0
我测试并比较了您的模型与OpenVINO预训练模型pedestrian-detection-adas-0002,因为您提到这是您的DL模型开发的参考。
我使用Object Detection Python Demo(我从OMZ repo获取)对这两个模型进行了推理。
我的发现是,您的模型没有正确的包装器,与OV模型不同。pedestrian-detection-adas-0002使用基于SSD框架的网络,以MobileNet v1为特征提取器进行了调整。
也许这是您需要考虑的部分,以适应您的自定义模型。
英文:
I tested and compared your model with OpenVINO pretrained model pedestrian-detection-adas-0002 since you mentioned that this is the reference to your DL model development.
I inferred both model with Object Detection Python Demo ( I get this from OMZ repo)
My finding is that your model does not have the correct wrapper as the OV model.The pedestrian-detection-adas-0002 uses network based on SSD framework with tuned MobileNet v1 as a feature extractor.
Perhaps this is the part that you need to cater to your custom model.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论