미드저니란 무엇인가?

미드저니(MidJourney)는 인공지능(AI)을 사용하여 텍스트 프롬프트를 기반으로 이미지를 생성하는 혁신적인 도구입니다. 사용자는 간단한 텍스트 설명을 입력하여 고품질의 이미지를 얻을 수 있으며, 이 과정에서 다양한 파라미터를 통해 결과를 세부적으로 조정할 수 있습니다.

 

 

그렇다면 우리는 미드저니를 사용하는 걸까요?

이미지를 생성하는 과정은 고도의 기술과 시간이 요구되는 작업입니다. 전문적인 그래픽 디자인 소프트웨어를 다루기 위해서는 오랜 학습과 실습이 필요하며, 이를 통해 원하는 이미지를 얻기까지 많은 노력이 필요합니다. 또한, 디자인 과정에서 창의적이고 독창적인 결과를 얻기 위해서는 높은 수준의 예술적 감각과 기술이 요구됩니다. 미드저니는 이러한 복잡한 과정을 단순화하여 누구나 쉽게 이미지를 생성할 수 있도록 도와줍니다. 비전문가라도 전문가 수준의 이미지를 빠르고 효율적으로 생성할 수 있으며 특히 창의적인 프로젝트나 마케팅 자료, 개인 블로그와 같은 다양한 용도에서 매우 유용합니다.

 

뿐만 아니라, 비용적인 측면도 미드저니를 사용하는 또다른 이유가 될 수 있습니다. 전문적인 이미지를 얻기 위해 그래픽 디자이너를 고용하는 것은 상당한 비용이 들 수 있습니다. 그러나 미드저니를 사용하면 이러한 비용을 절감할 수 있습니다. 또한, 빠른 결과물을 제공하기 때문에 프로젝트의 전반적인 속도를 높일 수 있어 시간적 비용도 줄일 수 있습니다.

 

미드저니를 사용하는 이유에 대해 생각해보았습니다. 그렇다면 이제 미드저니로 이미지를 생성해볼텐데요. 미드저니는 디스코드 봇으로 운영되는 서비스이며 미드저니의 이미지를 생성하고 관리하는 모든 작업은 디스코드 서버 내에서 이루어집니다. 따라서 디스코드 계정을 먼저

생성해야합니다. 다음 스텝을 따라서 이미지를 생성해봅시다.

 

디스코드 가입하기

 

1. 미드저니를 사용하기 위해서는 디스코드 계정을 생성해야합니다.

  • Sign up 버튼을 클릭하면 하단 이미지와 같이 디스코드 계정에 로그인하라는 팝업이 뜹니다.
  • Google 로그인은 알파테스터 용도이므로 디스코드 계정이 필요합니다.
  • Continue with Discord

디스코드 로그인 페이지

 

디스코드 로그인 > 가입하기

2. 디스코드 로그인

3. 디스코드 미드저니 페이지 접속 (https://discord.com/invite/midjourney)

4. 디스코드 로그인 되어있는 상태에서 접속하면 아래 이미지와 같이 초대 수락하기가 뜹니다.

5. 수락하면 페이지 접속 후 #newbies, #general 와 같은 원하는 스레드(채널)에 입장하여 사용합니다.

6. 결제하기 : 채팅창에 /subscribe 를 치면 봇이 링크를 전달해줍니다. Billing 페이지에서 원하는 플랜을 선택해서 구독하시면 되는데 개인이 사용하기에 Basic Plan으로 결제해도 충분하게 사용할 수 있습니다.

 

미드저니 초대 수락하기

 

미드저니로 이미지 그리기

1. 명령어 /imagine 을 입력 후 뒤에 그리고자하는 그림을 묘사하는 프롬프트를 작성합니다.

 

예) /imagine a beef steak and a shrimp pasta.

 

미드저니로 생성한 이미지

 

프롬프트 작성시 파라미터를 입력하여 상세하게 이미지 조정이 가능하지만 텍스트만으로도 이미지를 생성할 수 있습니다.

 

2. 각 버튼을 클릭하여 새로운 이미지 생성 및 이미지 선택을 합니다.

 

