본문 바로가기

전체 글215

프롬프트는 어떻게 이미지로 변환되는가 긍정 프롬프트는 이미지에서 강조해야 할 요소, 부정 프롬프트는 피해야 할 요소이다.  프롬프트는 Positive Prompt에서 Negative Prompt를 뺀 것이다.아니 정확히 말하자면, 긍정 프롬프트에서 부정 프롬프트를 뺐다기 보다는, 둘을 함께 사용하여 원하는 결과를 조정하는 것이다. Prompt는 Conditioning 과정(프롬프트를 기반으로 생성할 이미지를 조정하는 것.)의 영역에 속해 있는 것이다. AI는 텍스트를 직접 이해하는 것이 아니라, 텍스트를 숫자로 변환한 후(이것을 임베딩이라고 함) 이것을 활용한다. 스테이블 디퓨전은 CLIP같은 시스템을 이용해 텍스트 프롬프트를 숫자의 집합, 즉 벡터로 변환한다.자 그럼 어떻게 해야 좋은 프롬프트를 입력할 수 있는가?일관적인 사진이 나올 수 .. 2025. 2. 27.
KSampler의 속성을 알아보자 Seed시드가 뭐냐 씨앗이다 씨앗. 즉 초기값.AI 이미지를 생성하려면 태초부터 랜덤 노이즈가 필요한데, 이 랜덤 노이즈의 초기값이 바로 시드 되시겠다.이 랜덤 노이즈의 초기값을 바탕으로 AI 이미지를 생성한다는 것까지는 모두들 알 것이다동일한 시드 값, 동일한 프롬프트 등 동일한 설정을 사용하면 항상 동일한 결과를 얻을 수 있다.반면 시드 값을 바꾸면 다른 설정이 같아도 매번 다른 결과가 나온다.Control after generate이미지 생성이 끝난 후 특정 특징만 좀더 세밀하게 조정할 때 후처리하는 옵션. before 옵션은 초기 단계에서부터 조건을 반영하도록 설정하는 것.after 옵션은 이미지를 일단 생성시켜놓고 후처리 단계에서 추가로 조건을 반영하도록 설정하는 것. (그냥 after로 놓고 .. 2025. 2. 25.
Stable Diffusion의 다양한 node group들 모델 패치: 이미지 개선. 굉장히 유용하고 디테일을 잡아주는 기능Util: primitive에서 데이터 타입을 정의하고, note에서 메모를 적을 수 있고, reroute로 노드끼리의 길을 이어줄 수 있다.Loaders: 모델을 불러온다.Conditioning: 텍스트 프롬프트를 받고, 받은 프롬프트에 맞춘 조건을 모델에 맞게 변환하는 것이때, 모델에 맞춘 조건을 프롬프트에 맞게 변환으로 오해할 수도 있는데, 아니다. 조건은 프롬프트에다 맞추는 거고. 모델에서 프롬프트로 가는 것 같은 (즉 역순)은 없다.ControlNet을 사용하면 내가 원하는 이미지와 구도가 같은 사진을 추출할 수 있다. 아래는 내가 입력한 사진 / 출력한 사진.Sampling: 노이즈 단계를 제거하면서 내가 원하는 이미지를 만들어주.. 2025. 2. 23.
인공지능으로 만들어내는 사진은 어떤 원리로 작동하는가 사진에 노이즈를 줄 수 있다면, 반대로 노이즈에서 사진을 만들어 낼 수 있다.랜덤한 픽셀 값들(즉 노이즈)에서 시작해서 점차 그 노이즈를 점진적으로 변형해서 이미지를 만들어내는 것이다.그게 이미지 복원이라고 착각할 수도 있는데 이미지 복원과는 아예 다른 로직이다이미지 복원은 뭐냐. 이미지에 존재했던 정보나 패턴을 기반으로 흐릿하거나 손상된 부분을 원본에 가까운 형태로 돌리는 것이고AI 생성 이미지는 처음부터 아무 정보가 없는 랜덤한 값 즉 노이즈를 시작점으로 점차적으로 의미있는 형태로 만들어 나가는 것.이미지 복원은 애초에 원본 이미지가 있지만 AI 생성 이미지는 원본 이미지가 없다가 AI가 만들어낸다는 점이 다른 점 되시겠다. 이 AI 이미지 생성 과정에서는 각각의 인공지능 모델들이 각 과정을 담당한다.. 2025. 2. 22.
LV2 :: 행렬의 곱셈 https://school.programmers.co.kr/learn/courses/30/lessons/12949 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr function solution(arr1, arr2) { return arr1.map((row, i) => arr2[0].map((_, j) => row.reduce((sum, val, k) => sum + val * arr2[k][j], 0) ) );} 2025. 2. 21.
LV.2 :: 할인 행사 https://school.programmers.co.kr/learn/courses/30/lessons/131127 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krfunction solution(want, number, discount) { let answer = 0; // 원하는 제품과 수량을 Map으로 저장 const wantedItems = new Map(); for (let i = 0; i 2025. 2. 21.
LV.2 :: 괄호 회전하기 https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krfunction solution(s) { // 올바른 괄호 문자열인지 확인하는 함수 const isValid = (str) => { const stack = []; const pair = { ')': '(', '}': '{', ']': '[' }; for (const char of str) { if (char in pair) { if (!stack.le.. 2025. 2. 21.
LV.2 :: 귤 고르기 https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr function solution(k, tangerine) { const countMap = new Map(); // 개수 카운팅 for (const t of tangerine) { countMap.set(t, (countMap.get(t) || 0) + 1); } // 개수를 기준으로 내림차순 정렬 const sortedCounts = [...countMap.values()].sort((a, b) .. 2025. 2. 21.
2025년 1월 개발 회고 서버 사이드 렌더링을 했다..SCSS를 했다..Zoom이라는 라이브러리를 사용해 사진 확대 기능을 구현했다..textSlicer라는 함수를 만들어서 글자 수를 45글자로 제한하는 기능을 구현했다..MUI의 Accordion을 사용해서 여닫히는 컴포넌트를 구현했다..useEffect의 의존성 배열을 손봐서, 다른 탭으로 갔다와도 정보가 사라지지 않게끔 했다if (!isNaN(parsedValue) && parsedValue .filter와 .some을 활용해 배열의 원소들을 비교하고 필터링했다..이상이다... 벌써 내가 1년 4개월차다.. 시간 빠르다............... 2025. 2. 18.
2024년 11월~12월 개발 회고 - lighthouse 개선- 콘솔에 뜨는 에러 없애기 (Next.js의 현 버전과 맞지 않는다거나, map에 key없다거나 등등)- 기본 세팅 입력을 라디오 버튼 클릭 형태로 받아 그걸 JSON형태로 콘솔에 찍기- JSON 형태로 받은 입력 값을 화면에 예쁘게 렌더링하기- 더미데이터로 우선 디자인대로 구현하고 리얼 데이터 집어넣기 2025. 1. 7.
2024년 9월~10월 개발 회고 로직 개선, 오류 해결, 미디어 쿼리만 계속 해서 이번달과 저번달은 진짜 쓸게 거의 없다  태그를 사용해 i18n 라이브러리를 사용하면서도 글자에 색깔 다르게 입히기SEO를 위해 router.push를 Next Link로 바꾸기QRCode 라이브러리를 사용해 링크를 qrcode로 만들기 2024. 10. 31.
LV.2 :: 주식 가격 https://school.programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krfunction solution(prices) { var answer = []; for (let i = 0; i 2024. 10. 21.
LV.2 :: n^2 배열 자르기 https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr function solution(n, left, right) { const result = []; for (let i = left; i 비추천하는 방식. 모든 배열을 다~ 구한 다음에 slice하는 방식인데, 이 경우 필요없는 부분을 너무 많이 구해버려서 런타임 에러가 난다.효율적이지도 않은 코드. 여기서 한참 헤맸는데 방법 자체를 바꿔야 통과할 수 있다.function soluti.. 2024. 10. 21.
LV.2 :: 기능개발 https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krfunction solution(progresses, speeds) { let workingDays = 0; // 일하는데 걸리는 날의 수 let workFinishTime = []; // 일하는데 걸리는 날의 수의 집합 for (let i=0; i= workFinishTime[day+1]) { if (day !== workFinishTime.length - .. 2024. 10. 21.
LV.2 :: 예상 대진표 https://school.programmers.co.kr/learn/courses/30/lessons/12985 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr function solution(n, a, b) { var answer = 0; // a와 b가 같아질 때까지 계속 반복 while (a !== b) { // a와 b를 각각 2로 나눈 몫을 구하고, 반올림 a = Math.ceil(a / 2); b = Math.ceil(b / 2); answer++; // 라운드 카운트 증가 }.. 2024. 10. 21.
LV.2 :: 멀리 뛰기 https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr   function solution(n) { const distance = [1, 1, 2]; for (let i = 3; i 2024. 10. 21.
LV.2 :: 영어 끝말잇기 https://school.programmers.co.kr/learn/courses/30/lessons/12981 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr function solution(n, words) { let answer = []; let seenWords = []; // 단어 기록을 위한 배열 for (let i = 0; i 0 && words[i - 1].slice(-1) !== words[i].slice(0, 1)) { answer.push((i % n) + 1); // 1-indexed 사람 번호 .. 2024. 10. 21.
LV.2 :: N개의 최소공배수 https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr function solution(arr) { let answer = arr[0]; // 첫 번째 값을 초기값으로 설정 for (let i = 1; i 2024. 10. 21.