jsup.GEN - AI를 이용한 이미지 -> 이미지 생성 검토

Image
by joviansummer original STEEMIT post: https://steemit.com/blog/@joviansummer/4dl3wg-jsup-gen-ai jsup.GEN 실험 - 스팀잇에서 AI 기반 이미지 생성 현재 jsup.GEN 서비스는 텍스트 프롬프트(prompt)로부터 이미지를 생성하는 기능을 가지고 있습니다. 이것은 나름 흥미로운 기능이긴 하나, 영문으로 다수의 키워드를 입력해서 원하는 이미지를 구체적으로 설명해야 하기 때문에 생각하는 결과물을 만들어 내기가 그리 쉽진 않습니다. 따라서, 이미 존재하는 이미지를 기준으로 삼아서 특정한 스타일의 이미지를 생성하는 기능이 효용성 측면에서는 좀 더 우수할 것 같습니다. 이미지로부터 이미지를 생성하는 기능을 검토하고 있는데, 2가지 방법을 생각하고 있습니다. 첫번째 방법은 아래와 같이 2개의 명령어를 구현하는 것입니다. !gen_t : 이 명령어는 텍스트 프롬프트에 더 비중을 두고 이미지를 생성합니다. 입력하는 이미지를 기준으로 삼지만 텍스트 프롬프트로 지정한 내용의 영향이 크게 작용합니다. !gen_i : 이 명령어는 입력 이미지에 더 비중을 두고 이미지를 생성합니다. 따라서 출력 이미지는 입력 이미지와 매우 비슷하며 텍스트 프롬프트에 의해 약간의 수정이 가해진 형태로 생성됩니다. 두번째 방법은 !gen_i 명령어 하나만 제공하고, 위의 2개 명령어 사이의 적당한 중간 지점의 비중을 찾아서 설정하는 것입니다. 어떤 방법을 선택해서 사용하던지 실험을 좀 많이 해 봐야 될 것으로 보입니다. AI쪽에 익숙하지 않아 생소하다는 문제도 있고 아직 작업이 많이 진행되지 않았기 때문에, 실제로 이 명령어들을 성공적으로 구현할 수 있을지 어떨지는 확실치 않습니다. 그러나 어쨌든 작업은 시간이 나는대로 계속 진행해 보려고 합니다. 감사합니다. @joviansummer의 스팀 프로젝트 스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다. ( h...

파이썬에서 작업 실행에 시간제한(timeout) 설정하기 - signal.alarm()

by joviansummer
original STEEMIT post: https://steemit.com/blog/@joviansummer/timeout-signalalarm


파이썬에서 특정 작업을 실행할 때 일정 시간내에 완료되지 않으면 예외를 발생시킬 수 있습니다. 어떤 작업이 대해 시간을 제한하고 싶을 때 사용할 수 있겠습니다. try/except 구문과 signal.alarm() 함수를 이용합니다. 예제 코드는 아래와 같습니다.

import time
import signal
import traceback

# 알람 처리 함수
def alarm_handler(signum, frame):
  # 예외 발생시키기
  raise Exception("시간 초과")

# 루프 함수 (n초 동안 대기)
def loop_func(num):
  for i in range(num):
    print(i)
    time.sleep(1)

# alarm signal이 발생할 경우 처리할 함수 지정
signal.signal(signal.SIGALRM, alarm_handler)

try:
  # 5초 동안 작업이 완료되지 않으면 예외 발생
  signal.alarm(5)
  # 함수 호출
  loop_func(10)
except:
  print("예외 발생")
  traceback.print_exc

# 시간 제한 해제
signal.alarm(0) 

위의 예시를 보면 5초안에 작업이 완료되지 않으면 예외를 발생하도록 한 후, loop_func 함수를 호출하여 10초 동안 대기하도록 했습니다. 따라서 5초후에 예외가 발생하게 됩니다. 만약 예를 들어 3초 동안 대기하도록 loop_func 함수의 인자를 3으로 지정하여 호출했다면 예외 발생이 없이 정상적으로 완료될 것입니다.

여기서 유의할 점이 있는데, signal.alarm()에 대한 처리 함수를 만들고 이 함수를 이용해서 예외를 발생시키도록 해 주어야 합니다. 위의 코드에서는 alarm_handler() 함수를 만들고 signal.signal() 함수에서 해당 함수를 지정해 주었습니다. 이렇게 하지 않으면 알람이 발생하는 시점에서 프로그램이 그대로 종료되므로, 위와 같이 별도의 함수를 지정하여 예외를 발생시키도록 해 줍니다.

또 한가지 유의할 점이 있습니다. 시간제한을 적용하고 싶은 작업이 완료되었으면 시간 제한을 해제해 주어야 합니다. signal.alarm() 함수에서 인자를 0으로 지정하면 됩니다. 해제하지 않으면 이후 다른 작업을 진행하는 도중에 제한 시간이 만료되어 예외가 발생할 수 있습니다.

이와 관련된 문서는 아래의 링크에 있습니다.

https://docs.python.org/ko/3.8/library/signal.html

https://docs.python.org/3/library/signal.html


@joviansummer의 스팀 프로젝트

스팀 증인노드를 운영중입니다. @jswit에 증인투표해 주시면 감사하겠습니다.
(https://steemitwallet.com/~witnesses)

jswit 증인 노드 프로젝트를 시작합니다.

jsup 업보팅(upvoting) 서비스 소개

jsup 수혜자 지정 기능 추가

jSTEEM 프로젝트 - 텔레그램 챗봇으로 구현하는 스팀 블럭체인 탐색기

STEEM.NFT - 디지털 아트 보존 프로젝트

Posted through the AVLE Dapp (https://avle.io)

Comments

Popular posts from this blog

스티미언의 영향력 지수 계산

jsup/avle code update - you don't have to write post everyday

jsup/avle 보팅 코드 갱신 - 1일1포스팅 강박에서 벗어나기