rknn-toolkit2 icon indicating copy to clipboard operation
rknn-toolkit2 copied to clipboard

输入图像为2通道图片的onnx模型无法转化 The channel of r_shape must be 3!

Open MercKAi opened this issue 2 years ago • 3 comments

The channel of r_shape must be 3! W build: ===================== WARN(4) ===================== E rknn-toolkit2 version: 1.4.0-22dcfef4 Quantizating : 0%| | 0/309 [00:00<?, ?it/s] E build: Catch exception when building RKNN model! E build: Traceback (most recent call last): E build: File "rknn/api/rknn_base.py", line 1549, in rknn.api.rknn_base.RKNNBase.build E build: File "rknn/api/rknn_base.py", line 112, in rknn.api.rknn_base.RKNNBase._quantize E build: File "rknn/api/quantizer.py", line 914, in rknn.api.quantizer.Quantizer.run E build: File "rknn/api/quantizer.py", line 508, in rknn.api.quantizer.Quantizer._get_layer_range E build: File "rknn/api/rknn_utils.py", line 203, in rknn.api.rknn_utils.get_input_img E build: File "rknn/api/rknn_log.py", line 113, in rknn.api.rknn_log.RKNNLog.e E build: ValueError: The channel of r_shape must be 3!

求助,有没有办法去修改rknn读取图片的方法呢

MercKAi avatar May 26 '23 05:05 MercKAi

@MercKAi did you solve it ? I am facing the same issue with any Keras Application Model like MobileNetV2 or EfficientNetB0

nassimus26 avatar Oct 10 '24 16:10 nassimus26

it seems related to the quantification, so I tried :

means = [104, 117, 123]
rknn.config(target_platform='rv1106', mean_values= [means], std_values=[means])

Since My model has input shape of (10, 150, 180, 3) (10 frames ), it returns this errors :

E load_onnx: The len of mean_values ([104, 117, 123]) for input 0 is wrong, expect 150!
W load_onnx: ===================== WARN(6) =====================
E rknn-toolkit2 version: 1.6.0+81f21f4d
E load_onnx: Catch exception when loading onnx model: /home/mac/PycharmProjects/RealTimeFightDetect/fights.onnx!
E load_onnx: Traceback (most recent call last):
E load_onnx:   File "rknn/api/rknn_base.py", line 1540, in rknn.api.rknn_base.RKNNBase.load_onnx
E load_onnx:   File "rknn/api/rknn_base.py", line 790, in rknn.api.rknn_base.RKNNBase._create_ir_and_inputs_meta
E load_onnx:   File "rknn/api/rknn_log.py", line 92, in rknn.api.rknn_log.RKNNLog.e
E load_onnx: ValueError: The len of mean_values ([104, 117, 123]) for input 0 is wrong, expect 150!

So I tried this :

means = [104, 117, 123]
->>> means = np.stack([means] * 150) /////// repeat it 150 times
rknn.config(target_platform='rv1106', mean_values= [means], std_values=[means])

Now I am getting this error :

File ~/miniconda3/envs/ai/lib/python3.11/site-packages/rknn/api/rknn.py:124, in RKNN.config(self, mean_values, std_values, quantized_dtype, quantized_algorithm, quantized_method, target_platform, quant_img_RGB2BGR, float_dtype, optimization_level, custom_string, remove_weight, compress_weight, inputs_yuv_fmt, single_core_mode, dynamic_input, model_pruning, op_target, quantize_weight, remove_reshape, **kwargs)
    121 args.remove_reshape = remove_reshape
    122 args.kwargs = kwargs
--> 124 return self.rknn_base.config(args)

File rknn/api/rknn_base.py:991, in rknn.api.rknn_base.RKNNBase.config()

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Please help !

nassimus26 avatar Oct 10 '24 16:10 nassimus26

请问有解决嘛,我也遇到这个问题

IDEALIST-MAKER avatar Mar 15 '25 04:03 IDEALIST-MAKER