병오년(丙午年) - 불의 기운이 강렬한 해, 그 특징과 의미

  병오년이란? 병오년(丙午年)은 60갑자 중 43번째에 해당하는 해로, 천간 병(丙)과 지지 오(午)가 만나 이루어집니다. 가장 최근에는 1966년과 2026년이 병오년에 해당하죠. 병오의 오행 분석 천간 병(丙) - 양의 불(陽火)  병은 태양의 불, 즉 밝고 따뜻한 양의 기운을 상징합니다. 활동적이고 외향적이며, 남을 이끄는 리더십을 지닌 특성을 나타냅니다. 지지 오(午) - 음의 불(陰火)  오는 말띠에 해당하며, 한여름의 뜨거운 기운을 담고 있습니다. 열정적이고 역동적인 에너지를 상징하죠. 병오의 특별함 - 불과 불의 만남  병오는 천간과 지지 모두 불의 기운으로 이루어진 매우 특별한 조합입니다. 이를 '불이 불을 만난다'고 표현하며, 극도로 강한 화기(火氣)를 나타냅니다. 병오년생의 성격 특징 장점 강력한 추진력 : 목표가 생기면 불같은 열정으로 밀고 나가는 추진력 리더십 : 자연스럽게 사람들을 이끄는 카리스마와 지도력 정의감 : 옳지 못한 일에 대해 과감하게 나서는 용기 창의성 : 새로운 아이디어와 혁신적 사고를 잘하는 편 주의사항 성급함 : 불의 기운이 강해 성격이 급하고 참을성이 부족할 수 있음 감정 기복 : 열정적인 만큼 감정의 변화가 클 수 있음 과도한 경쟁심 : 이기고자 하는 욕구가 강해 때론 무리할 수 있음 병오년생에게 적합한 분야 추천 직업군 경영자, 정치인, 연예인 영업, 마케팅, 광고 분야 교육자, 언론인 창업가, 사업가 주의할 점  불의 기운이 강하므로 물의 기운(수행, 학문)이나 토의 기운(안정, 저축)을 보완하는 것이 좋습니다. 병오와 다른 간지와의 궁합 좋은 궁합 : 임자(壬子), 계축(癸丑) - 물이 불을 적절히 조절  보통 궁합 : 무인(戊寅), 기묘(己卯) - 흙이 불의 기운을 안정시킴  주의할 궁합 : 경신(庚申), 신유(辛酉) - 금과 불의 상극 관계 2026년 병오년 운세 전망 다가오는 2026년 병오년은 전체적으로 역동적이고 변화가 많을 해가 될 것으로...

구글 플레이 스토어 16KB 메모리 페이지 지원 문제 해결방법

이미지
 구글 플레이 스토어에 다음과 같은 메시지가 나오기 시작 했다. Flutter 로 만든 앱인데 검색해보니 라이브러리와 플러터를 업그레이드 하면 된다고 한다. 그렇게 했는데 오늘 업데이트 했더니 같은 오류가 나왔다. 어떤 라이브러리가 안되는지 찾아야 한다. 왼쪽 메뉴에서 - 테스트 및 출시 - 최신버전 및 번들에서 최신버전의 -> 선택한다. 이런 화면이 나오는데 여기서 제일 오른쪽 -> 를 선택하여 자세한 화면으로 들어간다. 스크롤을 내려 제일 하단으로 가면 다음과 같이 지원하지 않는 so 파일이 나온다. 이 파일이 사용하는 라이브러리를 찾아야 한다. Rive 애니메이션에서 사용하는 라이브러리라는데 나는 로띠 애니메이션을 사용하는데 해당 라이브러리는 사용하지 않는다. 이 명렁어를 사용하면 관련 라이브러리를 하위로 사용하는 라이브러리를 찾을 수 있다. 이제 찾았다. awesome_dialog 패키지가 문제라는데 나는 이 패키지를 제거하고 기본 다이아로그로 대체하였다.

