πŸ’» ν”„λ‘œμ νŠΈ/🧸 TOY-PROJECTS

[DeepLook] 6. μ΅œμ’… κ²°κ³Όλ¬Ό, 이후 μ—λŸ¬ 핸듀링과 마무리

2023. 6. 21. 04:32
λͺ©μ°¨
  1. μ΅œμ’… 배포 링크 
  2. μ—λŸ¬ 핸듀링
  3. 1. 413 μ—λŸ¬
  4. 2. base64 인코딩 μ—λŸ¬
  5. 마무리

μ΅œμ’… 배포 링크 

https://deep-look.vercel.app


μ—λŸ¬ 핸듀링

λ°±μ—”λ“œμ— 연결을 λ§ˆμ³€μ„ λ•Œμ―€, λ°±μ—”λ“œμ™€ ν”„λ‘ νŠΈμ—”λ“œ μž‘μ—…μ΄ λͺ¨λ‘ μ™„λ£Œλ˜μ—ˆλ‹€.

κ·ΈλŸ¬λ‚˜, λͺ¨λΈμ— 사진을 μ—…λ‘œλ“œ ν•˜λŠ” λΆ€λΆ„μ—μ„œ 계속 잘 μ—…λ‘œλ“œκ°€ λ˜μ§€ μ•Šμ•„ λ‹€μŒκ³Ό 같은 μ—λŸ¬λ“€μ΄ λ°œμƒν–ˆλ‹€. 

 

1. 413 μ—λŸ¬

μ²«λ²ˆμ§ΈλŠ”, 이미지 μ—…λ‘œλ“œ μ‹œ, base64둜 인코딩 된 값이 μ „μ†‘λ˜λ©΄μ„œ λ°œμƒν•œ 413 μ—λŸ¬μ˜€λ‹€. 413 μ—λŸ¬λŠ” 많이 λ³Έ κ²½ν—˜μ΄ μ—†λ˜ 터라, μ„œμΉ­ν•΄ λ³΄μ•˜λŠ”λ°, ν•΄λ‹Ή μ—λŸ¬κ°€ λ°œμƒν•œ μ΄μœ λŠ” 이미지가 λ„ˆλ¬΄ μ»ΈκΈ° λ•Œλ¬Έμ΄μ—ˆλ‹€.

Nginxμ—μ„œ 기본적으둜 μš”μ²­ μ—”ν‹°ν‹°μ˜ ν¬κΈ°λŠ” 1MB둜 μ œν•œμ΄ λ˜μ–΄ 있기 λ•Œλ¬Έμ—, 1MBκ°€ λ„˜λŠ” 이미지λ₯Ό μ—…λ‘œλ“œν–ˆμ„ λ•Œ 413 μ—λŸ¬κ°€ λ°œμƒν–ˆλ˜ 것이닀.

이에, μ΅œλŒ€ 50MBκΉŒμ§€ μ—…λ‘œλ“œν•  수 μžˆλ„λ‘ nginx 섀정을 λ³€κ²½ν–ˆλ‹€.

http {
  client_max_body_size 50M;
  ...
}

2. base64 인코딩 μ—λŸ¬

client μΈ‘μ—μ„œ 이미지λ₯Ό μ—…λ‘œλ“œν•  λ•Œ, μ–΄λ–€ μ΄μœ μ—μ„œμ˜€λŠ”μ§€ 계속 CORS μ—λŸ¬κ°€ λ°œμƒν–ˆλ‹€.

κ·Έλž˜μ„œ μ—…λ‘œλ“œ μ‹œ μž‘μ„±λœ api μ½”λ“œλ₯Ό λ³΄μ•˜λ”λ‹ˆ, λ‹€μŒκ³Ό κ°™μ•˜λ‹€.

