图像处理踩坑笔记

训练模型时候一定要知道,模型使用的是 什么格式的输入,是 BGR 还是 RGB。

数据增强过程中,要看到其中是否经过了 BGR 和 RGB 的变换。

测试的时候,一定要和 训练时候的格式保持一致, 否则模型会识别不准。

此外,

Image.fromarray(img_.astype('uint8')).convert('RGB')

实测, .convert('RGB') 并不会将 BGR 转为 RGB。

cv2 与 matplotlib 的显示模式不一致, opencv 读取的彩色图像是 BGR 格式,Matplotlib 显示彩色图像是 RGB 格式。所以如果使用 cv2 读图像,而用 cv2 显示,那么就是正常的显示彩色图像。如果用 cv2 读图像,而用 matplotlib 显示,那么就是把 BGR 的图像显示了出来,会偏蓝色。

Image与CV2读取图片格式转换

由CV2读取格式转为Image读取格式

import cv2
from PIL import Image
#img为之前使用cv2读取的图片数据
img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

由Image读取格式转为CV2读取格式

import cv2
from PIL import Image
#img1为之前使用Image读取的图片数据
img1 = cv2.cvtColor(np.array(img1), cv2.COLOR_RGB2BGR)

判断类别时候一定要 先 int 强转。


opencv 直接读进来的格式是 BGR, 包括 视频流读进来格式。

from PIL import Image
# RGB
img = Image.open(img_path)

transforms.ToPILImage(), # 不改变通道

transforms.Normalize(mean=mean, std=std),  # 可以不加,后处理麻烦。多训几轮就好

ONNX 要放到 GPU 上加速运行。此外,要研究下 动态批次。

参考:

https://blog.csdn.net/qq_43673118/article/details/123281548

https://juejin.cn/post/7169133035227447332

此外,可能直接 pip 安装会失败,因为 Jetson 的可能需要去官网下载。

供应商数据标注问题

找了个供应商标数据,他们使用 labelme 标注的。

拉框时候,本来应该从左上到右下拉,这些人有的 从别的方向拉,直接就标注错误了。切图时候才发现。

posted @ 2023-03-12 23:01  cold_moon  阅读(196)  评论(0编辑  收藏  举报