Flutter 에서 Android Gradle Plugin 오류 조치

이미지
 Flutter 에서 잘 되던게 안되고 다음과 같은 오류가 난다. 그래들 버전이 맞지 않난다고 나온다. 그래들 버전을 맞추면 된다. /android/settings.gradle 에 가면 다음과 같이 설정되어 있다. id "com.android.application" version "7.3.0" apply false 의 버전을 8.2.1 로 변경한다. 이것만 바꾸면 될꺼 같은데 다음과 같은 다른 오류가 난다. 한군데 더 수정할 곳이 있다. /android/gradle/wrapper/gradle-wrapper.properties 를 수정해야 한다. distributionUrl=https\://services.gradle.org/distrubutions/gradle-7.6.3-all.zip 버전을 8.2.1 로 변경하면 된다. 나는 이와 같이 수정하고 다시 빌드 했더니 정상 작동 되었다.

Raspberry pi 에서 flet 실행할 때 libmpv.so.1 파일 없다는 오류 조치

이미지
라즈베리파이에서 Flet 으로 프로그램을 하나 작성하였습니다. 하지만 실행할 때 오류가 납니다. libmpv.so.1 파일이 없다고 나옵니다. 대충 찾아보면 $ sudo apt instll libmpv1 을 하면 된다고 하는데 설치가 안됩니다. $ sudo apt install libmpv2 로 설치하면 됩니다. 대부분 내용이 업데이트 된걸 반영하고 있지 않아요. 설치된 다음에 위치를 찾습니다 $ find /usr/lib /usr/local/lib -name "libmpv.so*" 위치를 찾았으면 이제 심볼릭 링크를 걸어줍니다. $ sudo ln -s /usr/lib/aarch64-linux-gnu/libmpv.so.2 /usr/lib/libmpv.so.1 이제 Flet 을 실행하시면 화면이 나올 것입니다. 이것 때문에 삽질한 기억이 있습니다. 주요 요점은 $ sudo apt install libmpv2 로 설치한 다음 라이브러리를 링크로 걸어줍니다. 

윈도 11 이 사진에 대한 자세한 정보 삭제 방법

이미지
윈도 11에서 바탕화면에 이상한 아이콘이 있다. 이 사진에 대한 자세한 정보 아이콘이다. 아이콘을 없애는 방법이다. 레지스트리 편집기에서 삭제할 수 있다. 윈도 아이콘 - 검색 - 레지스트리 편집기 프로그램을 실행할 수 있다. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel 이동한 다음 오른쪽 창에서 마우스 오른쪽 클릭하여 새로 만들기 합니다. 이름은 {2cc5ca98-6485-489a-920e-b3e88a6ccce3} 변경합니다. 값은 DWORD 16진수 1 로 변경합니다. 저장 후 빠져 나옵니다. 이제 새로 고침을 하면 삭제됩니다.

Llama 3.2 fine tunning 중 cannot find tokenizer merges in model file 오류

라마 3.2 로 파인튜닝 중 오류를 만났어요. 기본 모델을 3.2로 변경하고 gguf 까지 변환이 잘 되었어요. 하지만 올라마에 서비스를 구동할 때 오류가 났어요. 토크나이저를 찾을 수 없다는 등등.... 검색해도 거의 나오지 않고 올라마 깃허브에 가보니 저와 비슷한 오류가 있었어요. 대충 보니 트랜스포머 버전이 4.45 이상으로 가면서 토크나이저 포맷이 변경된거 같아요. 그래서 트랜스포머 버전을 4.44 버전을 사용하면 된다는 거였어요. 일단 해보니 오류가 사라지고 잘되는겁니다. 이후 설치시 확인해보니 언슬롯에서 기본으로 트랜스포머 버전이 4.44 버전으로 되도록 변경하였더군요. 이것때문에 이틀을 왜 안되지. 이전 버전으로 돌아가보고 해볼 수 있는 경우의 수는 다해본거 같아요.

