참고: https://forum.faceswap.dev/viewtopic.php?t=2748 

1. 인스톨 스크립트 다운로드
:https://github.com/deepfakes/faceswap/releases/latest/download/faceswap_setup_macos.sh)

2. 해당 스크립트가 있는 곳에서 터미널 실행 및 해당 스크립트 실행

bash ./faceswap_setup_macos.sh

3. 각 항목 진행

Enter

"YES" 입력

Enter

"YES" 입력

Enter

Enter

"자신에 해당하는 번호" 입력(내 경우 1)

"YES" 입력

"yes" 입력

"자신의 MacOS 비밀번호" 입력

설치 완료

Desktop에서 해당 아이콘 확인

블로그 이미지

RIsN

,

인공지능의 세계는 끊임없이 진화하고 있으며, OpenAI API는 그 선두에 있습니다. 기술이 더욱 정교해짐에 따라, 개발자와 열정가들은 다양한 응용 분야에서 그 잠재력을 이해하고 활용할 필요가 있습니다.

우리는 freeCodeCamp.org 유튜브 채널에서 OpenAI API 강좌를 발표했습니다. 이 포괄적인 비디오 강좌에서는 유명한 소프트웨어 개발자이자 강좌 크리에이터인 Ania Kubow가 OpenAI API의 매혹적인 세계로 안내합니다. 5개의 매력적인 프로젝트를 통해, ChatGPT 클론, DALL-E 이미지 생성기, SQL 생성기 등을 만들면서 배울 수 있습니다.

이 강좌에는 다음과 같은 섹션이 포함되어 있습니다.

소개

강좌는 OpenAI API와 그 잠재적인 응용 분야에 대한 문맥과 이해를 제공하는 인상 깊은 소개로 시작합니다.

인증

OpenAI API와 작업하는 데 중요한 측면인 API 인증 프로세스의 기본 원리를 알아봅니다.

모델

OpenAI 생태계 내에서 사용 가능한 다양한 모델을 탐색하고, 프로젝트에 가장 적합한 모델을 선택하는 방법을 배웁니다.

텍스트 완성

챗봇, 콘텐츠 생성기 등을 만드는 데 사용할 수 있는 텍스트 완성 기술을 마스터합니다.

효과적인 프롬프트 생성

의미 있는 결과를 얻기 위해 필수적인 기술인 효과적인 프롬프트 생성 과정을 탐구합니다.

챗 완성

채팅 완성 기술과 인터랙티브하고 동적인 애플리케이션을 만드는 방법을 알아봅니다.

챗 완성 프로젝트

자바스크립트, 리액트, 노드.js를 사용하여 두 개의 챗 완성 프로젝트를 직접 만들어봅니다.

DALL-E 모델

텍스트 설명을 기반으로 이미지를 생성할 수 있는 혁신적인 DALL-E 모델을 탐색합니다.

이미지 생성

OpenAI API를 사용하여 멋진 시각화를 만들기 위해 이미지 생성의 복잡성을 배우고 이미지 변형 및 편집을 포함합니다.

이미지 생성 프로젝트

JavaScript, React, Node.js 및 openai npm 라이브러리를 사용하여 DALL-E 모델의 이해를 확실히 하기 위해 두 개의 이미지 생성 프로젝트를 만들어봅니다.

SQL 생성기 프로젝트

TypeScript 및 Node.js를 사용하여 새롭게 습득한 지식을 적용하여 SQL 생성기 프로젝트를 만듭니다.

OpenAI API의 이해도를 높이고 놀라운 잠재력을 활용하는 이 기회를 놓치지 마세요. Ania Kubow의 전문적인 안내와 실전 프로젝트로 장착되어 짧은 시간 내에 강력한 애플리케이션을 만들 수 있습니다.

전체 강좌를 **freeCodeCamp.org 유튜브 채널**에서 시청하세요. (5시간)

 


원문: https://www.freecodecamp.org/news/chatgpt-course-use-the-openai-api-to-create-five-projects/

블로그 이미지

RIsN

,

