本文实现了俩种环境的设置,一种是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

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