버튼설명

U1(좌측상단) / U2(우측상단)
U3(좌측하단) / U4(우측하단)
해당 이미지를 사용한다는 의미이며 선택 시 해당 이미지를 크게 생성합니다.
리프레시 버튼 동일한 프롬프트로 다른이미지를 생성할 때 사용합니다.
V1(좌측상단) / V2(우측상단)
V3(좌측하단) / v4(우측하단)
해당하는 이미지와 비슷하지만 다른 이미지로 생성할 때 사용합니다.

 

 

 

V3 버튼 클릭 후 생성된 이미지

 

첫 이미지를 선택하기위해 U1 선택 후 이미지를 저장합니다. 복수로 선택이 가능하여 원하는 이미지를 모두 다운로드받을 수 있습니다.

 

3. 이미지를 저장합니다.

 

이렇게 디스코드 가입, 채널 입장, 구독, 프롬프트 명령어 입력, 이미지 선택 후 저장하는 것까지 간단하게 알아보았습니다. 파라미터들을 입력하여 상세하게 이미지를 조정하여 원하는 이미지에 가깝게 이미지를 얻을 수 있습니다. 이번 글에서는 파라미터에 대해 알아보지 않았지만 다음 글에서는 파라미터로 이미지 조정하는 방법까지 알아보도록 하겠습니다.

 

미드저니 문서(도큐먼트)

미드저니에서 제공하는 문서를 참고하였으며 상세하게 작성되어 있어 쉽게 따라하실 수 있습니다.

미드저니 문서 : https://docs.midjourney.com/docs/quick-start

 

 

미드저니 파라미터 설명과 예시

미드저니로 이미지를 생성할 때 사용하는 파라미터를 알아보겠습니다.

파라미터란? 어떤 시스템, 함수, 프로그램 등에서 입력값이나 변수로 사용되어 결과에 영향을 미치는 요소를 의미합니다.

이는 특정 기능을 조정하기 위해 사용되는 설정값이나 구성 요소라고 할 수 있습니다.

 

미드저니의 파라미터

 

미드저니에서의 파라미터는 이미지 생성 요청에 추가하여 결과를 조정하거나 세부 사항을 명시하는 옵션입니다.

파라미터는 항상 프롬프트 끝에 추가하며 여러 개의 파라미터를 동시에 사용할 수 있습니다.

 

파라미터 리스트

미드저니에서 사용할 수 있는 파라미터 중 몇 가지 파라미터에 대해 알아보고 이미지를 생성해보겠습니다.

 

Aspect Ratios (종횡비) : --ar 또는 --aspect

종횡비율을 설정하여 원하는 비율로 이미지를 생성하도록 합니다.

  • 기본 종횡비는 1:1입니다.
  • --ar정수를 사용해야 합니다. 1.39:1 대신 139:100을 사용하세요.
  • 첫 번째 숫자는 너비를 나타내고 두 번째 숫자는 높이를 나타냅니다. 세로(높이) 이미지의 경우 두 번째 숫자가 더 커야 합니다. 가로(넓음) 이미지의 경우 첫 번째 숫자가 더 커야 합니다.
  • 업스케일링 시 일부 종횡비가 약간 변경될 수 있습니다.

예시로 이미지를 생성해보겠습니다.

/imagine a watermelon.

 

 

 

위 이미지처럼 수박 이미지가 생성되었는데 --ar 옵션값을 설정하지 않아서 기본값인 1:1로 이미지가 생성되었습니다.

 

 

 

이번에는 --aspect 파라미터를 설정하여 이미지를 생성해보겠습니다.

 

/imagine a watermelon. --ar 16:9

 

위 이미지처럼 설정한 비율대로 이미지가 생성되었습니다.

 

마찬가지로 다른 비율도 생성할 수 있습니다.

 

미드저니 파라미터 문서 - aspect

 

 

Chaos : --c 또는 --chaos

 

카오스는 혼돈을 뜻합니다. 파라미터에서 카오스는 이미지의 다양성과 창의성에 영향을 미칩니다.