'할루시네이션'은 AI가 부정확한 데이터를 기반으로 정확한 것처럼 보이는 오류를 내놓는 현상을 설명합니다.
이러한 현상은 ChatGPT와 같은 챗봇에서 발생할 수 있으며, 이는 모델이 불분명한 출처나 낮은 신뢰도의 데이터를 학습하기 때문입니다.
그 결과, 챗봇은 합리적이고 그럴듯한 답변을 생성할 수 있지만, 사용자는 잘못된 정보와 인사이트를 받아들여 옳지 않은 결정을 내릴 수 있습니다.

AI 환각 현상은 허위 정보, 조작된 내용, 그리고 젠더와 인종 편견과 같은 부정확한 정보의 확산과 재생산 가능성을 드러냅니다.
이러한 문제를 해결하기 위한 방안 중 하나로, AI 기술에 대한 규제를 도입하는 것이 거론되고 있습니다.
이렇게 함으로써 AI 기술의 발전에 따른 부작용을 최소화하고, 정확한 정보 전달을 보장하는데 도움이 될 것입니다.

블로그 이미지

RIsN

,

ML-Agents란?

Machine Learning Agents로 말 그대로 머신러닝을 시키는 API라고 이해하고 있음
Python을 사용, Unity에 접목 가능

진행과정

<시작>

  1. 새로운 Unity3D 프로젝트(RollerBall00)를 만든다.
  2. 유니티 패키지를 열어서 ML-Agents를 추가한다.
    1. Window -> Package Manager -> ML Agents(당시 실험 버전 1.0.6) Install

<오브젝트 환경 설정>

  1. SampleScene의 이름을 RollerBallA로 변경한다.
    1. Scene의 이름이 중요한가 확인 중
  2. 새 GameObject : TrainingArea 추가한다.
  3. TrainingArea 오브젝트 밑에 바닥을 추가한다.
    1. 3D Object > Plane
    2. 이름은 Floor
    3. 한 번 Reset
  4. TrainingArea 오브젝트 밑에 타겟이 될 Cube를 추가한다.
    1. 3D Object > Cube
    2. 이름은 Target
    3. 한 번 Reset하고 Position을 변경 : (3, 0.5, 3)
  5. TrainingArea 오브젝트 밑에 장애물이 될 Cube를 추가한다.
    1. 3D Object > Cube
    2. 이름은 Hurdle
    3. 한 번 Reset하고 Position을 변경 : (1.5, 0.5, 1.5)
    4. 장애물 테스트 중
  6. TrainingArea 오브젝트 밑에 이제 지가 알아서 학습할 녀석인 Sphere를 추가한다.
    1. 3D Object > Sphere
    2. 이름은 RollerAgent
    3. 한번 Reset하고 Position을 변경 : (0, 0.5, 0)
    4. Component 추가 : Rigidbody

