YOLO | YOLOv8 训练自己的数据集
YOLOv8是Ultralytics最新的基于YOLO的目标检测模型系列,提供最先进的性能。
本文实现了俩种环境的设置,一种是windows的CPU版本,还有服务器上的GPU版本。CPU版本仅用来实现检测,而GPU版本用来训练自己的数据集!(选择其中一个环境运行后,训练自己的数据集)
1.环境1:windows11, anaconda虚拟环境(python3.9),pycharm
ultralytics/ultralytics: YOLOv8 🚀 in PyTorch > ONNX > CoreML > TFLite (github.com)
下载文件到本地后解压缩
pip install -r requirements.txt
根据自己的路径位置,下载所需要的包
(或者pip install ultralytics都一样)
配置环境后,检测
yolo task=detect mode=predict model=yolov8n.pt source="https://ultralytics.com/images/bus.jpg"
测试自己的照片
1.环境2:Ubuntu (docker)版本运行
git clone https://github.com/ultralytics/ultralytics
-
克隆项目
-
ls:查询当前文件夹
-
cd ultralytics:打开ultralytics文件夹
配置需要的运行库
pip install ultraklytics
pip install -r requirements.txt
结果
1.环境3:linux上运行
pip install ultralytics
2.训练自己的数据集
2.1.数据格式
把Ubuntu服务器上的数据集复制到docker容器内(在服务器上操作,并非容器内)
docker cp data_sample torch_na:/workspace/ultralytics
复制后容器内可查看数据集
我的情况是韩语不显示,所以重新设置语言,相似的可参考【PS2】
原数据集json文件格式
[
{
"Code Name": "A220148XX_04547.jpg",
"Name": "baeghyang-gwa",
"W": "0.377474",
"H": "0.511151",
"File Format": "jpg",
"Cat 1": "22",
"Cat 2": "01",
"Cat 3": "48",
"Cat 4": "xx",
"Annotation Type": "binding",
"Point(x,y)": "0.313830,0.609444",
"Label": "0",
"Serving Size": "xx",
"Camera Angle": "xx",
"Cardinal Angle": "xx",
"Color of Container": "xx",
"Material of Container": "xx",
"Illuminance": "xx"
}
]
food_classes.json
{
"백향과": 1,
"베이글샌드위치": 2,
"보쌈": 3,
"복숭아": 4,
"볶음면": 5,
"볶음밥": 6,
"부침개": 7,
"비빔밥": 8,
"빵": 9,
"사과파이": 10,
}
~
2.2.训练
接下来就可以开始训练模型了,命令如下:
yolo task=detect mode=train model=yolov8x.yaml data=mydata.yaml epochs=1000 batch=16
- task:选择任务类型,可选['detect', 'segment', 'classify', 'init']
- mode: 选择是训练、验证还是预测的任务蕾西 可选['train', 'val', 'predict']
- model: 选择yolov8不同的模型配置文件,可选yolov8s.yaml、yolov8m.yaml、yolov8l.yaml、yolov8x.yaml
- data: 选择生成的数据集配置文件
- epochs:指的就是训练过程中整个数据集将被迭代多少次,显卡不行你就调小点。
- batch:一次看完多少张图片才进行权重更新,梯度下降的mini-batch,显卡不行你就调小点。
更多参数修改可参考
例如
yolo train model="yolov8s.pt" data='/dataset/Detecting/data.yaml' epochs=100 imgsz=640 batch=64 device=0,1 optimizer=Adam
也可新建自定义python文件
from ultralytics import YOLO
# Load a model
model = YOLO("yolov8n.yaml") # build a new model from scratch
model = YOLO("yolov8n.pt") # load a pretrained model (recommended for training)
# Use the model
model.train(data="coco128.yaml", epochs=3) # train the model
metrics = model.val() # evaluate model performance on the validation set
results = model("https://ultralytics.com/images/bus.jpg") # predict on an image
path = model.export(format="onnx") # export the model to ONNX format
问题与解决(PS)
【PS1】yolo运行时出错:ImportError: libGL.so.1: cannot open shared object file: No such file or directory
错误分析
Ubuntu18.04基础设置的docker pytorch深度学习镜像中,出现以上的错误。
这是docker镜像生成时使用apt-get时的libgl1-mesa-glx库问题
解决办法
apt-get update
apt-get -y install libgl1-mesa-glx
效果
Ubuntu系统再次运行后出现
ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory
解决办法
apt-get update
apt-get install libglib2.0-dev
效果如图
然后就可以啦~
【PS2】
更改 Ubuntu 上的 Locale
先安装韩文包
apt-get install language-pack-ko
通过locale-gen 安装 Locale
locale-gen ko_KR.UTF-8
更新系统 LANG 设置。update-locale
update-locale LANG=ko_KR.UTF-8 LC_MESSAGES=POSIX
/etc/default/locale修改文件
LANG=ko_KR.UTF-8
LC_MESSAGES=POSIX
按下快捷键Esc,输入:wq后保存退出。如果还是不行,需要修改环境变量【1】
参考文献
【1】로케일(Locale)이란? 국가 및 언어 설정 | 44BITS
【2】 详细!正确!COCO数据集(.json)训练格式转换成YOLO格式(.txt)_qq_42012888的博客-CSDN博客_coco数据集的json文件
[3]Roboflow: Give your software the power to see objects in images and video
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)