라마 3.1 파인 튜닝 하는 방법

이미지
라마 3.1 을 파인튜닝하여 내부 서버에 서비스 올리기 먼저 라마 3.1을 파인 튜닝 하기 전에 학습할 데이터를 만들어야 한다. 보통은 pdf 같은 파일로 qa 리스트를 만들면 된다. 허깅페이스에 올라온 오픈소스로 pdf -> qa 추출을 했더니 너무 처참했다. 그나마 괜찮은 성능을 보인 것은 chatGPT 이다. 유료지만 api 를 활용하니 비용은 거의 몇백원 정도 되었다. qa 는 jsonl 형식으로 만들어서 허깅페이스 데이터셋에 등록하면 작업하기 편하다. 이제 파인튜닝을 할 준비가 된것이다. 허깅페이스 데이터셋을 가져와서 구글 코랩에서 파인튜닝을 하면 된다. 처음엔 A100 을 사용했으나 현재는 가장 낮은 GPU  도 가능하다. 학습 횟수를 1천번 정도도 돌렸으나 별차이가 없었다. 뭔가 좀 더 연구가 필요하다. 현재 60회 정도 돌리니 그나마 결과가 나은거 같다. 이미지 학습과 다르게 이건 많이 학습 할수록 잘 안되는 느낌이다. 학습이 완료되면 모델을 허깅페이스에 등록한다. 난 gguf 까지 변환하여 허깅페이스에 등록했다. 이제 gguf 파일을 서버에서 다운받아서 ollama 에 올리면 된다. RTX4070 하나로 돌리는데 속도와 결과는 그럭저럭 쓸만하다. 사용자가 많지 않으니....., 나중에 colab 에 정리된 코드를 가지고 이야기 했으면 한다. 워낙에 많이 바뀌므로 정리가 어렵다.

우분투 메일서버(iRedMail) 설정 후 방화벽(nftables) 자동변경

이미지
우분투 24.04 서버를 설정하여 운영 중입니다. 메일서버인 iRedMail 을 설치하였습니다. 근데 웬일인가요. 다른 모든 서비스가 안됩니다. https://www.linuxbabe.com/mail-server/ubuntu-24-04-iredmail-server-installation 위 링크를 참고하여 설치하였는데 설치는 잘됩니다. 나중에 자세히 보니 /etc/nftables.conf 어쩌고 나옵니다. 위 링크는 iptables 이 나오더군요. 제가 아는 바로는 우분투 방화벽은 ufw 이고 이건 iptables 기반으로 작동되는 것으로 알고 있었습니다. nftables 는 차세대 방화벽이더군요. 설정에 가서 기존에 운영중이던 포트를 허용 되도록 추가하였습니다. 서비스 잘 운영 됩니다.

nvidia- smi has failed because it couldn't communicate with the nvidia driver 오류 해결 방법 정리

이미지
우분투 서버에서 NVIDIA GPU 4060 설치하다 맞이한 오류입니다. 한동안 오류에서 벗어나 있었는데 지난 밤을 꼬박 세웠네요. 1.  설치된 라이브러리 지우고 다시 설치 $ sudo apt remove nvidia* $ sudo apt autoremove $ sudo reboot 재부팅 후 다시 접속 후 $ ubuntu-drivers devices 전 추천이 535로 나오더군요 $ sudo apt install nvidia-driver-535 역시나 안되더군요. 전 지우는 방법만 달리해서 한 15번 정도 반복했던거 같습니다. 2.  GCC 및 G++ 지우고 다시 설치 $ sudo apt remove gcc $ sudo apt remove g++ $ sudo apt autoremove $ sudo reboot 재부팅 후 다시 접속합니다. $ sudo apt install gcc $ sudo apt install g++ 3. CMOS 에서 SECURE BOOT 비활성화 전 이 방법으로 하니 되더군요. 전원을 끄고 다시 전원을 켠 후 바로 F1 과 Del 키를 눌렀어요. 어느 키가 CMOS 진입키 인지 모르니까요. 들어가서 부팅 쪽 메뉴에 있더라구요. 요즘은 기본으로 활성화 되어 있으니 그걸 찾아서 Disable 했어요. 이게 GPU 기기를 인증 안된걸로 인식하여 차단되어서 그렇다고 하더라구요. $ sudo apt remove nvidia* $ sudo apt autoremove $ sudo reboot 재부팅 후 다시 접속합니다. $ sudo apt install nvidia-driver-535 $ nvidia-smi 오랜만에 결과가 나왔네요.

