[Kaggle] 이미지로 놀아보기 (dogs vs cats)

지난번 까지는 속성에 대한 해석이었으므로 이번에는 이미지를 분류해 보기로 했다.

그렇다고 해도, 오른쪽도 왼쪽도 모르는 상태가 어떻게 진행된 것인가? 라는 참고가 된다는 정도의 메모이다.

개 고양이



시도한 것은 여기의 경쟁 데이터입니다.
htps //w w. 꺄gぇ. 이 m / c / gs-vs- 또는 ts

개인지 고양이인지를 분류하자는 녀석이다.

데이터 확인



DL하면서 데이터 세트의 내용을 확인

Training archive contains 25,000 images of dogs and cats. Train your algorithm on these files and predict the labels for test1.zip (1 = dog, 0 = cat).

그렇다고해도, 데이터를 확인하는 것도 아무것도 없다.
이미지를 개(1)나 고양이(0)로 분류하고 있을 뿐인 모양.

어디에서 손을 붙이면 좋을까?



하지만 어쩔 수 없는지 모르겠다.
이미지를 인식하고 싶다면 Keras를 사용하는 것이 일반적입니까?

우선 구구를 시도했다.



몇 가지 구그를 시도한 현재 자신에게 알기 쉬웠습니다.
htps : // 이 m/wtn b93/이고 ms/65633bc 베2942b440128
htp : // bg. 아시아 l. 이. jp/1502

분위기로서는
대상이 되는 화상의 사이즈를 맞추고,
그것을 벡터로 만들고 가져옵니다.
같은 느낌?

우선 해보자



이런 식으로 파일을 읽어 데이터 세트를 만듭니다.
def get_data_and_label(image_path):
    labels = []
    datas = []
    files = []
    for path in os.listdir(image_path):
        if 'dog' in path:
            labels.append(1)
        else:
            labels.append(0)

        feature = data.imread(f'{image_path}/{path}')
        feature = transform.resize(feature, (100, 100), mode='reflect')    
        datas.append(convert_image(feature))
        files.append(path)
    return datas, labels,files

RGB의 이미지를 1차원으로 하는 처리는 이런 느낌
def convert_image(img):
    dim = img.shape[0] * img.shape[1] * img.shape[2]
    img_vector = img.reshape(1, dim)
    return img_vector[0]

그리고는 전회 작성하고 있던 각 모델의 생성 처리에 먹이게 해 주면 어쩐지 할 수 있을 것 같다.

갑자기 전부 하는 것은 무리한 이야기라고 생각했기 때문에 100장씩으로 해 보았다.

결과


어쩐지 할 수 있는 느낌은 있다.
※실제는 파일의 번호(ID에 대응)와 데이터의 정렬 순서가 맞지 않아서 할 수 없었지만. .

사실은 그리드 검색이거나 몇 가지 방법으로 시험해보고 싶었지만, 아호처럼 시간이 걸릴 것 같았기 때문에, 적당한 파라미터로 Perceptron와 Random Forest만으로 시도해보기로 했다.

그리고 몇 번이나 모델 작성을 시도 할 수 없기 때문에 다음을 만들어 한 번 만든 모델을 저장할 수 있도록했다.
def save_model(model):
    from sklearn.externals import joblib
    filename = 'finalized_model.sav'
    joblib.dump(model, filename)

전부 해보자



모두 읽어 보면 데이터 읽기만으로 20 분 정도



이것 언제 끝나는거야・・・



Random Forest는 의외로 일찍 끝났다.

우선 완성?



그리고, 완성되었으므로 Submit 해 보자고 생각했지만, 이 대회는 오픈이 아니었기 때문에 투고할 수 없었다.
거리에서 샘플과 시험하고 있는 것이 전혀 보이지 않는 셈이다.

htps //w w. 꺄gぇ. 코 m / c / ぢ 기 t 레코 g
이쪽으로 해봐야 했을지도 모른다.

어쩐지 알게 된 것



어쩔 수 없는 방법은 알게 된 것 같다.
・화상을 읽어 1장씩 1차원의 벡터로 한다
· 그것에 대한 라벨을 붙인다.
· 모델 만들기
· 추정

단지 이것이라면 특징량도 엉뚱한 생각이 들지만, 어떻게 할까?
단순히 Train 데이터를 늘리는가?

나중에 깨달았지만 모처럼 만든 모델로 아무것도 위해하지 않았어.

좋은 웹페이지 즐겨찾기