낮은 카오스 설정값은 초기이미지와 유사한 이미지를 생성하며 높은 카오스 설정값은 초기이미지와는 다른 컨셉의 이미지가 생성됩니다.

 

  • 기본 값은 0 입니다.
  • 카오스 값의 범위는 0 - 100 입니다.

--chaos 옵션은 언제 사용하면 좋을까요?

창의적이고 독특한 이미지를 원할 때 : 전통적인 이미지에서 벗어나 색다르고 창의적인 결과를 얻고자 할 때 사용합니다.

아이디어 브레인스토밍 : 다양한 변형을 통해 새로운 아이디어를 얻고 싶을 때 유용합니다.

예상치 못한 요소를 포함하고 싶을 때 : 이미지에 무작위성을 더하여 예상치 못한 요소가 포함된 결과를 얻고자 할 때 사용합니다.

동일한 프롬프트에서 다양한 결과를 원할 때 : 한 가지 주제로 여러 버전의 이미지를 만들어 비교하고자 할 때 사용합니다.

 

창의적이고 예상치 못한 결과를 얻을 수 있는데 이를 통해 다양한 변형을 시도하고 독특한 이미지를 생성할 수 있으며, 창의적인 작업이나 브레인스토밍 과정에서 유용하게 활용될 수 있습니다.

 

/imagine a beach.

 

 

 

위 이미지는 파라미터 설정을 하지 않았기 때문에 카오스 기본값인 0으로 생성된 이미지입니다.

 

우리가 흔히 생각하는 바닷가의 이미지를 묘사했으며 그 분위기가 비슷한 것을 알 수 있습니다.

이번에는 --chaos 파라미터 값으로 바다 예시 이미지를 생성해보겠습니다.

 

/imagine a beach. --c 50

 

미드저니 파라미터 chaos 예제이미지

 

카오스 값 설정범위 중 중간 값인 50으로 설정해보니 각 바다를 묘사했지만 분위기와 색감, 포커스가 다른 것을 알 수 있습니다.

카오스 값을 높게 설정하면 이미지의 다양성과 창의성, 무작위성이 높아져서 선택할 수 있는 범위가 많아지며

아이디어를 얻어야하는 초기단계에서 카오스 설정값을 적절히 설정한다면 유용하게 사용할 수 있을 것 같습니다.

 

 

/imagine a beach. --c 80

 

미드저니 파라미터 chaos 예제이미지

 

카오스 설정값 80은 어떻게 나올지 궁금해서 해봤는데요. 50과는 또 많이 다른 이미지가 생성되었습니다.

설정 값이 높아질수록 이미지들 사이의 묘사하는 방법도 차이가 있지만 보편적으로 생각하는 바닷가의 이미지와도 다르게 해석하여 이미지를 생성해줍니다.

 

미드저니 파마미터 문서 - chaos

 

 

No : --no

이미지에 포함하지 않을 요소, 단어를 나열하여 설정한 내용을 제외하고 이미지를 생성합니다.

텍스트로 이미지에 포함하지 않을 내용을 설정할 수 있습니다. 하지만 미드저니 봇이 이해하는 바가 다를 수 있어 명확한 설정값인 --no 를 사용하는 것이 좋습니다.

  • 쉼표로 구분하여 여러 단어로 입력할 수 있습니다.

--no 옵션은 언제 사용하면 좋을까요?

명확한 주제 설정이 필요할 때 : 이미지의 주제가 분명해야 할 때, 원치 않는 요소가 포함되지 않도록 할 수 있습니다.

혼동을 피하고자 할 때 : 특정 요소가 포함되면 이미지의 주제가 모호해질 수 있는 경우 사용합니다.

정확한 콘셉트 유지 : 광고나 마케팅 이미지처럼 특정 콘셉트를 유지해야 하는 경우 사용합니다.

 

이번에도 예제로 이미지를 생성해보겠습니다.

 

/imagine fruits on the table.

 

미드저니 파라미터 no 예제이미지

 

파라미터값을 입력하지 않았을 때는 다양한 과일종류가 묘사되어 이미지가 생성되었습니다.

