我正在使用YOLO进行模型训练。我想裁剪检测到的对象。对于Darknet存储库,我使用的是:https://github.com/AlexeyAB/darknet/
为了检测并将输出坐标存储在文本文件中,请使用以下方法:/暗网探测器测试数据_for_colab/obj.data数据_for_collab/yolov3-tiny-obj.cfg yolov3-tiny-obj_10000.weights-dont_show-ext_output<TEST.txt>结果.txt结果.jpg
考虑到TEST.txt文件中有作为示例图像的详细信息。您可以使用python的re模块进行文本模式检测,即您的"class_name"。
正在分析.txt文件
import re
path='/content/darknet/result.txt'
myfile=open(path,'r')
lines=myfile.readlines()
pattern= "class_name"
for line in lines:
if re.search(pattern,line):
Cord_Raw=line
Cord=Cord_Raw.split("(")[1].split(")")[0].split(" ")
现在我们将获得列表中的坐标。
坐标计算
x_min=int(Cord[1])
x_max=x_min + int(Cord[5])
y_min=int(Cord[3])
y_max=y_min+ int(Cord[7])
从实际图像裁剪
import cv2
img = cv2.imread("Image.jpg")
crop_img = img[y_min:y_max, x_min:x_max]
cv2.imwrite("Object.jpg",crop_img)
在Yolov5中,您可以轻松裁剪检测到的对象:
python detect.py --save-crop --source folderpath --weight yolov5s.pt
要裁剪特定的类,请添加--classes x(x是类索引号(
python detect.py --save-crop --classes 0 --source folderpath --weight yolov5s.pt
它只裁剪检测到图像的人(这个人在椰子数据集中的类索引为0(