export const predictAPI = {
  POST_PREDICT: async (image: string, accessToken: string): Promise<any> => {
        // console.log(image);

        const base64Data = image.split(',')[1];
        const formData = new FormData();
        formData.append('image', base64Data);
        const response = await client.post(`/predict`, formData, {
            headers: {
                JWT: `${accessToken}`,
                'Content-Type': 'multipart/form-data',
            },
        });

        return response.data;
	};

export default predictAPI;

ν•΄λ‹Ή μ½”λ“œλŠ” test에 μ‹€νŒ¨ν•΄λ„ μ˜ˆμ™Έ 없이 결과값을 λ°˜ν™˜ν–ˆκ³ , 이후 ν”„λ‘ νŠΈ μΈ‘μ—μ„œλŠ” 결괏값이 λ‚˜μ˜€λ©΄ λ‹€λ₯Έ νŽ˜μ΄μ§€λ‘œ λ„˜μ–΄κ°€λ„λ‘ μ„€κ³„ν–ˆκΈ° λ•Œλ¬Έμ— 결괏값이 μ—†λŠ” μ±„λ‘œ κ²°κ³ΌνŽ˜μ΄μ§€λ‘œ μ΄λ™ν•˜λŠ” μ—λŸ¬κ°€ λ°œμƒν–ˆλ‹€. 이에 λ‚˜λŠ” μ½”λ“œλ₯Ό λ‹€μŒκ³Ό 같이 λ³€κ²½ν–ˆλ‹€

export const predictAPI = {
  POST_PREDICT: async (image: string, accessToken: string): Promise<any> => {
    // console.log(image);

    const base64Data = image.split(',')[1];
    const formData = new FormData();
    formData.append('image', base64Data);
    try {
      const response = await client.post(`/predict`, formData, {
        headers: {
          JWT: `${accessToken}`,
          'Content-Type': 'multipart/form-data',
        },
      });

      //   console.log(response);
      return { isSuccess: response.data.isSuccess, data: response.data };
    } catch (err: any) {
      //   console.log(err.response.data);
      return { isSuccess: err.response.data.isSuccess, data: err.response.data.message };
    }
  }
}

μ΄λ ‡κ²Œ, ν…ŒμŠ€νŠΈκ°€ μ‹€νŒ¨ν•˜μ—¬ μ—λŸ¬κ°€ λ°œμƒν–ˆμ„ 경우, μžλ™μ μœΌλ‘œ reloadν•˜μ—¬ λ‹€μ‹œ ν…ŒμŠ€νŠΈν•  수 있게 λ‘œμ§μ„ λ³€κ²½ν–ˆλ‹€.


마무리

μ΄λ ‡κ²Œ, μ•½ 2κ°œμ›” κ°„ 처음 μ‹œλ„ν•΄λ³Έ ai ν”„λ‘œμ νŠΈκ°€ 끝났닀. λ¬Όλ‘  chatGPT의 도움을 많이 λ°›μ•˜μ§€λ§Œ, 처음으둜 데이터λ₯Ό μˆ˜μ§‘ν•˜μ—¬ μ „μ²˜λ¦¬ν•˜κ³ , 직접 ν•™μŠ΅μ‹œμΌœ λ°±μ—”λ“œκΉŒμ§€ μ—°κ²°ν•΄ λ΄€λ‹€λŠ” μ μ—μ„œ 정말 λΏŒλ“―ν–ˆλ˜ ν”„λ‘œμ νŠΈμ˜€λ˜ 것 κ°™λ‹€.

 

λ‹€λ§Œ μ™œμΈμ§€ vision λΆ„μ•Όμ—μ„œ κΈ°λŒ€ν–ˆλ˜ 재미(?)κ°€ λŠκ»΄μ§€μ§€ μ•Šμ•˜λ‹€. λ„ˆλ¬΄ κΈ‰ν•˜κ²Œ ν•΄μ„œμΈμ§€, λ‚΄κ°€ 정말 vision 뢄야에 관심이 μ—†λŠ” 것인지 μž˜μ€ λͺ¨λ₯΄κ² μ§€λ§Œ, λ‹€λ₯Έ λΆ„μ•Όμ˜ ν”„λ‘œμ νŠΈλ„ ν•œλ²ˆ 해보고 μ‹Άμ–΄μ‘Œλ‹€.

μ•„λ¬΄νŠΌ 우리 νŒ€μ›λ“€ λͺ¨λ‘ κ³ μƒν–ˆλ‹€ !!!

'πŸ’» ν”„λ‘œμ νŠΈ > 🧸 TOY-PROJECTS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[ν† μ΄ν”„λ‘œμ νŠΈ-곡감 챗봇] ν”„λ‘œμ νŠΈ κ°œμš”  (0) 2023.07.05
[DeepLook] 5. λ°±μ—”λ“œ μ—°κ²°  (0) 2023.06.21
[DeepLook] 4. λͺ¨λΈ μ„ μ • 및 ν•™μŠ΅  (0) 2023.06.21
[DeepLook] 3. μ „μ²˜λ¦¬ (haar-cascade μ•Œκ³ λ¦¬μ¦˜)  (0) 2023.06.20
[DeepLook] 2. AI μž‘μ—… 섀계 κ³Όμ • / 크둀링  (0) 2023.06.20
  1. μ΅œμ’… 배포 링크 
  2. μ—λŸ¬ 핸듀링
  3. 1. 413 μ—λŸ¬
  4. 2. base64 인코딩 μ—λŸ¬
  5. 마무리
'πŸ’» ν”„λ‘œμ νŠΈ/🧸 TOY-PROJECTS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [ν† μ΄ν”„λ‘œμ νŠΈ-곡감 챗봇] ν”„λ‘œμ νŠΈ κ°œμš”
  • [DeepLook] 5. λ°±μ—”λ“œ μ—°κ²°
  • [DeepLook] 4. λͺ¨λΈ μ„ μ • 및 ν•™μŠ΅
  • [DeepLook] 3. μ „μ²˜λ¦¬ (haar-cascade μ•Œκ³ λ¦¬μ¦˜)
μž₯μ˜μ€€
μž₯μ˜μ€€
groomielife
μž₯μ˜μ€€
youngjangjoon
μž₯μ˜μ€€
전체
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기 (35)
    • πŸ“š λ…Όλ¬Έ (10)
    • πŸ’» ν”„λ‘œμ νŠΈ (14)
      • πŸŽ“ RESUMAI (6)
      • 🧸 TOY-PROJECTS (8)
    • πŸ“š μŠ€ν„°λ”” (11)
      • CS224N (6)
      • NLP (5)

인기 κΈ€

νƒœκ·Έ

  • MTP-CL
  • rag
  • 생성AI
  • NLP
  • dj-rest-auth
  • gpt-1
  • GenAI
  • μžμ†Œμ„œμƒμ„±ν”„λ‘œμ νŠΈ
  • project
  • DEEPALIGNED
  • 비동기 μ €μž₯
  • Haar-cascade
  • vectordb
  • pinecone
  • cv
  • allauth
  • NeuralNet
  • Conversational Agent
  • μžκΈ°μ†Œκ°œμ„œμƒμ„±
  • ArcFace
  • text embedding
  • RESUMAI
  • CS224N
  • Representation Training
  • DEEPLOOK
  • text clustering
  • contrastive learning
  • Neural Net
  • story discovery
  • λ…Όλ¬Έ
hELLO Β· Designed By μ •μƒμš°.
μž₯μ˜μ€€
[DeepLook] 6. μ΅œμ’… κ²°κ³Όλ¬Ό, 이후 μ—λŸ¬ 핸듀링과 마무리
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”

단좕킀

λ‚΄ λΈ”λ‘œκ·Έ

λ‚΄ λΈ”λ‘œκ·Έ - κ΄€λ¦¬μž ν™ˆ μ „ν™˜
Q
Q
μƒˆ κΈ€ μ“°κΈ°
W
W

λΈ”λ‘œκ·Έ κ²Œμ‹œκΈ€

κΈ€ μˆ˜μ • (κΆŒν•œ μžˆλŠ” 경우)
E
E
λŒ“κΈ€ μ˜μ—­μœΌλ‘œ 이동
C
C

λͺ¨λ“  μ˜μ—­

이 νŽ˜μ΄μ§€μ˜ URL 볡사
S
S
맨 μœ„λ‘œ 이동
T
T
ν‹°μŠ€ν† λ¦¬ ν™ˆ 이동
H
H
단좕킀 μ•ˆλ‚΄
Shift + /
⇧ + /

* λ‹¨μΆ•ν‚€λŠ” ν•œκΈ€/영문 λŒ€μ†Œλ¬Έμžλ‘œ 이용 κ°€λŠ₯ν•˜λ©°, ν‹°μŠ€ν† λ¦¬ κΈ°λ³Έ λ„λ©”μΈμ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.