여기서 포도와 바나나는 묘사되지 않도록 --no 파라미터 값으로 설정해보겠습니다.

 

/imagine fruits on the table. --no grapes, bananas.

 

미드저니 파라미터 no 예제이미지

 

유사한 이미지가 묘사되었지만 바나나와 포도를 제외한 과일이미지가 생성되었습니다.

--no 옵션은 이미지를 생성할 때 특정 요소를 배제하여 원하는 결과를 더 정확하게 얻기 위한 유용한 도구입니다. 적절히 활용한다면 컨셉에 맞게 원하는 이미지를 생성할 수 있습니다.

 

미드저니 파라미터 문서 - no

'공부 > etc' 카테고리의 다른 글

미드저니 사용법: 미드저니로 AI 그림그리기  (3) 2024.10.03
Big Sur 업데이트 후 git 에러  (0) 2021.08.27

crypto-js 암호화/복호화

 

crypto-js를 사용해서 aes256 암호화/복호화를 해보았다.

처음에는 crypto 라이브러리로 테스트 해보았는데 패딩 적용, 제거가 잘 안되어서 crypto-js로 바꿔서 하니 바로 되었다.

 

crypto-js document는 아래 링크를 참고한다.

https://www.npmjs.com/package/crypto-js

 

crypto-js

JavaScript library of crypto standards.. Latest version: 4.1.1, last published: a year ago. Start using crypto-js in your project by running `npm i crypto-js`. There are 7891 other projects in the npm registry using crypto-js.

www.npmjs.com

 

암호화/복호화에서 사용할 블록은 aes256, 블록 암호화모드는 cbc mode와 pkcs7을 사용했다.

 

var CryptoJS = require("crypto-js");

const key = 'cryptojstest1234cryptojstest1234';
const iv = 'thisis*test#6&78';
const text = '나는 내일 놀러갈거야';

let encodeText = encode(text,key,iv)
console.log(encodeText);
console.log(decode(encodeText,key,iv));

// aes 256 암호화 
function encode(data, key, iv) {
    
    const cipher = CryptoJS.AES.encrypt(data, CryptoJS.enc.Utf8.parse(key), {
        iv: CryptoJS.enc.Utf8.parse(iv),
        padding: CryptoJS.pad.Pkcs7, // 패딩 적용
        mode: CryptoJS.mode.CBC // cbc 모드 
    });

    const encodedData = cipher.toString();
    const encodeURL = encodeURIComponent(encodedData);

    return encodeURL; 
}

// aes 256 복호화 
function decode(data, key, iv) {
    // 데이터 url 디코딩 
    data = decodeURIComponent(data);

    // aes 디코딩
    const cipher = CryptoJS.AES.decrypt(data, CryptoJS.enc.Utf8.parse(key), {
        iv: CryptoJS.enc.Utf8.parse(iv), 
        padding: CryptoJS.pad.Pkcs7, //패딩 제거 
        mode: CryptoJS.mode.CBC 
    });

    let decodedData = cipher.toString(CryptoJS.enc.Utf8);    		

    return decodedData;
    
    
}

 

 

Application Load Balancer 타입으로 생성

콘솔로 생성가능하지만 cli로 생성해보았다.

 

 

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/elbv2/create-load-balancer.htmlhttps://docs.aws.amazon.com/elasticloadbalancing/latest/application/tutorial-application-load-balancer-cli.html

 

create-load-balancer — AWS CLI 2.4.21 Command Reference

The state code. The initial state of the load balancer is provisioning . After the load balancer is fully set up and ready to route traffic, its state is active . If load balancer is routing traffic but does not have the resources it needs to scale, its st

awscli.amazonaws.com

위 aws document 참고하면서 작업 진행하면된다.

 

로드밸런서 생성

aws elbv2 create-load-balancer --name ${loadbalancer-name} --subnets ${subnet-id-1} ${subnet-id-2} --security-groups ${security-group}
  • ${loadbalancer-name} : 생성할 로드밸런서 이름 
  • ${subnet-id-1} / ${subnet-id-2} : 서브넷 아이디 입력, 두 서브넷은 서로 다른 존에 있는 서브넷을 입력
  • ${security-group} : 로드밸런서에 사용할 security group id를 입력

 