가비아 도메인에 letsencrypt 인증서 적용 시키기

이미지
가비아 도메인을 가지고 있다. example.com 을 가지고 있다. 이를 서버에 SSL 적용하고자 한다. 무료인 Let's Encrypt 를 사용하고자 한다. 난 서버를 우분투를 사용한다. $ sudo certbot certonly --manual --preferred-challenges dns -d '*.example.com' 여기서 빨간색으로 나오는 문자열이 중요하다. 이 문자열을 가비아 페이지에 가서 텍스트로 등록하면 된다. 다시 터미널로 가서 엔터를 치면 인증서가 발급이 된다. 인증서는 파일이 다음과 같이 두개 파일이 발급된다.

외환통장 수수료 절감 팁

 안녕하세요, 여러분! 오늘은 해외 송금이나 외환 거래 시 부담이 될 수 있는 외환통장 수수료를 절감하는 방법에 대해 알아보겠습니다. 글로벌 시대에 맞춰 많은 분들이 외환통장을 이용하고 있는데요, 조금만 신경 쓰면 절감할 수 있는 수수료 절감 팁을 함께 알아보시죠. 1. 외환통장의 필요성 외환통장은 해외 송금, 외화 예금, 외화 환전 등을 쉽게 처리할 수 있는 통장입니다. 주로 해외 유학, 출장, 여행, 무역 등 다양한 목적으로 사용됩니다. 하지만, 외환통장을 이용하면서 발생하는 수수료는 무시할 수 없는 비용이므로 이를 줄이는 방법을 아는 것이 중요합니다. 2. 수수료 종류 이해하기 외환통장 이용 시 발생하는 주요 수수료는 다음과 같습니다. 가. 송금 수수료 해외로 돈을 송금할 때 발생하는 수수료입니다. 송금액에 따라 수수료가 달라지며, 송금하는 은행과 수취 은행의 정책에 따라 추가 비용이 발생할 수 있습니다. 나. 환전 수수료 통장에서 외화를 환전할 때 발생하는 수수료입니다. 환율 차이에 따른 비용이 포함됩니다. 다. 유지 수수료 외환통장을 유지하는 데 발생하는 월간 또는 연간 수수료입니다. 일부 은행에서는 일정 조건을 충족하면 면제해주기도 합니다. 3. 수수료 절감 방법 가. 온라인 뱅킹 활용 오프라인보다 온라인 뱅킹을 이용하면 수수료가 저렴한 경우가 많습니다. 은행마다 다르지만, 온라인 송금 및 환전 수수료가 오프라인 대비 최대 50%까지 저렴할 수 있습니다. 나. 특정 은행 및 카드 이용 일부 은행은 특정 조건을 충족하면 외환 거래 수수료를 할인해주거나 면제해줍니다. 예를 들어, 주거래 은행을 통해 외환통장을 개설하면 수수료 혜택을 받을 수 있습니다. 또한, 해외 사용 수수료가 저렴한 신용카드를 이용하는 것도 좋은 방법입니다. 다. 환율 우대 혜택 활용 환전 시 은행마다 환율 우대 혜택을 제공하는 경우가 많습니다. 특정 은행의 앱이나 홈페이지를 통해 환율 우대 쿠폰을 발급받아 사용할 수 있습니다. 라. 일정 금액 이상 거래 일부 은행에서는 일정 ...

