鱼C论坛

 找回密码
 立即注册
查看: 922|回复: 2

[已解决]YOLOV1 from scratch using Keras Tensorflow 2.0

[复制链接]
匿名鱼油
匿名鱼油  发表于 2023-8-28 20:29:09 |阅读模式
60鱼币
这个网址的训练程序我都明白了,有没有大佬写一个test(predict)程序,达到可视化检测的效果呢,救救孩子吧开学作业交不上了
https://www.maskaravivek.com/post/yolov1/
就是输入dog.jpg 显示下面图像的程序,用的上面网页训练函数的权重
最佳答案
2023-8-28 20:29:10
YOLOv1的目标检测可视化程序

以下是一个使用预训练权重进行目标检测并可视化结果的示例程序。请确保已经安装了必要的依赖项,例如Keras和OpenCV。
import numpy as npimport cv2from keras.models import Modelfrom keras.layers import Inputfrom yolo_v1 import YOLO# 定义类别标签classes = ['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow',           'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor']def load_image(image_path):    # 加载图像并进行预处理(根据训练时的预处理方式进行)    image = cv2.imread(image_path)    image = cv2.resize(image, (448, 448))    image = image / 255.0    image = np.expand_dims(image, axis=0)    return imagedef draw_boxes(image, boxes, scores):    # 在图像上绘制检测框和类别名称    for box, score in zip(boxes, scores):        x, y, w, h = box        class_index = np.argmax(score)        class_name = classes[class_index]        confidence = score[class_index]        label = f"{class_name}: {confidence:.2f}"        cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)        cv2.putText(image, label, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1)    return image# 构建模型input_image = Input(shape=(448, 448, 3))yolo_model = YOLO(input_image, training=False)model = Model(inputs=input_image, outputs=yolo_model.output)# 加载预训练权重model.load_weights('path_to_pretrained_weights')# 进行目标检测和可视化image_path = 'dog.jpg'image = load_image(image_path)output = model.predict(image)# 解析输出boxes = output[..., :4]scores = output[..., 4:]# 设置置信度阈值,过滤掉置信度较低的检测结果confidence_threshold = 0.5filtered_boxes = []filtered_scores = []for box, score in zip(boxes[0], scores[0]):    max_score = np.max(score)    if max_score > confidence_threshold:        filtered_boxes.append(box)        filtered_scores.append(score)# 绘制检测结果并显示图像result_image = draw_boxes(cv2.imread(image_path), filtered_boxes, filtered_scores)cv2.imshow("Detection Result", result_image)cv2.waitKey(0)cv2.destroyAllWindows()
请将代码中的以下部分进行相应的修改:

- 将 path_to_pretrained_weights 替换为预训练权重文件的路径。
- 将 dog.jpg 替换为你要测试的图像文件的路径。

运行程序后,应该会显示含有检测框和类别的图像窗口。

希望这能帮到你!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
图片1.png

最佳答案

查看完整内容

YOLOv1的目标检测可视化程序 以下是一个使用预训练权重进行目标检测并可视化结果的示例程序。请确保已经安装了必要的依赖项,例如Keras和OpenCV。 请将代码中的以下部分进行相应的修改: - 将 path_to_pretrained_weights 替换为预训练权重文件的路径。 - 将 dog.jpg 替换为你要测试的图像文件的路径。 运行程序后,应该会显示含有检测框和类别的图像窗口。 希望这能帮到你!如果还有其他问题,请随时提问。 球一个最佳答 ...
回复

使用道具 举报

发表于 2023-8-28 20:29:10 | 显示全部楼层    本楼为最佳答案   
YOLOv1的目标检测可视化程序