<스크립트 설정>

  1. Scripts 폴더를 만들고 RollerAgent 스크립트를 그 속에 만든다.
  2. 이것을 구인 RollerAgent에 부착
  3. RollerAgent 편집
    •  

      using System.Collections;
      using System.Collections.Generic;
      using UnityEngine;
      
      // : MLAgent 사용
      using Unity.MLAgents;
      using Unity.MLAgents.Sensors;
      
      public class RollerAgent : Agent
      {
          // : 1 Start
          Rigidbody rBody;
          void Start()
          {
              rBody = this.GetComponent<Rigidbody>();
          }
      
          // : Episode가 시작할 때마다 상황 변경
          public Transform target;
          public Transform hurdle;
          public override void OnEpisodeBegin()
          {
              // : 떨어졌을 때 속도 및 위치 초기화
              if(this.transform.localPosition.y < 0)
              {
                  this.rBody.angularVelocity = Vector3.zero;
                  this.rBody.velocity = Vector3.zero;
                  this.transform.localPosition = new Vector3(0, 0.5f, 0);
              }
      
              // : 타깃 위치 변경
              target.localPosition = this.GetRandomPosition(this.transform.localPosition);
              // : 장애물 위치 변경
              hurdle.localPosition = this.GetRandomPosition(this.transform.localPosition);
          }
      
          // : 관찰 스테이터스 결정
          public override void CollectObservations(VectorSensor sensor)
          {
              // :: 포지션
              sensor.AddObservation(this.transform.localPosition);
              sensor.AddObservation(this.target.localPosition);
              sensor.AddObservation(this.hurdle.localPosition);
      
              // :: 속도
              sensor.AddObservation(rBody.velocity.x);
              sensor.AddObservation(rBody.velocity.z);
          }
      
          // : 행동 에피소드 결정
          public float forceMultiplier = 10;
          public override void OnActionReceived(float[] vectorAction)
          {
              // :: 행동할 액션은 2가지 x 이동과 z 이동
              Vector3 controlSignal = Vector3.zero;
              controlSignal.x = vectorAction[0];
              controlSignal.z = vectorAction[1];
              rBody.AddForce(controlSignal * this.forceMultiplier);
      
              // :: 거리 측정
              float distanceToTarget = Vector3.Distance(this.transform.localPosition, this.target.localPosition);
              float distanceToHurdle = Vector3.Distance(this.transform.localPosition, this.hurdle.localPosition);
      
              // : 보상
              if(distanceToTarget < 1.42f)
              {
                  Debug.Log("+1");
                  this.SetReward(1.0f);
                  this.EndEpisode();
              }
      
              // : 벌
              else if(distanceToHurdle < 1.42f)
              {
                  Debug.Log("-1");
                  this.SetReward(-0.5f);
                  this.EndEpisode();
              }
      
              // : 떨어졌을 때
              else if(this.transform.localPosition.y < 0)
              {
                  this.EndEpisode();
              }
          }
      
          // : 키보드 조작
          public override void Heuristic(float[] actionsOut)
          {
              actionsOut[0] = Input.GetAxis("Horizontal");
              actionsOut[1] = Input.GetAxis("Vertical");
          }
      
          // : Get
          private Vector3 GetRandomPosition(Vector3 exceptPosition)
          {
              // :: Set
              Vector3 position = new Vector3(Random.value * 8 - 4, 0.5f, Random.value * 8 - 4);
      
              // :: 중복이 발생하지 않도록
              float distance = Vector3.Distance(exceptPosition, position);
              while(distance <= 1f)
              {
                  position = new Vector3(Random.value * 8 - 4, 0.5f, Random.value * 8 - 4);
                  distance = Vector3.Distance(exceptPosition, position);
              }
      
              return position;
          }
      }
  4. RollerAgent 스크립트에 Target과 Hurdle 오브젝트를 연결 
  5. RollerAgent 오브젝트에 Add Component로 Decision Requester 추가
    1. Decision Period는 10으로 설정
  6. RollerAgent 오브젝트에 Add Component로 Behavior Parameter 추가
    1. Behavior Name은 RollerBall
    2. Vector Observation > Space Size 는 11로 변경
    3. Vector Action > Space Type을 Continuous로 변경
    4. Vector Action > Space Size는 2로 변경

<트레이닝 설정>

  1. Python, pip3, MLAgents 등의 설치 : 생략(나중에 기회되면 추가)
  2. MLAgents 클로닝(github.com/Unity-Technologies/ml-agents)
  3. MLAgents 의 config 폴더 밑에 rollerball_config.yaml 생성
    • UTF-8 with BOM으로 되어 있으면 UTF-8로 변경
    • behaviors:
        RollerBall:
          trainer_type: ppo
          hyperparameters:
            batch_size: 10
            buffer_size: 100
            learning_rate: 3.0e-4
            beta: 5.0e-4
            epsilon: 0.2
            lambd: 0.99
            num_epoch: 3
            learning_rate_schedule: linear
          network_settings:
            normalize: false
            hidden_units: 128
            num_layers: 2
          reward_signals:
            extrinsic:
              gamma: 0.99
              strength: 1.0
          max_steps: 500000
          time_horizon: 64
          summary_freq: 10000
  4. 터미널로 해당 config 폴더로 가서 MLAgents 실행
    1. 명령어 : mlagents-learn rollerabll_config.yaml --run-id=firstRollerBall00
    2. 2번째 테스트부터는 ID 변경하면 됨
  5. 배우는 것을 본다
    1. https://youtu.be/bdBM4BFAd0E
    2. ML-Agents 롤러볼 머신러닝 중
  6. 결과물(Result 폴더에 있는 것)을 유니티에 넣는다.
    1. RollerBall.onmx
  7. RollerAgent 오브젝트의 Behavior Parameters의 Model에 해당 RollerBall.onmx를 추가
  8. 결과 확인(30만번 돌렸을 때)
    1. youtu.be/TL0kVnCFEnk

 

블로그 이미지

RIsN

,