부동산 청약 추첨 제도 안내

 안녕하세요, 여러분! 오늘은 대한민국 부동산 청약 제도 중에서도 많은 분들이 관심을 갖고 계신 '추첨'에 대해 알아보도록 하겠습니다. 청약을 준비하시는 분들께 유용한 정보가 되길 바랍니다. 1. 부동산 청약이란? 부동산 청약은 아파트와 같은 주택의 분양을 받을 수 있는 기회를 얻기 위해 신청하는 절차를 말합니다. 특히, 인기 있는 지역이나 단지의 경우 청약 경쟁률이 높아지기 때문에 추첨을 통해 당첨자를 선정하게 됩니다. 2. 청약 추첨의 종류 청약 추첨은 주로 다음과 같은 두 가지 방식으로 이루어집니다. 가. 일반 추첨 일반 추첨은 모든 청약 신청자들 사이에서 무작위로 당첨자를 선정하는 방식입니다. 청약 통장을 보유한 모든 사람이 참여할 수 있으며, 무주택 기간, 부양 가족 수 등에 따라 가점제를 적용하는 경우도 있습니다. 나. 특별 공급 추첨 특별 공급은 신혼부부, 다자녀 가구, 국가유공자 등 특정 계층을 위한 청약 물량을 별도로 배정하여 추첨하는 방식입니다. 이 경우 해당 자격 요건을 충족하는 신청자들 사이에서만 추첨이 이루어집니다. 3. 추첨 방식 추첨은 일반적으로 다음과 같은 절차를 거쳐 이루어집니다. 가. 청약 접수 먼저, 청약 신청자는 청약 접수 기간 내에 청약 신청을 완료해야 합니다. 이때, 청약 통장을 사용하여 신청할 수 있습니다. 나. 청약자 확인 및 검증 청약 접수가 완료되면, 주관 기관은 신청자의 자격 요건을 확인하고 검증합니다. 부적격자는 추첨 대상에서 제외됩니다. 다. 추첨 진행 자격 검증이 완료된 신청자들을 대상으로 무작위 전산 추첨이 이루어집니다. 추첨 결과는 보통 청약 접수 마감 후 며칠 내에 발표됩니다. 4. 추첨 결과 발표 및 후속 절차 추첨 결과는 해당 부동산 분양 웹사이트나 앱을 통해 확인할 수 있습니다. 당첨된 경우, 주어진 기간 내에 계약을 체결해야 하며, 그렇지 않으면 당첨이 취소될 수 있습니다. 5. 추첨에 당첨되지 않았을 경우 추첨에 당첨되지 않았더라도 낙담하지 마세요. 청약은 지속적으로 기회가 제공...

local 에서 LLM 을 돌리는 방법

로컬에서 챗봇을 돌리는 방법입니다. 보통 LLM 이라고 하죠. 일단 한글을 알아먹는 LLM 이 필요하죠. 다들 한글 잘 알아먹는다고 하는데 제가 해보니 글쎄 입니다. 그나마 야놀자 EEVE 가 그나마 알아 먹더군요. 허깅페이스에서 야놀자 EEVE 의 GGUF 파일을 다운 받습니다. 저는 우분투 서버에 RTX 4070  한개를 사용했어요. 거기에 CUDA 환경을 구축했습니다. 그러면 OLLAMA 를 설치할 수 있습니다. 올라마를 설치하면 GGUF 형식의 LLM 을 구동할 수 있어요. 구동된 LLM 은 STREMLIT 을 활용하여 화면을 구성할 수 있어요. 조만간 서비스에 붙일 수 있을 정도의 품질이 나올 수도 있을꺼 같습니다.

python 과 node express 사이 이미지 주고 받기 구현

