其他分享
首页 > 其他分享> > 利用Piexllib模型库做猪只图像分割

利用Piexllib模型库做猪只图像分割

作者:互联网

import cv2
import matplotlib.pyplot as plt

camp = cv2.VideoCapture('Video 485.mp4')
i = 1
c=1
framerate = 250
while True:
    ret,frame = camp.read()
    if ret:
        if (c%framerate==0):
            cv2.imwrite('./1-2-2/'+'485'+str(i)+'.jpg',frame)
    c +=1
    i +=1

使用labelme对获取的图片数据进行标注:
在这里插入图片描述
将标注的数据集划分为训练集和测试集
划分好的数据集的目录示例。
在这里插入图片描述
在训练之前可视化示例图像,以确认是否正确生成了蒙版和边界框。

import pixellib
from pixellib.custom_train import instance_custom_training

vis_img = instance_custom_training()
vis_img.load_dataset("Nature")
vis_img.visualize_sample()

使用load_dataset函数加载了数据集。PixelLib要求多边形注释采用可可格式,当调用load_data函数时,train和test文件夹中的各个json文件将分别转换为单个train.json和test.json。训练和测试json文件将位于根目录中,作为训练和测试文件夹。现在,新文件夹目录将如下所示:
在这里插入图片描述

import pixellib
from pixellib.custom_train import instance_custom_training

train_maskrcnn = instance_custom_training()
train_maskrcnn.modelConfig(network_backbone = "resnet101", num_classes= 1, batch_size = 4)
train_maskrcnn.load_pretrained_model("/content/drive/MyDrive/piexllib/mask_rcnn_coco.h5")
train_maskrcnn.load_dataset("/content/drive/MyDrive/piexllib/Nature")
train_maskrcnn.train_model(num_epochs = 3, augmentation=True,  path_trained_models = "mask_rcnn_models")

**path_trained_models:**这是在训练期间保存训练后的模型的路径。保存验证损失最小的模型。
由于使用了预训练模型,经过测试少量的训练世代即可获取较好的结果。

import pixellib
from pixellib.instance import custom_segmentation

test_video = custom_segmentation()
test_video.inferConfig(num_classes=1, class_names=["BG","pig"])
test_video.load_model("/content/drive/MyDrive/piexllib/mask_rcnn_model.h5")
pig_text=test_video.process_video("/content/drive/MyDrive/piexllib/1-1.mp4", show_bboxes = False,  output_video_name="/content/drive/MyDrive/piexllib/1-1_cust.mp4", frames_per_second=15)

class_names:这是一个列表,其中包含训练模型的类的名称。pig类ID为1“ BG”,它是指图像的背景,它是第一个类,必须沿类名可用。

未显示boxes的结果展示;show_bboxes = False

在这里插入图片描述
显示boxes的结果展示:show_bboxes = True
在这里插入图片描述
pig_text包含了分割后的所有信息,包括:

  1. ‘class_ids’:物体类别
  2. ‘masks’:物体蒙版位置信息
  3. ‘rois’:框的位置信息
  4. ‘scores’:物体识别所属概率

获取猪只的数量:设定标准获取识别概率在0.95以上的才认定为猪。

pig_num = 0
for i in pig_text[0]['socres']:
	if i > 0.95:
		pig_num +=1
print(pig_num)

调用摄像头

import pixellib
from pixellib.instance import custom_segmentation
import cv2


capture = cv2.VideoCapture(0)

segment_camera = custom_segmentation()
segment_camera.inferConfig(num_classes=1, class_names=["BG", "pig"])
segment_camera.load_model("/content/drive/MyDrive/piexllib/mask_rcnn_model.h5")
segment_camera.process_camera(capture, frames_per_second= 10, output_video_name="output_video.mp4", show_frames= True,
frame_name= "frame", check_fps = True)

标签:pixellib,Piexllib,模型库,custom,train,video,猪只,import,pig
来源: https://blog.csdn.net/weixin_43990004/article/details/112170757