以下是一个使用预训练权重进行目标检测并可视化结果的示例程序。请确保已经安装了必要的依赖项,例如Keras和OpenCV。
import numpy as npimport cv2from keras.models import Modelfrom keras.layers import Inputfrom yolo_v1 import YOLO# 定义类别标签classes = ['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow',           'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor']def load_image(image_path):    # 加载图像并进行预处理(根据训练时的预处理方式进行)    image = cv2.imread(image_path)    image = cv2.resize(image, (448, 448))    image = image / 255.0    image = np.expand_dims(image, axis=0)    return imagedef draw_boxes(image, boxes, scores):    # 在图像上绘制检测框和类别名称    for box, score in zip(boxes, scores):        x, y, w, h = box        class_index = np.argmax(score)        class_name = classes[class_index]        confidence = score[class_index]        label = f"{class_name}: {confidence:.2f}"        cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)        cv2.putText(image, label, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1)    return image# 构建模型input_image = Input(shape=(448, 448, 3))yolo_model = YOLO(input_image, training=False)model = Model(inputs=input_image, outputs=yolo_model.output)# 加载预训练权重model.load_weights('path_to_pretrained_weights')# 进行目标检测和可视化image_path = 'dog.jpg'image = load_image(image_path)output = model.predict(image)# 解析输出boxes = output[..., :4]scores = output[..., 4:]# 设置置信度阈值,过滤掉置信度较低的检测结果confidence_threshold = 0.5filtered_boxes = []filtered_scores = []for box, score in zip(boxes[0], scores[0]):    max_score = np.max(score)    if max_score > confidence_threshold:        filtered_boxes.append(box)        filtered_scores.append(score)# 绘制检测结果并显示图像result_image = draw_boxes(cv2.imread(image_path), filtered_boxes, filtered_scores)cv2.imshow("Detection Result", result_image)cv2.waitKey(0)cv2.destroyAllWindows()
请将代码中的以下部分进行相应的修改:

- 将 path_to_pretrained_weights 替换为预训练权重文件的路径。
- 将 dog.jpg 替换为你要测试的图像文件的路径。

运行程序后,应该会显示含有检测框和类别的图像窗口。

希望这能帮到你!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-28 20:35:57 | 显示全部楼层
以下是一个使用YOLOv1模型进行预测和可视化检测的示例程序:
import numpy as np
import cv2
from matplotlib import pyplot as plt
from tensorflow.keras.models import Model
from tensorflow.keras.layers import Conv2D, Input

def create_yolo_model():
    # 创建YOLOv1模型结构
    input_image = Input(shape=(448, 448, 3))
    # ... 模型结构参考上述链接中的代码 ...

    model = Model(inputs=input_image, outputs=output)
    return model

def load_weights(model, weights_file):
    # 加载训练好的权重
    # ... 读取权重文件并将权重加载到模型中 ...

def preprocess_image(image):
    # 图像预处理,将图像调整为模型输入尺寸
    image = cv2.resize(image, (448, 448))
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    image = image.astype(np.float32)
    image /= 255.0
    image = np.expand_dims(image, axis=0)
    return image

def postprocess_predictions(predictions):
    # 后处理预测结果,提取检测框和类别信息
    # ... 根据模型输出解析预测结果 ...

def visualize_detections(image, detections):
    # 可视化检测结果
    # ... 根据检测结果在图像上绘制检测框和类别信息 ...

# 创建模型
model = create_yolo_model()

# 加载权重
weights_file = 'path_to_weights_file'
load_weights(model, weights_file)

# 读取测试图像
image_file = 'dog.jpg'
image = cv2.imread(image_file)

# 图像预处理
input_image = preprocess_image(image)

# 进行预测
predictions = model.predict(input_image)

# 后处理预测结果
detections = postprocess_predictions(predictions)

# 可视化检测结果
visualize_detections(image, detections)

# 显示图像
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()

请注意,上述代码中的一些部分需要根据你的具体情况进行修改,比如模型结构的创建和权重文件的路径。另外,你可能需要安装一些额外的库,如 matplotlib 和 opencv-python 。

希望这个示例程序能帮助到你,让你能够完成作业并实现可视化检测效果。如果你遇到任何问题,请随时提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 12:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表