質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.34%

エラー’'utf-8' codec can't decode byte’の解決法について

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 684

score 255

pythonでこのサイトを真似て、Amazon sagemakerで呼び出したモデルで推論を行いましたが、推論結果をjson.loads()しようとするとエラーが出ます。

# エラー
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd7 in position 2: invalid continuation byte

コードはほぼサイトのと同じものを使用してますが、ラストのbyte形式の読み込みがうまくいきません。どうすれば解決できるか教えていただけないでしょうか?

# Dsフォルダに画像の保存
path='test_dir'
for idx, file in enumerate(os.listdir(path)):
    img = cv2.imread(path+'/'+file)
    img = Image.fromarray(np.uint8(np.array(img)))
    img = img.convert("RGB")
    img.save('Ds/img_{}.jpg'.format(idx))

# 画像のload
runtime = boto3.Session().client(service_name='sagemaker-runtime')
img = open('Ds/img_1.jpg', 'rb').read()

# 推論
response = runtime.invoke_endpoint(
    EndpointName='****', 
    ContentType='application/x-image', 
    Body=bytearray(img))
# read the prediction result and parse the json
result = response['Body'].read()

# byteの読み込み
result = json.loads(result)
>>>
#エラー
# UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd7 in position 2: invalid continuation byte

追記(resultsの中身)

b'\n#\xd7\xce9HU\x00\n\x9f\x90\xd5\x02\n\x06target\x12\x92\x90\xd5\x02\x12\x8d\x90\xd5\x02\n\x88\x90\xd5\x02\x1c\x9c}?#o}?}>}?\xe3\t}?\xfb\xd0|?j\x93|?\xcaP|?\xb2\x08|?\xab\xba{?&\x15|?,h|?\x84\xb3|?\xf7\xf7|?:6}?\xf3n}?\xab\xa2}?\xe7\xd1}?&\xf8}?h\x1a~?S9~?dU~?\xfen~?z\x86~?\x19\x9c~?\x19\xb0~?\xf7\xd4~?\x15\xf6~?\x85\x13\x7f?\xaf-\x7f?\xf3D\x7f?\xa2Y\x7f?\x04l\x7f?\\|\x7f?O\x83\x7f?\xad\x89\x7f?\xaf\x8f\x7f?[\x95\x7f?\xb6\x9a\x7f?\xc2\x9f\x7f?\x87\xa4\x7f?\x06\xa9\x7f?U\xa9\x7f?\x7f\xa9\x7f?\xa5\xa9\x7f?\xc9\xa9\x7f?\xe9\xa9\x7f?\x05\xaa\x7f?\x1f\xaa\x7f?5\xaa\x7f?\x0c\xb1\x7f?\x97\xb7\〜
中略
〜
1\xe6:\xb8\x95\x00;\xadB\x0f;E\x9a\x1f;,\xcd1;\xb2\x11F;-\xa2\\;\xa4Hu;iHk;\xa0\xafa;\xcbyX;\xa3\xa3O;\xb9(G;\x05\x06?;\xb277;\x12\xce/;\x9e\x8b4;9h9;sd>;B\x81C;\xb7\xbfH;W N;c\xa4S;uLY;\n\x13\n\x05shape\x12\n:\x08\n\x06\x01\x03\xf7\x02\xda\t\x00\x00\x00'
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

check解決した方法

0

endpoint_name='*****'
endpoint_response = boto3.client('sagemaker-runtime').invoke_endpoint(
    EndpointName=endpoint_name,
    Body=img,
    ContentType='image/jpeg',
    Accept = 'image/png'
)
results = endpoint_response['Body'].read()
mask = np.array(Image.open(io.BytesIO(results)))

# plot
num_classes=2
plt.imshow(mask, vmin=0, vmax=num_classes-1, cmap='jet')
plt.show()

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

UTF8で解釈できないデータパターンがある、ということなんで、そのファイルを開いて、なんの文字コードなのかを確認してみよう。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/09/15 13:39

    追記しました。b'\n#で始まる文字列なのですが、どのようにして読み込めばいいでしょうか?

    キャンセル

  • 2019/09/15 15:10

    これを見るに、文字コード云々より前に、文字列でもないように見えます
    本当にそのデータはJSONの形式なのか、から調べ直してみればどうでしょう

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る