Client 는 Python 으로 작성 되었으며 Server 는 node express 로 된 시스템입니다. 양쪽 모두 웹소켓을 사용했습니다. 이미지를 서로 주고 받는데 한참을 헤메었네요. 일단 이미지를 base64 로 변환해서 json 으로 패키징 하여 서버에 전송하고 서버에서 받은 base64 데이터를 이미지로 변환하여 저장하는 로직입니다. python 에서 이미지를 data에 가져오는 방법입니다. data = io. BytesIO () picam2.capture_file(data, format = ' jpeg ' ) print (data. getbuffer ().nbytes) 가져온 이미지를 base64 로 변환한 후 다시 전송을 위한 데이터로 변환합니다. img_base64 = base64. b64encode (data. getbuffer ()). decode ( ' utf-8 ' ) 전송할 데이터로 패키징 합니다. responseData = { " type " : " camera " , " device_id " : device_id, " data " : img_base64 } 이제 웹소켓을 이용해서 전송합니다. responseStr = json. dumps (responseData) ws .send(responseStr) 이제 node express 에서 전송된 데이터를 받아서 이미지 처리하는 로직입니다. 받은 데이터로 이미지로 변환합니다. const image = Buffer. from (data, ' base64 ' ) 변환된 이미지를 저장합니다. writeFileSync ( ' image.jpg ' , image ) 정리해놓고 보니 간단하지만 로직을 이렇게도 해보고 저렇게도 해보고 한참을 헤메었습니다. 나중에 다시 참고할 때 편하도록....

라즈베리 파이에서 인터넷 연결 후 자동실행 설정하기

라즈베리 파이에서 인터넷 연결 후 자동실행하는 방법입니다. 파이썬으로 프로그램을 만들었습니다. 웹소켓으로 서버와 연결하여 메시지를 받아서 처리하는 모듈입니다. /home/pi/PythonProjects/websocketClient.py 이 파일을 라즈베리 파이가 구동된 후 인터넷이 연결된 후에 실행하고 싶어서 시도한 결과를 정리한 내용입니다. 결론부터 말하자면 다음과 같은 방법이 최고입니다. 1. 모듈을 실행할 스크립트를 작성합니다. & vi /home/pi/run_websocket.sh #!/bin/bash python /home/pi/PythonProjects/websocketClient.py 2. 생성한 모듈의 실행권한을 준다 $ chmod +x /home/pi/run_websocket.sh 3. 자동 구동할 desktop 파일을 생성한다. $ sudo vi /etc/xdg/autostart/websocket.desktop [Desktop Entry] Name=WebsocketClient Exec=/home/pi/run_websocket.sh 4. 재부팅한다 $ sudo reboot 저는 이와 같이 하니 자동실행되었습니다.

Flutter 에서 yolov8 사용하기 - 마무리

이번에 진행하면서 느낀 점은 "샘플 소스가 너무 없다" 주로 찾은 소스는 2년 전 지원이 끊긴 라이브러리 소스였으며 ssd_mobilenet 소스는 제공이 잘 되었는데 카메라 해상도를 높이면 작동이 되지 않았다. 나중에 공부가 깊어지다 보니 input 텐서의 값을 수정했어야 했는데 샘플소스에 input & output 텐서 속성이 박혀 있어서 그런 오류가 났었다. 혹시나 이 글이 뒤에 오는 사람에게 도움이 될까 하여 기록으로 남긴다. 전체 소스는 다음에서 볼 수 있다. https://github.com/whenyourapprun/AreYouElf.git

Flutter 에서 yolov8 사용하기 - 3

이제 카메라를 구동하고 거기서 모델을 생성하여 결과를 추출하는 모듈을 만들 것이다. 카메라 구동은 기존에 하는 방법과 비슷하다. 모델을 생성하여 탐지하는 모듈은 스레드를 4개를 설정하여 비동기 독립으로 실행하도록 한다. isolate 를 사용한다. 이렇게 하면 속도가 빠르다. 대부분 정형화 된 상태로 샘플 코드가 되어 있으니 이걸 사용하면 된다. 이제 다음과 같이 사용한다.

Flutter 에서 yolov8 사용하기 - 2

