전체 글

전체 글

    Final Logic

    보호되어 있는 글입니다.

    [DL] Object Detection YOLO V3

    [DL] Object Detection YOLO V3

    욜로3 는 Bbox를 9개 씩뽑아낸다. 1, 2, 3 (위그림)에서 순서대로 3개씩 뽑아낸다. 같은 위치에 있는 값들 끼리 더해진다. Residual Block을 사용하는 이유 레이어를 엄청 길게 쌓아도 Gradient Vanishing(사라짐)이 발생하지 않는다. ResNet이 나오기 전에는 레이어를 여러개 쌓으면 학습이 잘 되지 않았다. Gradient Vanishing(사라짐)이 발생하지 않는다는 곳은 Backward에서 발생한다. 1번부터 8번 순으로 backward작업을 하게되면 gradient(책임) 값이 0으로 수렴 되어 버린다. 반복적으로 0.9 씩 곱해지다 보면 0에 가까워 지기 때문이다. 하지만 ResNet을 사용하면 존제한다. Residual Block을 사용하면 처음부터 마지막까지의..

    Learning flow chart

    보호되어 있는 글입니다.

    윈도우에서 우분투 설치하는 블로그

    윈도우에서 우분투 설치하는 블로그

    m.blog.naver.com/6116949/221244246623

    [DL] Object Detection YOLO V2

    [DL] Object Detection YOLO V2

    Batch Normalization > 없어서 사용 못함 High resolution classifier > 448x448 을 테스트 에서 사용했다 train 한 크기는 224x224이다. 고 해상도... Multi-scaling Training 으로 좋아짐... Google Net 대신 Darknet-19(본인이 만듦)으로 Transfer Learning 자리에 배치시켰다. anchor box로 인해 ver1에서 ver2로 큰 향상을 이뤘다. 416사이즈가 들어온 이유 : 맨 마지막단 보면 13 x13 이잖아요 보통 물체가 가운데에 있는데 홀수로 만들면 한 셀에 물체가 들어올 확률이 높기때문에,,, 짝수가되면 4개의 셀에 겹칠수가 있잖아요 마지막에 13x13x125가 나온다. ver1는 7 7 30 이..

    [DL] Object Detection YOLO V1

    [DL] Object Detection YOLO V1

    mAP : mean Average Pression (욜로에서 성능, 정확도를 표기하는 지표이다. 0 ~ 100의 수치를 갖는데 100일 수록 정확도가 높다.) 이유는 군대에서 사람들을 살상하는 무기로 사용되서 자괴감으로 인해 하차함. 인공지능은 항상 어떤 데이터가 들어오고 나오는지 알 수 있어야 한다. 입력했을때 448x448x3 이엇고 출력은 7x7x30으로 출력된다. 레이어 20개 써서 압축한다. C.R = convolution, ReLU. FC.R = Fully Connected, ReLU FC = Fully Connected Scratch 한 부분을 모델이 train한다. google Net 을통해 이미지의 특징을 추출한 것들이 14x14x1024에 저장 시켰다. google Net 을 사용한 이..

    [DL] MP

    보호되어 있는 글입니다.

    [DL] Object Detection

    [DL] Object Detection

    YOLO는 위에 포함 되지 않는데 YOLO코드를 알면 다른 버전의 코드들도 다룰수 있는 능력이 생긴다. R-CNN은 OD의 원조 이다. 지금은 yolo5까지 나옴... 위 아래 의 구조가 다르다... EfficientDet 은 비싸서 보통 대기업들이 사서 사용한다. bounding box1 (x,y,h,w,dog) x와 y에 2배씩 해주면 박스의 높이와 넓이를 알수 있다. 후처리 하다가 스트레스 많이 받을수 있음. RCNN모델 Selective Search 알고리즘은 1. 색으로 판단 2. 질감으로 나눔 R-CNN 최대 단점 forwarding이 2천번 돌아간다!! 1장이 47초~!! 걸린다 mAP 는 Accuracy와 비슷하다. 결론 욜로가 짱.

    [DL] Threshold

    [DL] Threshold

    Threshold는 임계값으로 지정 할 수 있는데, 임계값이란 0.5(50%)를 기준으로 바이너리가 1개 잡힐때는 Threshold로 잡을 수 있다. 결론은 - Threshold 값만 조정하면 개인지 아닌지 암인지 암이 아닌지를 조절 할 수 있다. 만약 암 같은 경우는 위험하면서 민감한 부분이니까 threshold를 낮게 잡아서 0.05로 5% 이상이면 암을 진단하는 프로그램을 만들 수 있다. 모델에서 바이너리를 출력하는데 최종 출력값이 1이면 값이 0~1이 나옴 1에 가깝게 나오면, loss가 낮아진다. 0에 가깝게 나오면 loss가 커짐. 예측값이 나오면 채점을 할수 있고 loss값을 뽑을 수 있다. 예측값과 loss값은 (trade off 관계이다.)

    [DL] UNet Segmentation (Overview)

    [DL] UNet Segmentation (Overview)

    padding is same with previous convolution input image에서 concatenation 할때 중앙 부분만 Cropping을 했기 때문에 output의 size가 변동된다.

    [DL] UNet Segmentation with Object Detection (Super Detail)

    [DL] UNet Segmentation with Object Detection (Super Detail)

    전에 배웠던 부분과 좀 다른 내용이 있는데 어떤 내용이 달랐는지 확인해보자. 다른 부분 1. 라벨 2. UNet (모델) Segmentation은 각 픽셀값에 점을 찍는 방식이다. 어느 카테고리에 속하는지 알아 낼 수 있다. FCN 이랑 CNN은 기본이다. 4,5 번은 od인데 5번같은 경우는 박스 안에서 객체들을 하나하나 segmentation하는 것이다. instance Segmentation > Semantic Segmentation > OD instance Segmentation이 가장 computation cost가 가장 높다. 보통 Segmentation을 Semantic 으로 말한다. 실제 코딩가치로는 OD가 가장 높다. 가장 높은 이유는 코드가 어렵기도 하고 박사들은 수식으로만 잘 알지,,..

    [DL] get CIFAR10 Custom Datasets

    [DL] get CIFAR10 Custom Datasets

    라벨 1은 dog 라벨 2은 bird 라벨 3은 frag 라벨 4은 cat 라벨 5은 ariplane... 이런식으로 이미지명을 쓰면 직관적으로 보기 용이하다 언더바 뒤에는 라벨명이다. CIFAR10은 [ http://pjreddie.com/media/files/cifar.tgz ]을 주소에 입력하면 다운 받아진다. 참고 블로그 : [ pjreddie.com/projects/cifar-10-dataset-mirror/ ] 참고 www.cs.toronto.edu/~kriz/cifar.html CIFAR-10 and CIFAR-100 datasets < Back to Alex Krizhevsky's home page The CIFAR-10 and CIFAR-100 are labeled subsets of t..

    [DL] MNIST analysis with CNN model using keras ( Accuracy 98.94 % )

    [DL] MNIST analysis with CNN model using keras ( Accuracy 98.94 % )

    In [1]: import numpy as np from keras import models, layers, datasets, backend from keras.utils import np_utils import matplotlib.pyplot as plt import numpy as np import keras In [2]: num_classes = 10 (X_train, y_train),(X_test, y_test) = datasets.mnist.load_data() In [3]: ''' cnn을 다룰때는 1차원으로 값을 펼치지 않고, 이미지를 통으로 넣기 때문에 채널이 중요하다 흑백이미지라도 1이라는 값을 넣어줘야한다. 채널을 표현하는 방법 1) channel First 1,28,28 2) chan..

    [DL] FashionMNIST analysis with CNN model using Keras ( Accuracy  94.41 % )

    [DL] FashionMNIST analysis with CNN model using Keras ( Accuracy 94.41 % )

    In [1]: import numpy as np from keras import models, layers, datasets, backend from keras.utils import np_utils import matplotlib.pyplot as plt import numpy as np import keras In [2]: (X_train, y_train),(X_test, y_test) = datasets.fashion_mnist.load_data() In [3]: plt.imshow(X_train[0]) Out[3]: In [4]: num_classes = 10 num_batch_size = 100 num_epochs = 50 validation_split = 0.1 In [5]: ''' cnn을 ..

    [DL] CIFAR10 with CNN

    [DL] CIFAR10 with CNN

    In [1]: import torch import torchvision # 이미지 프로세싱이랑 직결된 모듈이다. import torchvision.transforms as transforms import numpy as np import matplotlib.pyplot as plt import warnings # 에러를 제거하는 라이브러리 warnings.filterwarnings('ignore') CIFAR10 Datasets Loading¶딥러닝에서 로딩은 2단계 걸쳐서 할 것 이다. 1. First Load(Save)¶ In [2]: # root 는 경로를 설정해 torchvision에서 가져온 이미지가 저장될 경로를 설정해준다. # train=True는 트레이닝할 데이터를 가져오겠다..

    [DL] Warming up

    보호되어 있는 글입니다.

    [PyTorch]  WHAT is Frame work and WHY PyTorch

    [PyTorch] WHAT is Frame work and WHY PyTorch

    지금 까지 손 코딩 한 부분을 Spring DI 라이브러리를 사용해서 손 코딩을 안 하고 바로 DB에 넣어 줄 수 있다. Keras를 사용하면서 Pytorch랑 비교해보자. CODE가 모든 AI 개발 코드의 뼈대이다.

    [올림픽 양초]

    [올림픽 양초]

    [문제] 생각 경시 대회를 축하하기 위해서 전통적으로 초에 불을 붙인다. 대회 첫째날밤에는 하나의 초에 불을 붙인다. 저녁이 끝나면 불을 끈다. 다음날마다 전날보다 불을 붙이는 초의 개수를 하나씩 늘려서 (1을 기준으로) n번째날 밤에는 n개의 초에 불을 붙인다 (아침에는 모든 초의 불을 끈다). 매일밤 불을 붙일때마다 초의 높이는 1씩 줄어든다. 높이가 0이 되면 더 이상 사용할 수 없다. 주어진 candles의 i번째 요소는 i번째 양초의 높이는 나타낸다. 새로운 양초를 구입하지 않고 최대 며칠밤을 축하할 수 있는지 구하여라. 예를 들어, 높이 2의 초 3개를 가지고 있다면, 첫째날 초 하나를 밝히고, 나머지 두개를 둘째날 밝히고, 셋째날에 모든 초를 밝혀 3일동안 축하할 수 있다. 풀이 1) - p..

    [참과 거짓]

    [참과 거짓]

    [문제] 스미드 교수는 논리 수업을 가르친다. 어느 날 그는 다음과 같은 문장을 칠판에 썼다. 이 문장들 중 정확히 a개의 문장이 참이다. 이 문장들 중 정확히 b개의 문장이 참이다. 이 문장들 중 정확히 c개의 문장이 참이다. a, b, c 등은 각각 숫자이다. 그리고 그는 학생들에게 이 중 몇개의 문장이 참인지 물어보았다. 주어진 정수 배열 statements 에 Smith 교수가 쓴 숫자들이 적혀있다. 모두 몇 개의 문장이 참인지 리턴하시오. 만약 가능한 답이 두개 이상이라면 그 중 더 큰 숫자를 반환하여라. 가능한 답이 없다면 -1을 리턴하시오. 풀이 1) - java 더보기 public class Solution{ public int solution(int[] statements){ int co..

    [구두법 고침이]

    [구두법 고침이]

    [문제] 가끔 몇몇 작가들은 강조를 하기 위해서 과도하게 느낌표를 남발한다. 느낌표와 물음표를 섞어서 놀라움을 표시하는 경우도 있다. 예를 들자면 "정말 그렇게 생각해요??!!". 출판을 하려면 이런 식의 과도한 느낌표와 물음표의 남발을 고쳐야 된다. 만약 느낌표가 연속으로 여러 개가 사용 되었다면 한 개의 느낌표로 바꾸고, 느낌표와 물음표가 섞여있다면 하나의 물음표로 바꿔야 한다. 이렇게 고쳐진 문자열을 리턴하시오. 풀이 1) - java 더보기 public class Solution{ public String solution(String document){ // replaceAll 함수로 원하는 문자로 문자열 치환 return document.replaceAll("[?!]*\\?[?!]*", "?")..

    [막대]

    [막대]

    윤호는 64 cm 길이의 막대를 가지고 있지만 x cm만큼 긴 막대가 있다면 더 재밌을 것이라 생각한다. 그는 원래 막대를 작은 막대 여러개로 부수고 풀로 붙여서 정확히 x cm만큼 긴 막대를 만들기로 결심했다. 막대를 부수는 가장 쉬운 방법은 반으로 쪼개는 것이라서 윤호는 다음의 방법을 따르기로 했다: 모든 막대들의 길이를 더한다 (처음에는 64 cm 길이의 막대 하나만 있었다). 길이의 합이 x보다 크다면 다음을 반복한다: 가장 짧은 길이의 막대를 반으로 부순다. 만약 두개 중 하나를 버려도 남아있는 막대들의 길이의 합이 x보다 크다면 하나를 버린다. 마지막으로 남아있는 막대들을 풀로 붙여 x cm길이의 막대를 만든다. 윤호가 위의 단계를 따라하여 풀로 붙이게 될 마지막에 남은 막대들의 개수를 반환하..

    [기념품 행사]

    [기념품 행사]

    [문제] 세 자매가 해외여행 중 기념품 가게에 왔습니다. 이 기념품 가게에서는 한번에 50달러 이상 지출하면, 10달러를 할인해주는 행사를 하고 있습니다.그녀들은 구매한 물건을 합하여 계산하면, 각자 따로 지불하는 것보다 적게 지불할 수 있다는 것을 깨달았습니다. 예를들어 그들이 각각 46달러, 62달러, 9달러만큼의 상품을 구입하는 경우, 46달러와 9달러를 합치는 것으로 2번의 구매를 할 수 있습니다.이렇게 하면 55달러와 62달러로 거래하게 되어 총 20달러의 할인을 받을 수 있습니다. 여기 goods 가 주어집니다.goods 의 각 요소는 한 명이 구매하려는 물품의 총 비용입니다. 세 자매가 모든 상품을 구입하는데 드는 최소 비용을 리턴하세요. (그녀들은 위 설명처럼 합쳐서 구매할 수 있지만, 자..

    [가방 퀴즈]

    [가방 퀴즈]

    [문제] 1부터 n까지 번호가 붙여진 n개의 가방이 있다. 각 가방은 다른 가방에 넣을 수 있으며, 다른 가방에 들어간 가방 역시 다른 가방을 넣고 있을 수 있다. 문제의 명확성을 위해 가방 i가 가방 j의 안에 있다는 것은 가방 i가 가방 j에 직접적으로 들어있음을 의미한다.예를 들어서, 가방 2가 가방 1 안에 있고, 가방 3이 가방 2 안에 있으면, 가방 3은 가방 2 안에 있지만 가방 1 안에 있지는 않다. 모든 가방은 처음에 다 빈 채로 바닥에 놓여 있다. 우리는 다음에 나열되는 것들 중 하나의 행동을 각각 단계적으로 취할 것이다.PUT i INSIDE j - 가방 i를 가방 j안에 넣는다. 이 행동을 취하기 위해서는 가방 i와 j는 반드시 바닥에 놓여있어야 한다.SET i LOOSE - 가방 ..

    [암호 추적]

    [암호 추적]

    [문제] 당신에게 적군의 코드를 해석하라는 비밀 미션이 주어졌다. 당신은 그들이 메세지를 다음과 같은 방법으로 암호화한다는 것을 이미 알아냈다. 'a'와 'z'사이의 알파벳을 두자리수 01과 26 사이의 숫자에 할당한다. 메세지는 각 알파벳을 할당된 숫자로 변환하여 암호화된다. 예를 들어, 't'는 20에 할당되고, 'e'는 05에 할당되고, 's'는 19에 할당되어 "test"는 "20051920"으로 암호화된다. 모든 원본 메세지는 소문자만으로 구성되어 있다. 주어진 string code에는 숫자와 문자의 할당이 나타나 있다. 첫번째 문자는 01에 할당되고, 두번째 문자는 02에 할당되는 식으로 26까지 이어진다. 또한 주어진 string message 에는 암호화되지 않은 원본 메세지 혹은 암호화된..

    [숫자 문자열 정렬하기]

    [숫자 문자열 정렬하기]

    [문제] 정렬할때, 숫자들을 문자열 처럼 취급하는것은 흔한 실수입니다. 예를 들어, ["1", "174", "23", "578", "71", "9"]와 같이 정렬된 배열은 해당 요소가 문자열이 아닌 숫자로 해석되는 경우 올바르지 않습니다.문자열 비교를 사용하여 정렬된 문자열 배열 vector sequence가 제공됩니다. 숫자 비교를 사용하여 이 시퀀스를 오름차순 정렬하여 리턴하세요. 풀이 1) - python 더보기 class Solution: def solution(self, sequence): return sorted(sequence, key = lambda x : int(x)) 풀이 2) - javaScript 더보기 function solution(sequence){ sequence.sort((..

    [문자열 수정하기]

    [문자열 수정하기]

    [문제] 문자열 배열 vector text가 있습니다. 모든 문자열이 가장 긴 문자열의 길이와 동일한 길이를 가지도록 하고 싶습니다. 만약 어떤 문자열의 길이가 가장 긴 문자열의 길이보다 짧다면, 길이가 가장 긴 문자열의 길이와 같아 질때 까지, 그 문자열의 앞에 빈문자를 추가합니다. 위 규칙대로 변환된 문자열 배열을 리턴하세요. 풀이 1) - javaScript 더보기 function solution(text){ var len = []; var result = []; for(var i = 0; i

    [자동차를 사는 법]

    [자동차를 사는 법]

    [문제] 민아는 새 차를 사려고 합니다. 그녀는 돈이 여유롭지 않아 싼 차를 선호합니다. 문제가 있다면, 가장 싼 차는 품질이 의심스럽다는 점입니다.그래서 민아는 자동차 가격표를 만들고 세 번째로 낮은 가격의 차를 사기로 결심했습니다.vector prices 가 주어집니다. 같은 가격이 vector prices 에서 여러 번 나올 수 있지만, 가격 순서에는 한 번만 반영합니다. 자세한 설명은 예제 2를 참조하세요. 이제 vector prices 에서 세 번째로 낮은 가격을 리턴하세요. vector prices 가 3개 미만인 경우, -1 을 리턴하세요. 풀이 1) - python 더보기 class Solution: def solution(self, prices): return sorted(set(pric..

    [둥근 길]

    [둥근 길]

    [문제] 엘보니아의 왕은 width 미터 * length미터 넓이의 궁전에서 살고 있다. 그는 신하들을 진흙 위에 살고 있게 하였기 때문에 인기 있는 왕은 아니었다. 그는 방문자들이 그를 접견하기 위해 오래 걷게 만들고 싶어서 궁전을 나누고 싶어했다. 왕의 보안 고문은 나선형으로 나누자고 제안했다. 방문자는 남서쪽 모서리에서 입궁하여 동쪽으로 걷는다. 방문자 앞에 벽이 나타나면 왼쪽으로 방향을 바꾼다. 나선형 복도의 너비는 1미터이다. 아래 다이어그램은 나선형 길의 한 예제이다: 방문객은 a (남서쪽 모서리)에서 출발하여 알파벳 순서대로 x (왕좌)까지 이동한다. nmlkji oxwvuh pqrstg abcdef 왕은 궁전의 길을 새로 만들기 전에 그의 왕좌를 먼저 정확한 위치로 옮기고 싶어하기 때문에 ..

    [연속 캐시]

    [연속 캐시]

    [문제] 최신 마이크로콘트롤러를 최대한 저렴하게 만들기 위해 매우 간단한 캐쉬를 설계했다. 프로세서는 0에서부터 n-1로 숫자가 매겨진 int n개의 바이트를 가진 느린 메모리 시스템과 연결된다. 캐쉬는 빠른 접근을 위해 이 중에서 int k개의 카피를 한번에 가지고 있다. 캐쉬는 base address를 가지고 있으며 base, base+1, ..., base+k-1로 숫자 매겨진 바이트들의 카피를 가지고 있다. 프로그램이 바이트를 읽을 때, 캐쉬 제어기는 다음과 같은 알고리즘을 따라 동작한다: 기존의 base address와 차이를 최소화하여서 필요한 바이트를 가진 k개의 새로운 범위의 바이트를 찾는다. 필요한 바이트가 이미 캐쉬에 존재한다면 base address는 그대로 유지됨을 유의하라. 기존의..

    [가장 짧은 팰린드롬]

    [가장 짧은 팰린드롬]

    [문제] 행운의 번호는 2*n 자릿수를 가진 숫자인데, 왼쪽에서 부터 n개의 숫자의 합이 오른쪽에서 부터 n개의 숫자의 합과 같다 당신에게 0을 제외한 숫자로만 이루어진 문자열 s가 주어진다. 이 문자열의 부분 문자열 중 가장 긴 행운의 번호의 길이를 구하시오. 만약 행문의 번호가 없다면 0 을 반환하시오. 풀이 1) - jave 더보기 public class Solution{ public int solution(String s){ if(check(s)){ return s.length(); }else{ int count=1; while(count