ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

深度学习yolov8模型训练垃圾检测数据集 建立深度学习基于YOLOv8的垃圾分类检测系统,对可回收垃圾 厨余垃圾 其他垃圾等进行检测分类

深度学习yolov8模型训练垃圾检测数据集 建立深度学习基于YOLOv8的垃圾分类检测系统,对可回收垃圾 厨余垃圾 其他垃圾等进行检测分类 使用ultralytics库 深度学习yolov8模型训练垃圾检测数据集 建立深度学习基于YOLOv8的垃圾分类检测系统对可回收垃圾 厨余垃圾 其他垃圾等进行检测分类文章目录使用ultralytics库 深度学习yolov8模型训练垃圾检测数据集 建立深度学习基于YOLOv8的垃圾分类检测系统对可回收垃圾 厨余垃圾 其他垃圾等进行检测分类1. 环境设置2. 数据准备3. 模型训练4. 推理代码5. 界面构建注意事项以下文字及代码仅供参考学习。如何建立基于YOLOv8深度学习的垃圾分类检测系统来对图片视频摄像头进行识别4# Classes names: [recyclable waste,hazardous waste,kitchen waste,other waste]基于YOLOv8构建一个垃圾分类检测系统我们可以使用ultralytics库这是一个官方支持的YOLOv8实现。以下是一个详细的指南包括数据准备、模型训练、推理和界面构建。代码示例仅供参考1. 环境设置首先确保安装了必要的库pipinstallultralytics opencv-python-headless numpy pandas matplotlib PyQt52. 数据准备我们需要创建YOLO格式的数据集配置文件.yaml。假设同学你的数据集结构如下E:\MyCVProgram\GarbageDetection\datasets\GarbageSorting\ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ └── labels/ ├── train/ ├── val/ └── test/创建一个名为garbage.yaml的文件内容如下# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]path:E:\MyCVProgram\GarbageDetection\datasets\GarbageSorting# dataset root dirtrain:images/train# train images (relative to path) 128 imagesval:images/val# val images (relative to path) 128 imagestest:images/test# test images (optional)# Classesnc:4# number of classesnames:[recyclable waste,hazardous waste,kitchen waste,other waste]# class names3. 模型训练使用ultralytics库进行模型训练fromultralyticsimportYOLO# Load a modelmodelYOLO(yolov8n.yaml)# build a new model from scratchmodelYOLO(yolov8n.pt)# load a pretrained model (recommended for training)# Use the modelresultsmodel.train(datagarbage.yaml,epochs100,imgsz640)4. 推理代码编写推理代码来检测图片、视频或摄像头输入importcv2fromultralyticsimportYOLO# Load the trained modelmodelYOLO(runs/detect/train/weights/best.pt)defdetect_image(image_path):resultsmodel(image_path)forresultinresults:boxesresult.boxesforboxinboxes:x1,y1,x2,y2map(int,box.xyxy[0])labelmodel.names[int(box.cls[0])]confidencefloat(box.conf[0])print(fDetected{label}with confidence{confidence:.2f}at position ({x1},{y1}) - ({x2},{y2}))defdetect_video(video_path):capcv2.VideoCapture(video_path)whilecap.isOpened():ret,framecap.read()ifnotret:breakresultsmodel(frame)forresultinresults:boxesresult.boxesforboxinboxes:x1,y1,x2,y2map(int,box.xyxy[0])labelmodel.names[int(box.cls[0])]confidencefloat(box.conf[0])cv2.rectangle(frame,(x1,y1),(x2,y2),(0,255,0),2)cv2.putText(frame,f{label}:{confidence:.2f},(x1,y1-10),cv2.FONT_HERSHEY_SIMPLEX,0.9,(0,255,0),2)cv2.imshow(Frame,frame)ifcv2.waitKey(1)0xFFord(q):breakcap.release()cv2.destroyAllWindows()defdetect_camera(camera_index0):capcv2.VideoCapture(camera_index)whilecap.isOpened():ret,framecap.read()ifnotret:breakresultsmodel(frame)forresultinresults:boxesresult.boxesforboxinboxes:x1,y1,x2,y2map(int,box.xyxy[0])labelmodel.names[int(box.cls[0])]confidencefloat(box.conf[0])cv2.rectangle(frame,(x1,y1),(x2,y2),(0,255,0),2)cv2.putText(frame,f{label}:{confidence:.2f},(x1,y1-10),cv2.FONT_HERSHEY_SIMPLEX,0.9,(0,255,0),2)cv2.imshow(Camera,frame)ifcv2.waitKey(1)0xFFord(q):breakcap.release()cv2.destroyAllWindows()5. 界面构建使用PyQt5构建一个简单的GUI界面importsysfromPyQt5.QtWidgetsimportQApplication,QMainWindow,QPushButton,QVBoxLayout,QWidget,QFileDialog,QLabel,QTextEdit,QComboBox,QLineEditfromPyQt5.QtGuiimportQPixmapfromPyQt5.QtCoreimportQtclassGarbageDetectionApp(QMainWindow):def__init__(self):super().__init__()self.initUI()definitUI(self):self.setWindowTitle(基于YOLOv8深度学习的垃圾分类检测系统)self.setGeometry(100,100,800,600)central_widgetQWidget()layoutQVBoxLayout()self.image_labelQLabel(self)layout.addWidget(self.image_label)self.load_buttonQPushButton(选择图片,self)self.load_button.clicked.connect(self.load_image)layout.addWidget(self.load_button)self.video_buttonQPushButton(选择视频,self)self.video_button.clicked.connect(self.load_video)layout.addWidget(self.video_button)self.camera_buttonQPushButton(开启摄像头,self)self.camera_button.clicked.connect(self.start_camera)layout.addWidget(self.camera_button)self.result_textQTextEdit(self)layout.addWidget(self.result_text)central_widget.setLayout(layout)self.setCentralWidget(central_widget)defload_image(self):optionsQFileDialog.Options()file_name,_QFileDialog.getOpenFileName(self,选择图片,,Images (*.png *.xpm *.jpg *.bmp);;All Files (*),optionsoptions)iffile_name:pixmapQPixmap(file_name)self.image_label.setPixmap(pixmap.scaled(self.image_label.size(),Qt.KeepAspectRatio))self.detect_image(file_name)defload_video(self):optionsQFileDialog.Options()file_name,_QFileDialog.getOpenFileName(self,选择视频,,Videos (*.mp4 *.avi);;All Files (*),optionsoptions)iffile_name:self.detect_video(file_name)defstart_camera(self):self.detect_camera()defdetect_image(self,image_path):detect_image(image_path)self.result_text.append(f检测结果{image_path})defdetect_video(self,video_path):detect_video(video_path)self.result_text.append(f检测结果{video_path})defdetect_camera(self):detect_camera()self.result_text.append(检测结果摄像头)if__name____main__:appQApplication(sys.argv)exGarbageDetectionApp()ex.show()sys.exit(app.exec_())注意事项数据标注确保你的数据集已经正确标注并且标签文件位于正确的目录下。模型优化根据实际需求调整模型参数如学习率、批次大小等。硬件要求训练和推理过程可能需要较长时间建议在具有足够GPU资源的设备上运行。基于YOLOv8的垃圾分类检测系统并通过图形界面进行操作。以上文字及代码仅供参考学习。
返回列表