图片目标识别检测分类避坑总结(Tensorflow2.0.0)

一、Eagertensor与numpy.array的转换

显示错误:AttributeError: ‘tensorflow.python.framework.ops.EagerTensor’ object has no attribute ‘np’

  Tensorflow2.0+版本下,Eager模式下的Tensor转换为nparray,如果直接用tensor.numpy(),会出现上面的错误,正确转换的方式是numpy.array(tensor)才对;顺便提一句,numpy转tensor的方法是tf.convert_to_tensor(numpy)

二、tf.io.read_file(path)与cv2.imread(path)

  Tensorflow2.0.0下读取图片路径,并生成Tensor的语句为:

img_raw = tf.io.read_file(image_path)
img_tensor = tf.image.decode_jpeg(img_raw, channels=3, dct_method='INTEGER_ACCURATE')

其中可能会有人发现读取出来的图片像素矩阵,与真实的图片像素矩阵是不同的,其实是因为tf.image.decode_jpeg方法中参数dct_method参数默认为" “,即默认使用DCT方法,牺牲了保真度以提高速度;因此与照片真实的像素矩阵会有不同;使用” INTEGER_ACCURATE "可以使得恢复旧版的行为,保持照片的真实像素点。
  Opencv读取图片路径,并生成Numpy的语句为:

img_raw = cv2.imread(image_path)

  必须指出的是,Tensorflow读取的图片Tensor是RGB格式的,而Opencv读取的图片BGR格式的,如果你训练时候是训练图片的RGB格式矩阵,但测试时候是使用的Opencv读取图片,则可能会出现错误的结果;Opencv将BGR转化为RGB的方法为:

frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

或者

frame = frame[:, :, ::-1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值