KT 에이블스쿨 : 딥러닝 심화 3일차 - 라벨링, 자체 딥러닝 모델, ChatGPT API, Pandas AI





    딥러닝 심화  

    24.04.19 (금) 

    이미지수집 - 데이터라벨링 - 모델학습 - 예측


    그동안 roboflow의 데이터셋이나, YOLO 모델을 불러와서 딥러닝 모델을 만들었는데,

    드디어 이미지 수집부터 데이터라벨링, 학습과 예측까지 전과정을 직접해봤다. !!! 


    • 예측할 이미지 분야 결정  
      • 옷의 종류 (자켓, 바지, 치마, 드레스 등)

    • free image 사이트에서 이미지 수집
      • 길에서 찍은 전신샷 36개 수집함

    • 폴더 구조 만들기
      • ybat-master 폴더에 txt 파일 생성 → 클래스명 입력
      • ybat-master 폴더에 train / valid 폴더 각각 만들고
        안에는 images, labels 두개의 폴더를 각각 만듦
        images : 수집한 이미지 넣고, labels는 일단 비우기

    • 데이터 라벨링해서 데이터셋 만들기
      • 로컬에서 데이터 라벨링 툴을 활용해 바운딩 박스 생성
      • 로컬에서 하는 이유 : 웹으로 하면 서버가 불안정해서 날라갈수도 있음
      • 아래 사진과 같이 작더라도 흐리더라도 박스 추가 
      • Save YOLO 버튼을 누르면, 이미지 이름별 박스 위치정보, 클래스 정보가 담긴 txt 파일이 만들어짐
        • labels 폴더로 이동 
        내가 직접한 이미지수집과 데이터 라벨링
          출처 : ㄴㅏ




    • YOLO_prac 폴더 생성하고 여기에 train, valid 폴더들 넣기
      • data.yaml 파일 만들기

        • 메모장에서 아래와 같이 작성하고, 확장명을 yaml으로 저장
        출처 : ㄴㅏ
      •  클래스 이름의 순서는 classes에서 작성한 순서 그대로써야함


    • 코랩에서 모델링
      • ultralytics 라이브러리 설치
      • YOLO 불러오기
      • data.yaml 파일의 경로 수정 
      • YOLO 모델 선언
      • 모델 학습
      • 모델 예측 

    아래는 예측한 결과이다 ! 

    생각보다 예측이 잘되서 너무 뿌듯 ^---------^ 

    • epochs = 50 으로 학습했을때
      • jacket / pants / dress 는 잘 인식이 됐지만, 이외에는 아예 인식을 못했다
          출처 : ㄴㅏ





    epochs = 300으로 학습 시 

          • 확실히 epochs가 50이었을때에 비해 정확도와 예측률이 올랐음
          • 크기가 작은 사람들의 옷 형태도 정확하게 예측했다 
            • (아래 사진의 2번째, 3번째)
            성공

          • 잘못 인식한 경우도 있었다
            • 치마를 바지로 인식 (아래의 1번째 사진)
            • 드레스를 셔츠와, 치마로 인식함 (아래의 2번째 사진) 
            • 클래스 6개 중에서 유일하게 muffler 만 예측을 아예 못함 (아래의 3번째 사진)
              • 수집한 이미지 수가 적고, 자켓에 가려져있는 경우가 많아 예측을 못한 듯

          • 실패

        • 애매한 경우
          • 드레스를 인식하면서, 치마로도 인식한 경우 (아래의 1번째 사진) 


        잼따

        비교적 식별이 쉬운 오피스룩으로 많이 수집을 해서인지 인식이 생각보다 잘되서 기분이 좋았다 

        정교한 라벨링과 더 많은 이미지로 데이터셋을 고도화시키면 인식하지 못한 머플러같은 어려운 것도 인식이 될거라 생각한다. 

        36개의 이미지로 이정도의 성능이 나와서 대만족 






                                                   




        ChatGPT API

        API : 클라이언트에서 받은 요청을 서버로 전달해주는 역할

        언어지능은 transformer가 베스트 - GPT, BERT 모델이 있다


        이전 크롤링 실습때에는 카카오에서 만든 GPT 기반 LLM 모델을 API로 가져와 실습했는데,

        이번에는 오픈AI의 API를 사용해 ChatGPT를 사용해봤다. 

        확실히, 이전에 실습한 카카오 LLM 보다 훨씬 답변이 정교했다. 



        - 사용 순서 

        1. 채팅을 위한 함수 생성

        • 어떤 모델을 쓸건지 정함 model=gpt-3.5-turbo'
        • 아래에 대한 Input 을 받음 
          • ChatGPT에 어떤 역할을 부여할것인지
          • ChatGPT에 묻고싶은 질문이 무엇인지
        • return 값으로 ChatGPT 서버로 response 받은 message.content 출력

        2. GPT에게 request하고 답변 response 받기

        ## 여행 플래너
        role = '너는 전세계의 모든 곳을 다 가본 유능한 여행 플래너야. 20대 힐링여행을 주제로 여행계획 세우는걸 아주 잘해.'
        question = "여름철에 가기 좋은 해외 여행지를 추천해줘. 20대 여자인 친구 3명과 갈것같고, 맛집 많았으면 좋겠어"
        response = ask_chatgpt2(role, question)
        print(response)

        여름에 가기 좋은 해외 여행지 중 하나는 그리스의 산토리니 섬입니다. 
        산토리니는 화려한 일몰로 유명한 아름다운 섬으로, 푸른 바다와 흰 담장 건물들이 만드는 풍경이 아름다운 곳입니다. 
        맛있는 그리스 음식과 맛집들도 많아서 음식을 즐기는 것도 좋을 거에요. 
        또 다른 추천지로는 포르투갈의 리스본이 있습니다. 리스본은 다채로운 건축물, 예술과 문화가 어우러진 아름다운 도시로, 다양한 레스토랑과 카페들이 있어 맛집 탐방을 즐기기에 안성맞춤입니다. 
        마지막으로 태국의 코사무이 섬도 좋은 선택일 수 있어요. 
        휴양지로 유명한 코사무이는 아름다운 해변과 푸른 바다가 매력적인 곳으로, 맛있는 태국 음식을 맛보며 여유로운 여행을 즐길 수 있을 거에요. 
        이 세 곳 중에서 친구들과 함께 잊지 못할 여름휴가를 보낼 수 있을 거예요!


        이렇게 여러곳을 추천 받았는데 재작년에 갔던 코사무이가 나와서 엄청 반가웠다 ..


        예전에 한번 배워서 인지, API로 LLM 활용하는건 이전보다 더 쉬워진 느낌이다. 







                                                   


        Pandas AI를 활용한 데이터 분석

        • Pandas AI : 생성 AI(open AI)를 사용하여 데이터 전처리 및 탐색 및 분석 가능

          • Pandas AI는 1년전에 만들어진 것.
          • Open AI의 API 키를 연결해서 질의하고 응답을 바로 받을수 있다.
          • 최근에 이런 자동 데이터탐색 라이브러리가 많아지고 있음
        • 데이터셋을 불러와서, 직접 데이터 탐색을 하지 않더라도 순식간에 데이터 탐색이 가능하다

          • 질의가 순서대로 기록에 남기때문에, 이전 질문의 답변과 이어지는 경향이 있음.
        • 최신기술은 에러가 많고 불안정

          • 실제로 같은 코드더라도 되는사람 안되는 사람이 있었고, 실행되더라도 다른 결과가 나옴
        • SmartDataframe : PandasAI용 df

        • SmartDatalake : 두개의 df를 merge해서 분석할수있음

          df를 합쳐서 데이터분석 가능

          • 주의점
            1. 합치고자하는 컬럼명이 같아야함
            2. df 이름, 칼럼이름, 값에 한글이 들어가면 오류가 남






        댓글

        이 블로그의 인기 게시물

        [KT 에이블스쿨 - IT 트랜드] 국내외 AI 관련 규제

        KT 에이블스쿨 : 핀테크 아이디어 공모전

        KT 에이블스쿨 : 6-7차 미니프로젝트 - 제안서 기반 솔류션 기획 및 설계