강의 중에 나오는 최근 모델은 2017년 SENet 즈음이 마지막으로 나오는데 구글링을 해봐도 SENet이 등장한 2017년이 최근 모델로 나오더라구요 그나마 2019년 ResNeXt50 정도가 있는 거 같은데 최근 3년 2020~2022년 사이에 개발된 CNN 모델이 있을까요? 이러한 최신 CNN 경향은 어디서 확인하나요?
안녕하세요. 강사님. 제가 이번 실습을 기반으로 병해충 진단 모델을 구축중입니다. 이에 대해 질문사항이 있어 질문드립니다. efficientNet모델로 딥러닝 모델을 만들고 있습니다. 총 16개의 병해충에 걸린 식물을 구분하는 모델입니다. output layer에서 최종적으로 예측하고 나온 16개의 확률값중에 가장 큰 확률값의 index가 4라고 할때 이게 어떤 식물인지 어떻게 아는건가요?..
안녕하세요 거친코딩님 현재 프로젝트 기획 구상 단계 인데요~ 현재까지 구상한 것은 거친코딩님이 올려주신 데이터를 구현한 모델(최신 데이터가 된다면 Sparse Matrix를 쓰고, 기존 올려주신 데이터를 활용하게 된다면, 협업필터링으로 모델을 구현하고자 합니다.)을 훈련시킨 다음, 이제 새 회원이 평점을 매긴 영화를 입력값으로 받아 영화를 추천해주는 웹 프로젝트를 하려고 합니다. 현재 팀원은 3명이고, 각 각프론트엔드, 백엔드(스프링, DB-MySQL), 추천알고리즘 입니다. 근데 지금 막히는 것이 기존데이터가 아닌 클라이언트에서 새로운 회원이 선택한 영화를 추천알고리즘으로 넘기는 것을 어떻게 해야할지 모르겠습니다. 이 부분을 새로운 함수로 구현을 해야하는 것인지, 아니면 알려주신 알고리즘을 기반으로 수정으로도 구현이되는 것이 궁금합니다.
안녕하세요, 거친코딩님! 올려주신 강의와 파일들을 보면서, 프로젝트를 하다가 궁금한게 있어서 질문드립니다. 강의에서 올려준 파일 u.user, u.item, u.data와 rating-20m.csv가 별개의 영화 평가 데이터 파일들 인가요? Sparse Matrix 알고리즘에서 rating-20m.csv 파일만 쓰여서 궁금해서 여쭤봅니다. 1)에서 질문한것이 맞다면 최신 무비렌즈 영화평가 데이터를 Sparse Matrix 에서 돌려도 될까요? (올려주신 rating-20m.csv파일과 최신 무비렌즈 영화 평가 데이터 내용이 똑같더라구요.) 강의에선 Sparse Matrix의 출력이 오차율이 나와서 그러는데, 최종적으로 추천 영화를 출력하려면 어떻게 구현하면 될까요?
안녕하세요. 사용자 집단별 추천에서 모델별 RMSE를 계산하는 함수를 돌리면 램이 부족하다며 코랩이 중지됩니다. 주피터를 이용해 다시 돌려보니 y_pred = np.array([model(user, movie) for (user, movie) in id_pairs]) 에서 Unable to allocate 55.9 GiB for an array with shape (25000, 100000, 3) and data type int64 라는 오류가 떴습니다. 데이터 사이즈가 이렇게 크지 않을 것 같은데 어떤 부분을 잘못한걸까요? 아래는 제가 작성한 score 함수입니다. def score(model): # test 데이터의 user_id와 movie_id의 페어를 맞춰서 튜플로 반환 id_pairs = zip(x_test['user_id'], x_test['movie_id']) # 모든 user, movie 페어쌍에 대해서 주어진 model의 예측값을 계산하여 array 형태로 반환 y_pred = np.array([model(user, movie) for (user, movie) in id_pairs]) y_true = np.array(x_test['rating']) return RMSE(y_true, y_pred)
코드 내에서 score(model)안에 model로 best_seller, cf_gender등을 사용하셨는데, best_seller와 cf_gender함수는 user_id와 movie_id를 변수로 가지는데, score함수 안에 사용할 때는 score(best_seller)로 써도 작동되는 이유가 무엇인가요? score(best_seller(user_id, movie_id))와 같이 써야 작동되는것 아닌가요?
안녕하세요. 데이터분석 공부하는 학생입니다. 올려주신 강의 모두 잘 들었습니다. 다만 제가 지금 적용하고자 하는 데이터가 이진데이터인데요. 강의의 코드가 이진데이터에는 맞지 않아 문의드립니다. 이진데이터를 추천시스템에 활용하는 다른 예도 찾아 보았는데요: https://towardsdatascience.com/recommender-systems-item-customer-collaborative-filtering-ff0c8f41ae8a 어차피 여기서도 코사인유사도를 활용하고 있어 거친코딩님의 강의의 예를 활용하고 싶은데 잘 안되네요. 혹시 한 번 봐주실 수 있을까요? 적용 코드: https://drive.google.com/file/d/11qlP4zOAFewSiHxo_T7fp_Ql-WgSpHS3/view?usp=sharing
현황 : BCCD에서 사용하던 코드로 Inference를 하려 했는데 다음과 같은 오류가 발생하고 있습니다 바쁘시겠지만 문의드립니다 ◇ 문의사항 : 해결방안이 있을까요? 코드 import torch from mmdet.apis import multi_gpu_test, single_gpu_test from mmcv.parallel import MMDataParallel, MMDistributedDataParallel model_ckpt = MMDataParallel(model_ckpt, device_ids=[0]) outputs=single_gpu_test(model_ckpt, data_loader, True, "저장폴더", 0.5) --------------------------------------------------------------------------- AssertionError Traceback (most recent call last) Input In [6], in <cell line: 8>() 5 model_ckpt = MMDataParallel(model_ckpt, device_ids=[0]) 6 # single_gpu_test를 활용하므로 samples_per_gpu는 1이 되야함 ----> 8 outputs=single_gpu_test(model_ckpt, data_loader, True, "저장폴더", 0.5) File ~/.local/lib/python3.9/site-packages/mmdet/apis/test.py:38, in single_gpu_test(model, data_loader, show, out_dir, show_score_thr) 36 img_tensor = data['img'][0].data[0] 37 img_metas = data['img_metas'][0].data[0] ---> 38 imgs = tensor2imgs(img_tensor, **img_metas[0]['img_norm_cfg']) 39 assert len(imgs) == len(img_metas) 41 for i, (img, img_meta) in enumerate(zip(imgs, img_metas)): File ~/.local/lib/python3.9/site-packages/mmcv/image/misc.py:34, in tensor2imgs(tensor, mean, std, to_rgb) 32 if torch is None: 33 raise RuntimeError('pytorch is not installed') ---> 34 assert torch.is_tensor(tensor) and tensor.ndim == 4 35 channels = tensor.size(1) 36 assert channels in [1, 3] AssertionError: show_result_pypot 사용 시 오류가 발생하는데 해결방안이 있을까요? 코드 from mmdet.apis import show_result_pyplot import cv2 #brg image 사용 img = cv2.imread("sample 이미지 위치") model.cfg = cfg result = inference_detector(model, img) show_result_pyplot(model, img, result, score_thr=0.3) 결과 /home/namu/.local/lib/python3.9/site-packages/mmdet/datasets/utils.py:66: UserWarning: "ImageToTensor" pipeline is replaced by "DefaultFormatBundle" for batch inference. It is recommended to manually replace it in the test data pipeline in your config file. warnings.warn(
기존에 코드에 나와있는 occupation에 더해 age 변수를 추가하고 싶습니다. 하지만 age embedding layer에 들어갈 input dimension을 len (users[ 'age' ].unique()) 라 설정하고 모델을 fit 시키면 InvalidArgumentError : Graph execution error: 라는 에러가 뜹니다. 이때, age embedding layer의 input dimension을 len(users)라고 설정하면 fit 코드가 정상적으로 진행됩니다. 그 이유와 변수 embedding layer의 input dimesion을 설정할 때 꼭 unique 값의 개수를 넣어야 하는건지, 그리고 그 이유 도 알고 싶습니다.
안녕하세요. 좋은강의 잘 듣고 있습니다. 얼마전에 mmd-to-tensorrt 질문을 올렸었는데요. 사실 해당 라이브러리를 사용해보려 한 목적이 Inference의 속도를 향상시키려는 시도의 일환이었습니다. 혹시 mmdetection을 이용한 mask_rcnn 의 추론 속도를 향상시키는 다른 방안을 알고계신가 싶어 질문 드립니다. mmdetection에 포함된 다른 instance segmentation 검출 로직인 yolact를 사용하면 미세하게 속도의 향상이 있으나 검출 정확성 측면에서 mask rcnn이 더 낫더라구요. 항상 좋은 강의 감사드립니다.
안녕하세요. 선생님의 MMDetection 강의를 보고 여러가지 만들어보고 있는 학생입니다. 다름이 아니고 mask_rcnn에 tensorrt를 적용해보고자 하여 mmd to tensorrt 라는 github를 발견하고 사용해보았습니다. https://github.com/grimoire/mmdetection-to-tensorrt 일단 설치하고 모델 적용을 하는데 기본값으로 모델을 변환하고 추론하면 추론이 되긴 하는데 segm 가 빠진 bbox만 검출이 됩니다. 그리고 파라미터를 수정해서 seg trt_model = mmdet2trt( cfg_path, args.checkpoint, fp16_mode=args.fp16, device=args.device, enable_mask=True, opt_shape_param=opt_shape_param, output_names=["num_detections", "boxes", "scores", "classes", "masks"] ) 요런식으로 만들어 모델을 돌려보면 IndexError: Dimension out of range (expected to be in range of [-1, 0], but got 1)가 가 계속 뜨는데요. 혹시 도움주실수 있을까 하여 작성했습니다. 좋은 강의 감사히 보고있습니다. 감사합니다.
안녕하세요. Transformer에 대해 공부하면서 궁금한 점?이 있어 질문 글을 올리게 되었습니다. Transformer는 기존 seq2seq 구조와 다르게 input이 통째로 들어가서 병렬계산이 가능하다는 장점이 있다고 알고 있었습니다. 하지만 Transformer의 input도 문장의 위치에 따라 Positional Encoding(위치에 따른 sin, cos 값)이 더해지는 형태이기 때문에 일련의 sequence 형태를 가져야 된다 생각했습니다. 위는 제가 만든 그림예시인데, input 문장이 "I am student"라면, "I student am"처럼 순서를 바꿀 경우 positional encoding 값이 위치에 따라 특정 값이 들어가고 기존의 input 값과 다르기 때문에 결과적으로 Transformer의 input도 순서를 가져야만 된다라는 결론에 도달했습니다. 그렇게 된다면 순차적으로 값을 입력하는 기존 RNN 및 LSTM의 seq2seq와 input 측면에서 크게 나아진점이 없어보이는데 이 관점이 맞는걸까요? 제가 생각했던 것을 글로 표현하여 질문을 하다보니, 두서가 없는 점 죄송합니다.