명령어 실행하면 아래와 같은 결과가 나오는데 LoadBalancerArn은 뒤에도 사용되기 때문에 따로 저장해두면 콘솔에서 확인하지 않아도 되어서 빨리 생성할 수 있다.

{
    "LoadBalancers": [
        {
            "LoadBalancerArn": "arn:aws:elasticloadbalancing:ap-northeast-2:62...",
            ...
        }
}

 

타겟 그룹 생성

내가 생성할 타겟 그룹

- Target type : instance

- IP address type : ipv4

- Protocol : Port : http 80 포트

aws elbv2 create-target-group --name ${target-group-name} --protocol HTTP --port 80 --vpc-id ${vpc-id}  --ip-address-type ipv4
  • ${target-group-name} : 생성할 target group 이름
  • ${vpc-id} : vpc-id

result : 

{
    "TargetGroups": [
        {
            "TargetGroupArn": "arn:aws:elasticloadbalancing:ap-northeast-2:62..",
            ...   
        }
    ]
}

 

 

로드 밸런서에 https 리스너 생성

내가 생성할 리스너

- Protocol : https

- Type(작업유형) : forward

aws elbv2 create-listener --load-balancer-arn ${load-balancer-arn} --protocol HTTPS --port 443 --certificates CertificateArn=${certificate-arn} --default-actions Type=forward,TargetGroupArn=${target-group-arn}
  • ${load-balancer-arn} : 위에서 로드밸런서 생성 후에 표기된 LoadBalancerArn 입력
  • ${certificate-arn} : AWS Certificate Manager 에서 사용할 certificate arn 입력 (없으면 생성)
  • ${target-group-arn} : 타겟 그룹 생성 후 결과 값에 표기된 TargetGroupArn 입력

 

로드 밸런서에 http port redirct 리스너 생성

이 리스너는 작업하면서 생성해보았던 리스너.

http 특정 포트로 접근했을 때 https로 리다이렉트

aws elbv2 create-listener --load-balancer-arn ${load-balancer-arn} --protocol HTTP --port ${port} --default-actions '{"Type": "redirect", "RedirectConfig": {"Protocol": "HTTPS", "Port": "443", "Host": "#{host}", "Query": "#{query}", "Path": "/#{path}", "StatusCode": "HTTP_301"}}'

 

타겟 그룹에 타겟 인스턴스 등록

aws elbv2 register-targets --target-group-arn ${target-group-arn} --targets Id=${instance-id},Port=${port}
  • ${target-group-arn} : 타겟 그룹 생성 후 결과 값에서 표기된 TargetGroupArn
  • ${instance-id} : 타겟으로 지정할 인스턴스 아이디 
  • ${port} : instance에서 사용한 포트

 

기존에 설치되어있던 jdk 삭제, 자바 삭제

# 설치 확인 
$ ls /Library/Java/JavaVirtualMachines

# JDK 삭제
$ sudo rm -rf /Library/Java/JavaVirtualMachines/jdk-14.jdk
$ sudo rm -rf /Library/Java/JavaVirtualMachines/jdk-15.0.2.jdk

# 자바 삭제
$ sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
$ sudo rm -fr /Library/PreferencesPanes/JavaControlPanel.prefPane

 

 

- jdk 설치 경로 

https://www.oracle.com/kr/java/technologies/javase-downloads.html

 

위 경로에서 설치하면 된다.

 

다운받으려는 버전으로 다운받으면 된다.

- JDK Download 클릭해서 설치.

 

 

여기서 설치하는데 로그인 하라고 되어있어서 귀찮지만 가입하고 다운받음.

 

 

- 설치 확인

jdk 설치경로에 확인해봄.

$ ls /Library/Java/JavaVirtualMachines

 

정상적으로 설치된 걸 확인할 수 있다.

$ java -version

java version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode)

 

 

+ Recent posts