이제 생성된 모델을 가져왔으니 모델에서 값을  추출하는 nms 함수를 살펴보아야 한다. 3차원 배열로 들어온 값에서 각각 맞는 값을 추출해야 한다. 이 부분은 텐서에서 추출한 값으로 설정되도록 함수를 조정하였다. 소스는 다음과 같으니 참고하기 바란다. 이 함수에서 주목할 점은 텐서로 전달 받은 값에서 각 항목을 지정하여 추출하는 방법이다.

Flutter 에서 yolov8 사용하기 - 1

Flutter 에서 yolov8 을 사용하려면 이 방법이 가장 주효하다. 물론 더 나은 라이브러리가 제공된다면 좋을 것이다. tflite_flutter 라이브러리가 현재 공식 지원이다. 예제 등을 찾아보면 없을 것이다. 어찌하여 이미지를 추론하는 것은 찾을 수 있다. 문제는 동영상을 추론하는 게 필요하다. 그에 대한 예제는 ssd_mobilenet 모델을 제공하고 있다. ultralytics 에서 제공하는 export 방법을 사용하여 모바일용 모델을 생성한다. format='tflite' 옵션을 사용하면 3가지 속성이 default 로 설정된다. half=False, int8=False, imgsz=640 이다. 각각의 설정을 변경하면서 테스트 하여 속도를 체감해보길 권장한다. 나의 경우는 half 와 int8 은 양자화인데 속도에 크게 좌우되지 않고 정밀도를 낮추는거 같았다. imgsz 를 조정하였는데 224, 320, 4800, 640 순으로 진행하였는데 224 가 속도가 가장 빨랐다. export 하는 중에 input 텐서의 속성을 알려주는데 이게 중요하다. [1, 224, 224, 3] 으로 나올 것이다. output 텐서는 [1, 6, 1029] 이런 식으로 나올 것이다. 이 텐서의 3 ~ 4차원 행렬을 무시해서 삽질을 오래 하였다. 그리고 이런 부분에 대한 설명이 자세하지 않아서 인공지능 및 딥러닝을 전공하지 않은 개발자들에게 허들로 작용할 수 있다. 모델은 여기서 가져와서 이렇게 사용한다.

부품 인식에 관하여 그동안 일 정리

스마트폰을 활용하여 부품인식을진행하고 있다. 현재 우리 회사의 문제점은 경험 많은 퇴직자와 신입 사원 사이에 중간 사원이 없다. 그리하여 많은 문제점들이 발생하고 있다. 그에 대한 대안으로 부품 인식을 진행하고 있다. yolov8 을 활용하여 부품에 대한 이미지와 라벨링을 한다. 그 결과 .pt 파일이라는 파이토치 모델 파일을 얻는다. yolov8n.pt 를 기준으로 새로 취득한 이미지와 라벨링을 통해 학습을 진행해보았다. 처음엔 13개의 부품으로 진행했다. 이미지는 부품당 20장 정도 찍었다. 학습를 300회 정도 진행하니 그 이상은 무의미 하다 하여 그 모델 파일을 가지고 테스트 모듈을 만들었다. 테스트 모듈은 opencv 를 활용하니 잘 되었다. 하지만 한글로 부품 명칭을 보여주자는 의견에 opencv 한글 표시 하는 걸 시도하였다. 이게 조금 어려웠다. 어찌하여 그렇게 개발하여 발표를 하게 되었다. 이제 모바일에 적용 하는 게 관건이었다. 노트북에서는 GPU 환경이라 그런지 속도가 정말 빨랐다. 주로 많이 걸리는 시간이 inference 라 불리는 추론 시간인데  GPU 환경에서 20ms 정도 걸렸다. 모바일 환경으로 가니 3500ms 정도 걸려서 사용할 수 없을 정도 였다. 속도는 둘째이고 정확도도 엉망이었다. 예제 소스도 없었다. 진짜 어렵게 진행해서 이런 문제들을 해결하였다. 이제 그걸 하나 씩 정리하고자 한다.