50694


私は開発環境Python(Jupyter
notebook)を用いた国旗画像をクラスタリングするプログラムを用いて顔画像をクラスタリングできるプログラムに改良しようと思っています。

しかし、そのまま顔画像をセットしても分類してもらえません。

以下がソースコードです

[code]

    import os
    import shutil
    import numpy as np
    from PIL import Image
    from skimage import data
    import pandas as pd
    from sklearn.cluster import KMeans
    
    
    for path in os.listdir('C:/Clustering2/human_origin'):
    img=Image.open(f'C:/Clustering2/human_origin/{path}')
    img=img.convert('RGB')
    img_resize=img.resize((200,100))
    img_resize.save(f'C:/Clustering2/human_convert/{path}.jpg')
    
    
    feature=np.array([data.imread(f'C:/Clustering2/human_convert/{path}') for path in os.listdir('C:/Clustering2/human_convert')])
    feature=feature.reshape(len(feature),-1).astype(np.float64)
    
    
    model=KMeans(n_clusters=15).fit(feature)
    
    
    labels=model.labels_
    
    
    for label,path in zip(labels,os.listdir('C:/Clustering2/human_convert')):
    os.makedirs(f"C:/Clustering2/human_group/{label}",exist_ok=True)
    shutil.copyfile(f"C:/Clustering2/human_origin/{path.replace('.jpg','')}",f"C:/Clustering2/human_group/{label}/{path.replace('.jpg','')}")
    print(label,path)
    
[/code]

以下がエラーコードです。

[code]

    No such file or directory: 'C:/Clustering2/human_origin/img_136'
    
[/code]

用意した画像に問題があると思い再三見直しましたが解決しませんでした。


CC BY-SA 4.0
2018-11-27T19:05:42.387
50690
2018-11-29T22:43:55.040
2018-11-29T02:05:23.440
31173
31173
question
python python3 jupyter-notebook
顔画像のデータをクラスタリングしたい


エラーメッセージ「No such file or directory: 'C:/Clustering2/human_origin/img_136'」  
[直訳] 'C:/Clustering2/human_origin/img_136'というファイルもしくはディレクトリはありません  
という内容ですから、「用意した画像に問題がある」のではなく、「用意した画像のファイルに問題(ファイル名が違っている、違うディレクトリに置いている等々)がある」と考えてください。

nekketsuuu氏がコメントしているように、質問のコード中には、"C:/Clustering/"で始まるファイルパスしか書かれていないのですから、'C:/Clustering2/human_origin/img_136'に関したエラーが発生するのは変です。  
実行につかったプログラムのソースを確認してください。


CC BY-SA 4.0
2018-11-28T01:09:10.900
50694
2018-11-28T01:09:10.900
217
50690
answer


国旗画像の場合は元の画像が.png形式であったため、特徴抽出する前に.jpg形式に変更する処理をしていて、今回は顔画像のクラスタリングで.jpg形式のままだったので拡張子を変更する処理をカットしました。その結果、無事解決することができました。


CC BY-SA 4.0
2018-11-29T22:43:55.040
50767
2018-11-29T22:43:55.040
31173
50690
answer